springmvc.xml 中 設置/和/*區別

 <filter>
    <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <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:spring/springmvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

<url-pattern>/</url-pattern>

  會匹配到/login這樣的路徑型的url,不會匹配到模式爲*.jsp這樣的後綴型url。故經過視圖解析器後返回jsp視圖時不會再進入DispatcherServlet。說到爲什麼JSP頁面的請求並不會命中這個Servlet,那是因爲servlet容器內建的JSP Servlet將會被調用,而這個容器內建的JSP Servlet已經默認地映射在了*.jsp上。但還是能攔截到靜態資源,如*.js,*.css。


<url-pattern>/*</url-pattern>

  會匹配所有的url:路徑型的和後綴型的url(包括/login,*.jsp,*.js和*.html等)。故經過視圖解析器後返回jsp視圖時會再進入DispatcherServlet,導致找不到對應的controller所以報404錯。

No mapping found for HTTP request with URI [/Shiro-Spring/WEB-INF/jsp/login.jsp] in DispatcherServlet with name ‘springmvc’


<url-pattern></url-pattern>

  這種空串的形式。當上下文的根被請求的時候,它將被調用,進入DispatcherServlet,與<welcome-file>的方式是不同的。這種形式在當任何子目錄被請求的時候不會被調用。當你期望一個“首頁servlet”的時候,這種URL模式就是適合你的。

發佈了39 篇原創文章 · 獲贊 14 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章