Struts框架_11 表单的重复提交&自定义拦截器

表单的重复提交问题
什么是表单的重复提交
>在不刷新表单页面的前提下:
>多次点击提交按钮,
>已经提交成功,按"回退"之后,再点击"提交按钮".
>在控制器响应页面的形式为转发情况下,若已经提交成功,然后点击"刷新(F5)"
注意:
>若刷新表单页面,再提交表单不算重复提交
>若使用的是redirect的响应类型,已经提交成功后,再点击"刷新",不是表单的重复提交

Struts2解决表单的重复提交问题:
在s:form 中添加s :token子标签
>生成一个隐藏域
>在session添加一个属性值
>隐藏域的值和session 的属性值是一致的。
II.使用Token 或TokenSession 拦截器。
>这两个拦截器均不在默认的拦截器栈中,所以需要手工配置一下
>若使用Token拦截器,则需要配置一个token.valid 的result
>若使用TokenSession拦截器,则不需要配置任何其它的result
III. Token VS TokenSession
>都是解决表单重复提交问题的
>使用token拦截器会转到token. valid这个result
>使用tokenSession拦截器则还会响应那个目标页面,但不会执行tokenSession的后续拦截器,就像什么都没发生过一样!

IV.可以使用s:actionerror标签来显示重复提交的错误消息,
该错误消息可以在国际化资源文件中覆盖。该消息可以在struts-messages. properties文件中找到


4.自定义拦截器
1).具体步骤
I.定义一个拦截器的类
>可以实现Interceptor接口
>继承AbstractInterceptor抽象类

II.在struts.xml 文件配置,把拦截器加入到action中:

III.注意:在自定义的拦截器中可以选择不调用ActionInvocation 的invoke() 方法。那么后续的拦截器和Action方法将不会被调用,
Struts会渲染自定义拦截器intercept 方法返回值对应的result
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值