struts2防页面刷新重复提交

  

struts2防页面刷新重复提交

做web开发时.经常会出现系统缓慢导致用户多次重复提交.或被恶意重复提交.有很多解决办法:比如:点了提交按扭后就让按扭 disable=flase或其他相关处理.但struts2中处理起来更方便.

主要是需要做以下几个步骤:

1、jsp中增加 ;

2、struts2配置文件中.action中增加几行代码:



/token.jsp
     //如果是重复提交则跳转至token.jsp页面

另外注意点的是:在提交成功后的 也设置type=redirect

在页面加载时,产生一个GUID(Globally Unique Identifier,全局唯一标识符)值的隐藏输入框如:


清 单6 的HTML输出同时,将GUID放到会话(session)中;在执行 action之前,“token”拦截器将会话token与请求token比较,如果两者相同,则将会话中的token删除并往下执行,否则向 actionErrors加入错误信息。如此一来,如果用户通过某种手段提交了两次相同的请求,两个token就会不同。

具体实现

首先看一下Action的代码:

package tutorial;

import com.opensymphony.xwork2.ActionSupport;

public class CoolTagAction extends ActionSupport
{    
private static final long serialVersionUID = 6820659617470261780L;

private String message;

   public String getMessage()
{
return message;
}


   public void setMessage(String message)
{
this.message = message;
}


@Override
   public String execute()
{
System.out.println(“Executing action, your message is “ + message);
return SUCCESS;
}
   
}

清 单7 src/tutorial/CoolTagAction.java以上代码一目了然,再看看JSP的写法:

JSP也很简单,就是加入标志。

%@ page language=”java” contentType=”text/html; charset=utf-8″ pageEncoding=”utf-8″ %>
<%@ taglib prefix=s uri=/struts-tags %>


Struts 2 Cool Tags - <s:token/ >


   

struts2防重复提交









清单8 WebContent/token.jsp接下来是Actoin配置的XML片段:

“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
“http://struts.apache.org/dtds/struts-2.0.dtd”>




/token.jsp                        
/token.jsp


/{1}.jsp


清单9 src/struts.xml以上XML片段值注意的是加入了“token”拦截器和“invalid.token”结果, 因为“token”拦截器在会话token与请求token不一致时,将会直接返回“invalid.token”结果

你可能感兴趣的:(struts2,struts,token,redirect,action,string,jsp)