自定义jsp标签来防止表单的重复提交

  在之前的工作和学习中总是会遇到表单重复提交的问题,使用了网上的各种解决方法 js,禁用提交按钮,阻止用户后退等操作,但是效果总有一些欠缺。在这里参考了某位老师的意见,决定使用session和自定义表单的形式进行解决。

1、实现思路:

   在页面存放一个含有唯一值key value对将其存放在session(这里采用jsp自定义标签的方式进行实现,避免在jsp页面中写很多的java脚本 导致页面混乱)

   在提交表单时,后台的处理逻辑获取request中的session 并去取出其中指定的值,第一次获取对应的值后就将其对应的值设置为null,则用户无论以(刷新,后退,重新)等方式进行再次提交。则第二次或者多次提交到后台获取的数据为null时,则判断为重复提交。

2、jsp自定义标签的原理

3、编写jsp的自定义标签

    继承SimplTagSupport类,并重新覆盖其中的doTag对象,在其中获取session,并设置唯一的key-value对

 <code>

  /**
 * 防止表单重复提交的jsp标签类
 * @author xieqx
 *
 */
public class TokenTag extends SimpleTagSupport{

//在调用方法之前,该类对象已经被注入了PageContext(可以从其中获取session) 
//该对象由setJspContext()方法调用 返回JspContext (其实返回的真实类型为PageContext 
//JspContext 其实为PageContext的父类)

@Override
public void doTag() throws JspException, IOException {
PageContext pageContext = (PageContext)getJspContext();  //获取jsp的九大域对象
HttpSession session = pageContext.getSession();
session.setAttribute("token", UUID.randomUUID().toString());
}
}  

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值