`
typeUSB
  • 浏览: 12182 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts2框架重复提交的办法

阅读更多
在开发Web工程的过程中经常遇到以下几种情况:表单提交成功后对页面进行了刷新操作;表单提交成功后按浏览器返回,在次对表单进行提交;由服务器响应延迟,客户端多次单击“提交”按钮。上面几个动作都会产生一个结果:相同的数据重复提交。
在实际应用中解决重复提交有很多方法,Struts2框架也给出了解决重复提交的办法。在Struts2中我们可以通过TokenInterceptor或TokenSeessionInterceptor这两个拦截器来处理重复提交,
一、TokenInterceptor
1、编写Action类:
package com.test.tokenInterceptor;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
 @Override
 public String execute() throws Exception{
  return SUCCESS;
 
 }
}
2、配置struts.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>
    <package name="struts2" extends="struts-default">

   <action name="Login" class="com.test.tokenInterceptor.LoginAction">
   <result name="success">/jsp/success.jsp</result> 
   <result name="invalid.token">/wrong.jsp</result> 
   <interceptor-ref name="defaultStack"/>
   <interceptor-ref name="token"/>
   
  </action>
 </package>
 </struts>
3、编写页面文件、包括三个页面:login.jsp,success.jsp,wrong.jsp
------------------------------login.jsp------------------------------------
<%@page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
  <head>
    <title>login</title>
  </head>
  <body>
 
  <center>
   <s:form action="Login">
     <s:token/>
     <s:textfield name="usernaame" label="姓名"/>
     <s:textfield name="password" label="密码"/>
     <s:submit/>
    </s:form>
  </center>
  
  </body>
</html>
------------------------------success.jsp----------------------------------
<%@page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <head>
   
    <title>提交成功</title>
 
  </head>
 
  <body>
     操作成功
   
  </body>
</html>
------------------------------wrong.jsp-----------------------------------
<%@page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
  <head>
   
    <title>登录成功</title>
 
  </head>
 
  <body>
  
    <center>
     <a href="">重复提交了!!!单击返回登录页面</a>
     <s:actionerror/>
    </center>
  
  </body>
</html>
 
二、TokenSeessionInterceptor
     该拦截器实现的原理和Token拦截器相似,不同之处在于对无效令牌信息的处理。
   
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>
 <package name="struts2" extends="struts-default">
 <action name="Login" class="com.test.tokenInterceptor.LoginAction">
   
   <result name="success">/success.jsp</result> 
   <!--配置tokenSession拦截器-->
   <interceptor-ref name="tokenSession"/>

  </action>
 </package>
 </struts>
当程序被发现运行以后,TokenSession 拦截器检测到重复提交操作的时候,总是返回第一次成功提交的页面。
分享到:
评论

相关推荐

    Struts2文件上传下载和表单重复提交问题

    Struts2文件上传下载和表单重复提交问题

    ssh框架 token防刷新防重复提交(自定义) md5加密 验证码 源码B部分

    spring1.2 struts1.2 hibernate 框架 token防刷新防重复提交(自定义) md5加密 验证码 此为第二部分,需要将三个包合在一起解压

    Struts2 in action中文版

    15.3 使用令牌防止表单重复提交 313 15.3.1 使用s:token/表单标签 313 15.3.2 令牌拦截器规则的例外 314 15.4 自动显示等待页面 316 15.5 完成CRUD操作的一个动作 317 15.5.1 CRUD 317 15.5.2 拦截器和接口 318 ...

    Struts2入门教程(全新完整版)

    5. TokenInterceptor防止表单重复提交。 34 6.使用拦截器实现权限验证 35 7.拦截器中的注解 37 8.使用PreResultListener实现回调 39 六、使用标签 40 1.基础表单标签 40 2.单选按钮和复选框: 41 3.三种方式实现下拉...

    struts2课程笔记

    struts2知识点:处理流程,基本配置,与servlet的API解耦,结果类型,通配符和动态方法的调用,类型转换,文件上传,拦截器,表单验证,国际化,OGNL表达式,UI标签,模型驱动,防止表单重复提交,项目练习知识点:...

    java Struts2+hibernate+Spring整合的通讯录

    (5) 使用token拦截器,阻止用户注册页面的重复提交。 (6) 用户登陆成功之后,能够修改自己的密码,要求修改密码的时候,新旧密码在一个文本框输入(用,分割),通过使用自定义类型转换完成新旧密码的拆分工作。

    深入浅出Struts2

    Struts 2 是Java Web 应用首选的MVC 框架。本书对Struts 2 的工作机理进行了透彻的阐述。书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序...

    深入浅出Struts2(附源码)

    跟随作者一道深入Struts 2,聆听大量来之不易的经验之谈,你对Struts 2开发框架的理解和应用水平都将更上一层楼。本书适合Java Web 程序员阅读和参考 第1章 Model 2应用程序 1 1.1 Model 2概览 1 1.2 带servlet...

    SSH笔记-数据验证、上传下载、避免表单重复提交、自定义拦截器

    SSH笔记-数据验证、上传下载、避免表单重复提交、自定义拦截器

    Java全栈工程师-Struts2框架

    本课程讲解Struts2的执行流程和基本原理分析?本课程全面讲解Struts2的数据封装方式和值栈数据的存储和获取?本课程讲解Struts2防止表单重复提交和注解方式的开发

    Struts1.3 备忘笔记

    08 Struts_08DynaValidatorForm : Struts框架的Validator验证框架 09 Struts_09Token : Structs的令牌机制,避免重复提交问题 10 Struts_10SmartUpload : structs的文件上传 11 Struts_11Internationalize : Structs...

    Struts中文手册[文字版][中文]

    1. Struts 框架1 1.1. Struts 压缩包内容.1 1.2. Struts 体系结构1 1.2.1. 模型.2 1.2.2. 视窗.2 1.2.3. 控制器.2 1.3. Struts 框架中的组件.3 1.3.1. Struts配置文件.3 1.4. ActionServlet类6 1.4.1. ActionServlet...

    struts高级实战进阶

    传智播客的struts高级实战进阶 MVC模式的回顾 ...防止表单重复提交 使用复选框的技巧 使用下拉列表框的技巧 文件上传 DispatchAction的应用 Validator框架 Struts请求处理过程的源码分析与digester

    J2EE三大框架_笔记_a

    9-Struts高级部分(1)(解决重复提交、上传组件)笔记 10-Struts高级部分(2)(常用Action、验证框架、动态Form)笔记 J2EE框架_笔记_b: 11-留言管理程序_使用Struts + DAO完成笔记 12-Struts + DAO分页笔记 16-...

    非常好的struts2教程

    MVC模式的回顾 回顾Struts的请求处理时序图 使用超连接的技巧 ...防止表单重复提交 使用复选框的技巧 使用下拉列表框的技巧 文件上传 DispatchAction的应用 Validator框架 Struts请求处理过程的源码分析与digester

    MLDN框架笔记大全

    07 Struts标签 -LOGIC标签 08 Struts标签- HTML标签 09 Struts高级部分(1)(解决重复提交、上传组件) 10 Struts高级部分(2)(常用Action、验证框架、动态Form) 11 留言管理程序_使用Struts + DAO...

    J2EE框架_笔记_b

    9-Struts高级部分(1)(解决重复提交、上传组件)笔记 10-Struts高级部分(2)(常用Action、验证框架、动态Form)笔记 J2EE框架_笔记_b: 11-留言管理程序_使用Struts + DAO完成笔记 12-Struts + DAO分页笔记 16-...

    J2EE框架_笔记_c

    9-Struts高级部分(1)(解决重复提交、上传组件)笔记 10-Struts高级部分(2)(常用Action、验证框架、动态Form)笔记 J2EE框架_笔记_b: 11-留言管理程序_使用Struts + DAO完成笔记 12-Struts + DAO分页笔记 16-...

Global site tag (gtag.js) - Google Analytics