1. 程式人生 > >spring mvc 中把jsp檔案放在WEB-INF目錄下

spring mvc 中把jsp檔案放在WEB-INF目錄下

目的

為了保證系統的安全性,web應用的內容結構中,把所有的靜態內容放在web-content目錄下。把所有的動態內容(*.jsp)放在WEB-INF目錄下的/views/目錄下

1.部署過程

a .在web.xml中配置引入sping-mvc的配置
<servlet>
   <servlet-name>SpringMVC</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <init-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>classpath:META-INF/spring-mvc.xml</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
   <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
   <servlet-name>SpringMVC</servlet-name>
   <url-pattern>/</url-pattern>
</servlet-mapping>

上述配置,就是引用spring-mvc的配置

b.spring-mvc中的配置,定義跳轉的檔案的前後綴 ,檢視模式配置
<!-- 定義跳轉的檔案的前後綴 ,檢視模式配置 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="prefix">
       <value>/WEB-INF/views/</value>
   </property>
   <property name="suffix">
       <value>.jsp</value>
   </property>
</bean>
 <!-- spring mvc 能夠訪問靜態內容 begin -->
<mvc:resources location="/js/" mapping="/js/**" />
<mvc:resources location="/css/" mapping="/css/**" />
<mvc:resources location="/imgs/" mapping="/imgs/**" />
<mvc:resources location="/html/" mapping="/html/**" />
<!-- spring mvc 能夠訪問靜態內容 end -->

這樣,所有的jsp都可以放入/WEB-INF/views/目錄下

2.注意的問題

  • 不同於jsp放在web-content目錄下的情況。放在/WEB-INF/views/目錄下的jsp是不能通過瀏覽器的url直接訪問的。只能通過mvc的controller進行modelAndView的跳轉。
@RequestMapping(value = "/show_login", method = RequestMethod.GET)
public ModelAndView showLoginPage() {
   if (logger.isDebugEnabled()) {
       logger.debug("showLoginPage() - start"); //$NON-NLS-1$
   }

   ModelAndView mv = new ModelAndView();
   mv.setViewName("/user/login");

   if (logger.isDebugEnabled()) {
       logger.debug("showLoginPage() - end"); //$NON-NLS-1$
   }
   return mv;
}