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)直接在地址栏输入就可以实现删除用户功能,所以说这种拦截方式只是表面拦截,但是却解决了我们之前遇到的那个问题,只拦截访问数据库后台的那一部分页面。