详解springmvc拦截器拦截静态资源

网友投稿 229 2023-06-17


详解springmvc拦截器拦截静态资源

springmvc拦截器interceptors

springmvc拦截器能够对请求的资源路径进行拦截,极大的简化了拦截器的书写。但是,千万千万要注意一点:静态资源的放行。

上代码:

问题来了,在请求jsp页面的时候,你的静态资源的访问仍然会被自定义拦截器拦截,这会导致程序运行的效率大大下降,还会不停的跳转到拦截器的逻辑。主要原因是

会对所有的请求资源进行拦截,虽然静态资源已经排除了,但还是会被拦截到。

如何解决这个bug呢?

主要有三种方式:

1、修改请求的url地址。

如果请求的url地址都是以*.do结尾,那么拦截器中的配置可以变为拦截以do结尾的资源,静态资源自然就不会被拦截到了;

2、在自定义拦截器中对资源进行判断,如果满足需要排除的资源,就进行放行。

/login

/js

/css

/image

/images

在拦截器中设定不拦截的属性:

/**

* 处理登录拦截器

*/

public class LoginInterceptor implements HandlerInterceptor{

public String[] allowUrls;//还没发现可以直接配置不拦截的资源,所以在代码里面来排除

public void setAllowUrls(String[] allowUrls) {

this.allowUrls = allowUrls;

}

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response,

Object handler) throws Exception {

System.out.println(requestUrl);

if(null != allowUrls && allowUrls.length>=1){

for(String url : allowUrls) {

if(requestUrl.contains(url)) {

return true;

}

}

}

3、设置web.xml中的默认拦截器,不拦截静态资源

在springmvc的Dispatcher中配置(一般Web应用服务器默认的Servlet名称是"default",所以这里我们激活Tomcat的defaultServlet来处理静态文件,在web.xml里配置如下代码即可:)

default

/js/*

/css/*

/images/*

/fonts/*


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解Angualr 组件间通信
下一篇:bootstrap中的 form表单属性role="form"的作用详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~