1.说明

系统拦截器的应用。

表单重复提交:当使用请求转化进行跳转的时候,存在着表单重复提交的问题。

2.在表单中加入s:token

如果页面加入了struts2的标签,页面的请求必须进入struts2的核心控制器。

s:token会被解析为隐藏域,隐藏域中的值是服务器产生的一个token,当提交表单的时候,会将token的值提交到服务器,struts2将客户端提交的token和session中的token比较:

如果匹配,正常提交,执行处理请求的方法

如果不匹配,返回值指定的result,result的名字为invalid.token

 <form action="userAction_userReg.action" method="post">
<s:token></s:token>
<div>
<input name="uname" type="text" />
</div>
<div>
<input name="upwd" type="text" />
</div>
<div>
<input type="submit" />
</div>
</form>

3. 定义Action

 public class UserAction extends ActionSupport
{
// org.apache.struts2.interceptor.TokenInterceptor
private String uname;
private String upwd;
public String getUname()
{
return uname;
}
public void setUname(String uname)
{
this.uname = uname;
}
public String getUpwd()
{
return upwd;
}
public void setUpwd(String upwd)
{
this.upwd = upwd;
}
public String userReg()
{
System.out.println(uname + "\t" + upwd);
return Action.SUCCESS;
}
}

4. 配置Action

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="user" namespace="/" extends="struts-default">
<interceptors>
<!-- 自定义拦截器栈 -->
<interceptor-stack name="mystack">
<interceptor-ref name="token"></interceptor-ref>
<!-- 引入系统默认的拦截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<action name="userAction_*" class="com.guangsoft.action.UserAction"
method="{1}">
<!-- 引用拦截器栈 -->
<interceptor-ref name="mystack"></interceptor-ref>
<result name="invalid.token">/index.jsp</result>
<result>/show.jsp</result>
</action>
</package>
</struts>

TokenSession:自己测试,不需要配置<result name="invalid.token">/index.jsp</result>

Invalid.token,默认在哪里刷新,停留在哪里。

Struts2防止表单重复提交的更多相关文章

  1. 关于struts2防止表单重复提交

    struts2防表单重复提交有两种方式. 其一是action的重定向,跳转时设置type为从一个action跳转到另一个action或者另一个页面, 使用户提交后,所停留的位置,不是当前处理数据的Ac ...

  2. 【转】Struts2解决表单重复提交问题

    用户重复提交表单在某些场合将会造成非常严重的后果.例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消费了多次.因此,重复提 ...

  3. Struts2 处理表单重复提交

    * 在表单页面中增加一个隐藏域:<s:token></s:token>(需要在表单内)        * 创建一个struts.xml的配置文件,具体配置如下:         ...

  4. Struts2基础学习(八)—Struts2防止表单重复提交

    一.原因      用户重复提交表单在某些场合将会造成非常严重的后果.例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太 慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消 ...

  5. struts2防止表单重复提交的解决方案

    一.造成重复提交主要的两个原因:    在平时的开发过程中,经常可以遇到表单重复提交的问题,如做一个注册页面,如果表单重复提交,那么一个用户就会注册多次,重复提交主要由于两种原因. 1. 一是,服务器 ...

  6. struts2 防止表单重复提交--令牌机制

    jsp: action: 配置文件:

  7. 12、Struts2表单重复提交

    什么是表单重复提交 表单的重复提交: 若刷新表单页面, 再提交表单不算重复提交. 在不刷新表单页面的前提下: 多次点击提交按钮 已经提交成功, 按 "回退" 之后, 再点击 &qu ...

  8. Struts2第十三篇【防止表单重复提交】

    回顾防止表单重复提交 当我们学习Session的时候已经通过Session来编写了一个防止表单重复提交的小程序了,我们来回顾一下我们当时是怎么做的: 在Servlet上生成独一无二的token,保存在 ...

  9. [原创]java WEB学习笔记73:Struts2 学习之路-- strut2中防止表单重复提交

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

随机推荐

  1. 一张图告诉你,只会JavaScript还不够!

    会了JavaScript语法,你就真的会了JavaScript吗,来看这张图!是超实用的JavaScript代码段一书的导览!熊孩子们,赶紧学习去吧!

  2. H5项目常见问题汇总及解决方案

    H5项目常见问题汇总及解决方案 H5   2015-12-06 10:15:33 发布 您的评价:       4.5   收藏     4收藏 H5项目常见问题及注意事项 Meta基础知识: H5页 ...

  3. js分页--存储数据并进行分页

    //分页方法 var page = function(){ this.v = { o:null,//ul父级层 home:null, previous:null, next:null, last:nu ...

  4. 【转】关于URL编码/javascript/js url 编码/url的三个js编码函数

    来源:http://www.cnblogs.com/huzi007/p/4174519.html 关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),e ...

  5. Support for Xpm library: no问题

    编译gd,出现问题 Support for Xpm library:          no 怎么解决? 解决办法就是去下载libXpm库安装: yum -y install libXpm-dev 这 ...

  6. String、StringBuffer、StringBuilder的不同使用场景

    String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能 ...

  7. Java 7 Concurrency Cookbook 翻译 第一章 线程管理之三

    五.睡眠和唤醒一个线程 有时,你会想要在一段特定的时间后再去中断线程的运行.举个例子,程序中的一个线程每一分钟检查一次传感器的状态,剩余的时间,线程应该处于空闲的状态.在这段空闲时间里,线程不会使用计 ...

  8. HDU 4941 Magical Forest(map映射+二分查找)杭电多校训练赛第七场1007

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 解题报告:给你一个n*m的矩阵,矩阵的一些方格中有水果,每个水果有一个能量值,现在有三种操作,第 ...

  9. C++ stringstream

    C++ 引入了ostringstream.istringstream.stringstream这三个类,这三个类包含在sstream.h头文件中.三个类中 1)istringstream类用于执行C+ ...

  10. OpenCV成长之路(8):直线、轮廓的提取与描述

    基于内容的图像分析的重点是提取出图像中具有代表性的特征,而线条.轮廓.块往往是最能体现特征的几个元素,这篇文章就针对于这几个重要的图像特征,研究它们在OpenCV中的用法,以及做一些简单的基础应用. ...