SpringMVC設置默認請求首頁

做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請求了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章