1. 程式人生 > >spring MVC設定不攔截靜態資源

spring MVC設定不攔截靜態資源

問題產生:

因為我們在web.xml中寫了 攔截所有請求,當然包括了靜態資源,所以頁面需要引用css或js的話,該請求也會被攔截,例如:

在style.css中寫一個簡單樣式,加個背景顏色

body{
    background-color: antiquewhite;
}

然後在index.jsp頁面引用該樣式:<link rel="stylesheet" href="/css/style.css">

再一次執行專案,會看到並沒有樣式,F12可以看到在呼叫style.css的時候報了404錯誤,這是因為被DispatcherServlet攔截了

解決辦法:

方案一:攔截器中增加針對靜態資源不進行過濾(涉及spring-mvc.xml)
注意:需引入mvc名稱空間
 <!-- 添加註解驅動 -->
<mvc:annotation-driven/>
<!--
    通過mvc:resources設定靜態資源,這樣servlet就會處理這些靜態資源,而不通過控制器
    設定不過濾內容,比如:css,js,img 等資原始檔
    location指的是本地的真是路徑,mapping指的是對映到的虛擬路徑。
-->
<mvc:resources mapping="/css/**" location="/css/"/>

方案二:使用預設的servlet處理靜態資源(涉及spring-mvc.xml,web.xml)

