spring mvc中url-pattern的寫法(解決靜態資源不能訪問的問題)

1.設置url-pattern爲*.do(最爲常見的方式)


只要你的請求url中包含配置的url-pattern,該url就可以到達DispatcherServlet。當然這裏業內通常都將url-pattern配置爲*.do的方式,所以你最好也這麼去做。

 

2.設置url-pattern爲/*(這種方式是很不好)


 如果將url-pattern設置爲/*之後,web項目中的jsp都不能訪問了會報出404的錯誤,這是因爲DispatcherServlet會將向JSP頁面的跳轉請求也當作是一個普通的 Controller 請求,會對其進行處理,而此時是找不到與其相應的controller。

 

3.設置url-pattern爲/(用的越來越多)


 

如果將url-pattern設置爲/之後,只要是在web.xml文件中找不到匹配的URL,它們的訪問請求都將交給DispatcherServlet處理,靜態資源:css文件,js文件,圖片也會被攔截並交給DispatcherServlet處理。該配置方式不會攔截.jsp文件和.jspx文件,因爲這個在tomcat中的conf目錄裏面的web.xml文件中已經添加的相應的處理方式了,他會交給org.apache.jasper.servlet.JspServlet來處理。即我們可以正常訪問系統中的jsp文件。

解決靜態資源不能訪問的問題,解決方式有三種:

  • 使用defaultServlet

  我們可以通過使用這個DefaultServlet來處理靜態資源,在你的系統中的web.xml文件中添加下面配置,要添加在DispatcherServlet的前面,這樣系統就會將帶有下面後綴名的請求交給defaultservlet來處理:

 

     <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>*.css</url-pattern>
    </servlet-mapping>
  • 使用mvc:default-servlet-handler
<!--在springmvc.xml文件中添加下面配置即可,該方式會對所有的請求進行處理,然後交由相應的servlet,這種方式其實最終也是由DefaultServlet來處理:-->
<mvc:default-servlet-handler/> 
  • 使用mvc:resources

  在spring mvc中提供了mvc:resources標籤用來解決靜態資源無法訪問的問題,只需要在springmvc.xml的配置文件中添加下面內容即可,這樣會交給spring mvc的ResourceHttpRequestHandler類來處理:

<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/js/**" location="/js/" />

  其中:

  mapping 表示對該資源的請求。注意,後面是兩個星號**。

  location 表示靜態資源所在目錄,在我的項目中就在webapp下創建一個images文件夾,將所有的圖片放到這個文件夾下。

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