1.springMVC攔截器實現方式有兩種
一種是實現HandlerInterceptor接口,還有一種是繼承HandlerInterceptorAdapter,詳細操作參考鏈接如下
但在實際的使用過程中卻會遇到很多問題,平時練習我們只使用java類進行後臺測試,但在開發過程中涉及到很多js、css以及圖片等靜態資源問題。
2.對於靜態資源處理,靜態資源不應該被攔截,參考鏈接如下
以上參考鏈接比較正確,在其他的參考鏈接中我看到使用<mvc:default-servlet-handler/>
使用這種方式需要在web.xml文件中配置default所含有的靜態資源後綴,不然達不到放行效果
<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>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</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>*.TTF</url-pattern>
</servlet-mapping>
使用以上代碼後再看效果
3.第三個問題就是使用frame框架後的攔截效果,攔截器配置完畢後給大家放圖
這是個什麼鬼,當時的心情和遇到鬼一樣,關鍵是你去百度搜索答案你壓根不知道怎麼描述,而且你還找不到你想要的答案,通過點擊鏈接發現了其實攔截器是起了作用,但攔截器只會攔截需要訪問後臺的請求,也就是說如果你使用,類似於admin/index.jsp其他頁面初始化只有部分頁面需要從後臺拿數據時攔截器只會攔截那一部分,最後參考別人的項目一直找不到攔截器的作用地方,他的spring-mvc的攔截器是這樣配置的
當時我就一臉懵逼,這啥玩意啊,都註釋了怎麼實現攔截的,終於經過思考和測試看到了攔截的精髓
他在index.jsp界面加入了這樣一行代碼
<c:if test="${sessionScope.Admin == null }">
<%response.sendRedirect("../index.jsp"); %>
</c:if>
原來他是做了一個假的攔截器,也就是說他只能對主頁用戶是否登入做了過濾,當時只要用戶訪問了主頁或得到了操作其他數據的後臺方法,比如說非法者知道了刪除客戶的方法是delete(id)直接在地址欄輸入就可以實現刪除用戶功能,所以說這種攔截方式只是表面攔截,但是卻解決了我們之前遇到的那個問題,只攔截訪問數據庫後臺的那一部分頁面。