使用struts2自带拦截器防止页面刷…
2017-09-21 16:11
387 查看
方法1:
第一步:在添加或编辑页面的form下面加入标签<s:token></s:token>
第二步:在struts2配置文件的添加或编辑方法中加入
<interceptor-ref
name="token"></interceptor-ref>
<result name="invalid.token"
type="redirectAction">jumpaddorder</result>
注意:其中jumpaddorder是重复提交之后你想要访问的方法名,可以改成你需要的。
此拦截器要放在默认拦截器下面
方法2:
一、把Token .java复制到tools包下
package tools;
import java.util.ArrayList;
import javax.servlet.http.HttpSession;
public class Token {
private static final String TOKEN_LIST_NAME = "tokenList";
public static final String TOKEN_STRING_NAME = "token";
private static ArrayList getTokenList(HttpSession session) {
Object obj = session.getAttribute(TOKEN_LIST_NAME);
if (obj != null) {
return (ArrayList) obj;
} else {
ArrayList tokenList = new ArrayList();
session.setAttribute(TOKEN_LIST_NAME, tokenList);
return tokenList;
}
}
private static void saveTokenString(String tokenStr, HttpSession session) {
ArrayList tokenList = getTokenList(session);
tokenList.add(tokenStr);
session.setAttribute(TOKEN_LIST_NAME, tokenList);
}
private static String generateTokenString(){
return new Long(System.currentTimeMillis()).toString();
}
public static String getTokenString(HttpSession session) {
String tokenStr = generateTokenString();
saveTokenString(tokenStr, session);
return tokenStr;
}
public static boolean isTokenStringValid(String tokenStr, HttpSession session) {
boolean valid = false;
if(session != null){
ArrayList tokenList = getTokenList(session);
if (tokenList.contains(tokenStr)) {
valid = true;
tokenList.remove(tokenStr);
}
}
return valid;
}
}
二、在添加页面
头部加入<%@ page import="tools.Token" %>
表单内加入<input type="hidden" name="<%=Token.TOKEN_STRING_NAME %>" value="<%=Token.getTokenString(session) %>" />
三、在相应的方法中:
HttpServletRequest request = ServletActionContext.getRequest();
if(Token.isTokenStringValid(request.getParameter(Token.TOKEN_STRING_NAME), request.getSession())){
//进行正常业务流程
}else{
//进行防重复提交处理流程
}
OK!祝君好运!
转载请注明出处:http://blog.sina.com.cn/xilexu
第一步:在添加或编辑页面的form下面加入标签<s:token></s:token>
第二步:在struts2配置文件的添加或编辑方法中加入
<interceptor-ref
name="token"></interceptor-ref>
<result name="invalid.token"
type="redirectAction">jumpaddorder</result>
注意:其中jumpaddorder是重复提交之后你想要访问的方法名,可以改成你需要的。
此拦截器要放在默认拦截器下面
方法2:
一、把Token .java复制到tools包下
package tools;
import java.util.ArrayList;
import javax.servlet.http.HttpSession;
public class Token {
private static final String TOKEN_LIST_NAME = "tokenList";
public static final String TOKEN_STRING_NAME = "token";
private static ArrayList getTokenList(HttpSession session) {
Object obj = session.getAttribute(TOKEN_LIST_NAME);
if (obj != null) {
return (ArrayList) obj;
} else {
ArrayList tokenList = new ArrayList();
session.setAttribute(TOKEN_LIST_NAME, tokenList);
return tokenList;
}
}
private static void saveTokenString(String tokenStr, HttpSession session) {
ArrayList tokenList = getTokenList(session);
tokenList.add(tokenStr);
session.setAttribute(TOKEN_LIST_NAME, tokenList);
}
private static String generateTokenString(){
return new Long(System.currentTimeMillis()).toString();
}
public static String getTokenString(HttpSession session) {
String tokenStr = generateTokenString();
saveTokenString(tokenStr, session);
return tokenStr;
}
public static boolean isTokenStringValid(String tokenStr, HttpSession session) {
boolean valid = false;
if(session != null){
ArrayList tokenList = getTokenList(session);
if (tokenList.contains(tokenStr)) {
valid = true;
tokenList.remove(tokenStr);
}
}
return valid;
}
}
二、在添加页面
头部加入<%@ page import="tools.Token" %>
表单内加入<input type="hidden" name="<%=Token.TOKEN_STRING_NAME %>" value="<%=Token.getTokenString(session) %>" />
三、在相应的方法中:
HttpServletRequest request = ServletActionContext.getRequest();
if(Token.isTokenStringValid(request.getParameter(Token.TOKEN_STRING_NAME), request.getSession())){
//进行正常业务流程
}else{
//进行防重复提交处理流程
}
OK!祝君好运!
转载请注明出处:http://blog.sina.com.cn/xilexu
相关文章推荐
- 在Struts2下使用[拦截器]配合[session监听器]实现在线会员统计与防止重复登录
- struts2拦截器使用(用户session失效后的统一页面指向)
- 在Struts2下使用[拦截器]配合[session监听器]实现在线会员统计与防止重复登录
- struts2拦截器使用(用户session失效后的统一页面指向)
- 使用struts2拦截器实现防止表单数据重复提交
- 防止表单重复提交(拦截器)一些struts2标签的使用
- struts2中关于使用自定义的拦截器后,从页面提交过来的bean的参数的值为null的误区及解决
- 在Struts2下使用[拦截器]配合[session监听器]实现在线会员统计与防止重复登录
- 在Struts2下使用[拦截器]配合[session监听器]实现在线会员统计与防止重复登录
- 在Struts2下使用[拦截器]配合[session监听器]实现在线会员统计与防止重复登录
- Struts2拦截器的使用1
- 使用VS自带的混淆器(dotfuscator)防止你的程序被反编译
- struts2中Action的各项默认值及使用Action直接转发jsp页面
- Struts2拦截器的使用
- 用文件上传了解struts2拦截器的使用
- Struts2拦截器的使用 (详解)
- 使用struts2的token机制和cookie来防止表单重复提交
- java架构搭建(六)--struts2上传和下载文件(使用到拦截器)
- Struts2拦截器的使用(详解)
- struts2拦截器的使用(二)