Struts2基础之十三:Struts2拦截器

本文介绍了Struts2框架中的拦截器概念,并通过实例展示了如何使用默认的Exception拦截器进行异常集中处理,以及如何调用默认的token拦截器防止表单重复提交。


简单学了一下,感觉struts2的拦截器interceptor和servlet的过滤器Filter是一个意思。在数据流中都要经过拦截器或过滤器,经过的同时对数据加工,之后再送往下一个拦截器,直到再没有拦截器了,就算加工完成送往目的地;数据返回时再逆向过一遍所有的拦截器,回到Jsp中。


一:用默认的Exception的拦截器,集中处理异常

<package>标签中配置:

        <!-- 统一异常处理:global-results要在global-exception-mappings前边 -->
        <global-results>
            <result name="error01">/error.jsp</result>
        </global-results>
        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error01"/>
        </global-exception-mappings>

因为<package>默认都继承于extends="struts-default" ,"struts-default"在引入的JAR包中,默认已经配了n多拦截器。Exception就是其中一个。

自定义action中,如果重写execute()方法时后边有throws Exception,异常就会被此拦截器拦截



二:调用默认的token拦截器

配置俩action,第一个负责用表单接收参数,第二个主要是在默认拦截器都执行完之后,执行自己配置的拦截器

        <action name="putin" class="com.rt.struts2.actionDemo.putinAction">
           <result>/login_intercepter.jsp</result>
        </action> 
    
    
        <action name="intercepter" class="com.rt.struts2.actionDemo.UserAction">
           <result>/error.jsp</result>
           
           <interceptor-ref name="defaultStack" />
		   <interceptor-ref name="token" /><!-- 在默认拦截器都放过之后,进入自己配置的token拦截器 -->
        </action> 
    </package>


提交表单(需要token标签)

<form action="intercepter/intercepter!add" method="post">    
  
        <td><input type="text" name="user"></td>    

        <td><input type="password" name="password"></td>    

        <input type="submit" value="提交">    
        <input type="reset" value="重置">    
   <s:token/> <!-- 表单中需要token标签 -->
</form>   



这样如果前台重复提交表单(token值一样), 后台就会判断出来此表单已提交(result invalid.token),不会再执行一次了

除非前台刷新一次(token值会变化),再次提交。











评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值