在spring-mvc.xml中新增:
<!--啟用預設Servlet-->
<mvc:default-servlet-handler/>
在web.xml中新增:
<!--增加對靜態資源的處理,當前的設定必須在Spring的Dispatcher的前面-->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
    <url-pattern>/css/*</url-pattern>
  </servlet-mapping>

方案三:修改spring的全域性攔截設定為*.do的攔截(涉及web.xml)

 <!-- 攔截所有請求 -->
  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <!--<url-pattern>/</url-pattern>-->
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

這時,我們瀏覽器的所有訪問路徑就要變成:http://localhost:8080/xxx/xxx.do


比較總結:    

第一種方案配置比較臃腫,多個攔截器時增加檔案行數,不推薦使用
第二種方案使用預設的Servlet進行資原始檔的訪問,Spring攔截所有請求,然後再將資原始檔交由預設的Sevlet進行處理,效能上少有損耗
第三種方案Spring只是處理以'.do'結尾的訪問,效能上更加高效,但是再訪問路徑上必須都以'.do'結尾,URL不太文雅
綜上所述,推薦使用第二和第三中方案

相關推薦

spring MVC設定攔截靜態資源

問題產生: 因為我們在web.xml中寫了 攔截所有請求,當然包括了靜態資源,所以頁面需要引用css或js的話,該請求也會被攔截,例如: 在style.css中寫一個簡單樣式,加個背景顏色 body{ background-color: antiquewhite;

<mvc:default-servlet-handler/>攔截靜態資源的前提條件

log targe handler fault tail itl blog default http http://blog.csdn.net/s740556472/article/details/71023388<mvc:default-servlet-handle

Spring MVC配置攔截HTML等資源請求

問題 <servlet-mapping> <servlet-name>dispatcher</servlet-name> <!--會攔截所有的請求--> <url-pattern>/</url

spring boot設定多個靜態資源目錄

@Configuration public class AcbplatformConfigurer extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHa

spring專案載入出來靜態資源

方法1: 攔截器中增加針對靜態資源不進行過濾(涉及spring-mvc.xml) <!-- 添加註解驅動 --> <mvc:annotation-driven/> <!-- 通過mvc:resources設定靜態資源,這樣servlet就會處理這些靜態資源,而不通過控

SpringMVC 攔截攔截靜態資源的三種處理方式方法

SpringMVC提供<mvc:resources>來設定靜態資源,但是增加該設定如果採用萬用字元的方式增加攔截器的話仍然會被攔截器攔截,可採用如下方案進行解決: 方案一、攔截器中增加針對靜態資源不進行過濾(涉及spring-mvc.xml) <mvc:resources locati

SpringMVC配置攔截靜態資源

使用SpringMVC框架的時候,有些檔案例如圖片,CSS等不需要攔截,我們可以使用這兩種方法: 1.  使用springmvc標籤配置靜態檔案的訪問,允許DispatcherServlet不攔截靜態資源 2. 在專案的web.xml中配置不攔截 Tomcat,

spring-boot 讀取靜態資源

作為一名front end, 在使用spring boot 對映靜態資源的時候, 發現無論怎麼寫registry.addResourceHandler("/**").addResourceLocations("file:/home/ubuntu/web/");registry

菜鳥之路——Spring MVC(八)靜態資源

  一、前言    在SpringMVC中常用的就是Controller與View。但是我們常常會需要訪問靜態資源,如html,js,css,image等。如果將DispatcherServlet請求對映配置為”/”,則Spring MVC將捕獲Web容器所有的請求,包括靜

spring mvc定義登入攔截器(登入讓訪問相關資源),為什麼要放權/login.do(就是攔截/login.do)?

spring.xml攔截器配置如下: <mvc:interceptor> <mvc:mapping path="/**" /><mvc:exclude-mapping path="/login.do" /><bean class="

spring項目加載出來靜態資源

cat col 控制 靜態資源 web servlet style 找不到 IV 方法1: 攔截器中增加針對靜態資源不進行過濾(涉及spring-mvc.xml) <!-- 添加註解驅動 --> <mvc:annotation-driven/>

Spring mvc能引入js等靜態檔案問題的解決方案

No mapping found for HTTP request with URI [/.../script/jquery-3.1.0.min.js] in DispatcherServlet with name 'springDispatcherServlet' 分析一

關於Struts訪問靜態資源的問題

static 包名 無法 過多 stat webroot ebr root 靜態 今天重新配置了Struts的項目進行開發,但是項目靜態資源一直訪問不到。 將一些靜態資源放在WebRoot下的static包下面便於管理。 一開始以為采用攔截.do,只攔截do後綴的請求,解決

Spring mvc登錄攔截

gin tor 要求 session row 請求轉發 pin dispatch framework 自己實現的第一個Spring mvc登錄攔截器 題目要求:拒絕未登錄用戶進入系統,只要發現用戶未登錄,則將用戶請求轉發到/login.do要求用戶登錄 實現步驟: 1.在s

SpringMVC攔截靜態資源的處理辦法

gmv css 無法 ring 攔截 配置 無法加載 app htm SpringMVC攔截靜態資源導致 JS CSS 無法加載 可以在配置文件中加入以下代碼 <mvc:resources location="/statices/" mapping="/

Spring MVC筆記(四) 訪問靜態頁面

inpu web-inf bean ... 逗號 beans efi back 發送 本例通過<mvc:resources>標簽訪問一個靜態或動態頁面。 首先還是創建一個web工程,並引入相關jar包: 創建控制器類,WebController.java

Spring-Boot整合freemarker引入靜態資源css、js等(轉)

mark pan 創建 line path main 實現 content -m 一、概述springboot 默認靜態資源訪問的路徑為:/static 或 /public 或 /resources 或 /META-INF/resources 這樣的地址都必須定義在src/

spring mvc 能過攔截器記錄請求數據和響應數據

style gpo exec point ret nature request 響應 處理 spring mvc 能過攔截器記錄請求數據記錄有很多種方式,主要有以下三種: 1:過濾器 2:HandlerInterceptor攔截器 3:Aspect接口控制器 但是就我個人所

springmvc加載靜態資源js

png springmvc bubuko img 文件 ima pri .com alt 遇到這個問題 百度了下 試了大神們說的配置,還是不好使。 結果發現是自己文件放錯了位置,囧~ 像上面這樣就沒有問題,原來是因為之前我將js這個文件夾放在了WEB-INF裏面,導致無法訪

Spring MVC獲取到post提交的multipart/form-data格式的資料

我們在寫介面時,經常會用postman測試介面。前段時間我寫介面時,發現post的form-data提交資料,後端竟然接收不到請求引數,而使用post的x-www-form-urlencoded方式提交資料,後端可以接收到引數。為什麼? postman的form-data是指mult