token拦截器
* 原理:在jsp页面添加<s:token>标签的,服务器会生成一个GUID全局唯一的字符串,放在session中,并且放一个hidden属性的token在form表单中
* 当用户点击提交的时候,token拦截器判断客户端提交的token和session中存放的GUID是否一致(equals)
* 如果一样的话,就删除session中的GUID,并执行Action
* 如果不一样,返回invalidtoken结果,不执行Action方法
*
* 1.action必须继承ActionSupport
* 2.配置struts.xml中的token拦截器
* 3.在form表单中添加<s:token>标签
* 4.写jsp页面(add.jsp;1.jsp;invalidtoken.jsp;)
package com.tjetc.action;
import com.opensymphony.xwork2.ActionSupport;
/**
* token拦截器
* 原理:在jsp页面添加<s:token>标签的,服务器会生成一个GUID全局唯一的字符串,放在session中,并且放一个hidden属性的token在form表单中
* 当用户点击提交的时候,token拦截器判断客户端提交的token和session中存放的GUID是否一致(equals)
* 如果一样的话,就删除session中的GUID,并执行Action
* 如果不一样,返回invalidtoken结果,不执行Action方法
*
* 1.action必须继承ActionSupport
* 2.配置struts.xml中的token拦截器
* 3.在form表单中添加<s:token>标签
* 4.写jsp页面(add.jsp;1.jsp;invalidtoken.jsp;)
*
*/
public class TokenTestAction extends ActionSupport {
public String test1() {
System.out.println("TokenTestAction.test1()方法");
return SUCCESS;
}
public String test2() {
System.out.println("TokenTestAction.test2()方法");
return SUCCESS;
}
}
struts.xml
<?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="test" namespace="/t" extends="struts-default">
<action name="test1" class="com.tjetc.action.TokenTestAction"
method="test1">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token">
<param name="includeMethods">test1</param>
</interceptor-ref>
<result name="invalid.token">/invalidtoken.jsp</result>
<result name="success">/1.jsp</result>
</action>
</package>
</struts>
add.jsp(需要添加<s:token>标签)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="${pageContext.request.contextPath }/" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="t/test1" method="post">
<s:token></s:token>
姓名:<input type="text" name="name"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
1.jsp--跳转成功页面
invalidtoken.jsp--拦截返回页面(写提示信息,"不要重复提交数据")
![](https://i-blog.csdnimg.cn/blog_migrate/54f7cb067110620983c9ab5ee9bace05.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/877a0e6d3a40acfe6a1af245504a46f4.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/6cd7f7f2100c0a0eea2f48f0c3652a23.jpeg)