做web項目的時候,上線部署後都是通過域名直接訪問的,也就是訪問路徑沒有上下文,原來設置web項目的默認首頁的時候在web.xml中可以直接指定靜態HTML頁面和jsp頁面,
代碼如下
<!-- 默認首頁定義 -->
<welcome-file-list>
<welcome-file>/index.html</welcome-file>
</welcome-file-list>
但是,welcome-file-list一般情況下只能使用靜態網頁,如果非要把他配置成SpringMVC的控制器URL就會報錯。所以又會有另一種實現方式就是在index.html中用js實現跳轉,在html頁面中直接訪問動態URL,從而達到直接跳轉到動態默認首頁的目的,雖然這種方法能實現,但總是不太友好,
最終,還發現了另外一種實現方式
直接貼上web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>unify-heads-web</display-name>
<!-- 默認首頁定義 -->
<welcome-file-list>
<welcome-file>home</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/home</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.swf</url-pattern>
</servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/error.html</location>
</error-page>
</web-app>
控制器中方法代碼如下
@RequestMapping("/home")
public String home(ModelMap result){
FirstCategory cat = new FirstCategory();
cat.setName("母嬰用品");
result.put("cat",cat);
logger.info("handle succss!");
return "home/home";
}
welcome-file-list可以轉向到servlet,但是!!!前提是servlet不能有擴展名,否則就當成靜態文件處理了,那麼這樣的話就嘗試了定義個沒有擴展名的SpringMVC控制器URL。
注意:welcome-file-list配置的是沒有
/ 的 home,下面爲SpringMVC控制器單獨註冊了一個 /home 的URL(這個有 “/”)。
然後就可以直接通過域名訪問home請求了