Spring MVC 拦截器配置及使用(包括静态资源的处理)

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

关于静态资源的放行,主要有三种方式:

1、修改请求的url地址。

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


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

<!-- 拦截器配置 --> 
  <mvc:interceptors>  
   <!-- session超时 --> 
   <mvc:interceptor>  
    <mvc:mapping path="/*/*"/>  
    <bean class="com.myTree.interceptor.LoginInterceptor">  
     <property name="allowUrls">  
      <list>  
       <!-- 如果请求中包含以下路径,则不进行拦截 --> 
       <value>/login</value>  
       <value>/js</value>  
       <value>/css</value>  
       <value>/image</value>  
       <value>/images</value>  
      </list>  
     </property>  
    </bean>  
   </mvc:interceptor>  

这种方式我试了下,启动时报没有alowUrl属性。这个可能需要另外定义还是怎么弄?有待考证

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

 //创建session  
        HttpSession session =request.getSession();  
          
        //无需登录,允许访问的地址  
        String[] allowUrls =new String[]{"/welcome","/userlogin","/js","/css","/images","/image"};  
              
        //获取请求地址  
        String url =request.getRequestURL().toString();  
          
        //获得session中的用户  
        String userName = (String)session.getAttribute("USER_NAME");  
      
          
        for (String strUrl : allowUrls) {  
            if(url.contains(strUrl))  
            {  
                return true;  
            }  
        }  
          
        if(StringUtils.isEmpty(userName))  
        {  
            throw new UnLoginException("您尚未登录!");     
                                  
        }  


    试过了,是可以的。


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

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


<!--该servlet为tomcat,jetty等容器提供,将静态资源映射从/改为/static/目录,如原来访问http://localhost/foo.css,现在http://localhost/static/foo.css --> 
<!-- 不拦截静态文件 --> 
< servlet-mapping
   < servlet-name >default</ servlet-name
   < url-pattern >/js/*</ url-pattern
   < url-pattern >/css/*</ url-pattern
   < url-pattern >/images/*</ url-pattern
   < url-pattern >/fonts/*</ url-pattern
</ servlet-mapping >

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值