Struts Token 机制
UserAction.java
1
/**/
/*
2
* Generated by MyEclipse Struts
3
* Template path: templates/java/JavaClass.vtl
4
*/
5
package
com.lucky.struts.action;
6![]()
7
import
javax.servlet.http.HttpServletRequest;
8
import
javax.servlet.http.HttpServletResponse;
9![]()
10
import
org.apache.struts.action.ActionForm;
11
import
org.apache.struts.action.ActionForward;
12
import
org.apache.struts.action.ActionMapping;
13
import
org.apache.struts.action.ActionMessage;
14
import
org.apache.struts.action.ActionMessages;
15
import
org.apache.struts.actions.DispatchAction;
16![]()
17
import
com.lucky.struts.form.UserForm;
18![]()
19![]()
/** */
/**
20
* MyEclipse Struts
21
* Creation date: 09-23-2007
22
*
23
* XDoclet definition:
24
* @struts.action path="/user" name="userForm" input="/user.jsp" parameter="method" scope="request" validate="true"
25
*/
26![]()
public
class
UserAction
extends
DispatchAction
{
27
private ActionMessages messages = new ActionMessages();
28
public ActionForward toAdd(ActionMapping mapping, ActionForm form,
29![]()
HttpServletRequest request, HttpServletResponse response)
{
30
UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
31
String inputPage = mapping.getInput();
32
this.saveToken(request);
33
return mapping.findForward("toAdd");
34
}
35
36
public ActionForward executeAdd(ActionMapping mapping, ActionForm form,
37![]()
HttpServletRequest request, HttpServletResponse response)
{
38
UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
39
String inputPage = mapping.getInput();
40![]()
if (this.isTokenValid(request, true))
{
41
//没有重复提交
42
System.out.println("新增操作
.");
43
return mapping.findForward("success");
44![]()
}else
{
45
messages.clear();
46
messages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.token"));
47
request.setAttribute("message", messages);
48
this.resetToken(request);
49
return mapping.findForward("error");
50
}
51
}
52
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

27
28
29

30
31
32
33
34
35
36
37

38
39
40

41
42


43
44

45
46
47
48
49
50
51
52
UserForm.java
1
/**/
/*
2
* Generated by MyEclipse Struts
3
* Template path: templates/java/JavaClass.vtl
4
*/
5
package
com.lucky.struts.form;
6![]()
7
import
javax.servlet.http.HttpServletRequest;
8
import
org.apache.struts.action.ActionErrors;
9
import
org.apache.struts.action.ActionForm;
10
import
org.apache.struts.action.ActionMapping;
11![]()
12![]()
/** */
/**
13
* MyEclipse Struts
14
* Creation date: 09-23-2007
15
*
16
* XDoclet definition:
17
* @struts.form name="userForm"
18
*/
19![]()
public
class
UserForm
extends
ActionForm
{
20![]()
/**//*
21
* Generated fields
22
*/
23![]()
24![]()
/** *//** password property */
25
private String password;
26![]()
27![]()
/** *//** username property */
28
private String username;
29![]()
30![]()
/** *//** id property */
31
private int id;
32![]()
33![]()
/**//*
34
* Generated Methods
35
*/
36![]()
37![]()
/** *//**
38
* Method validate
39
* @param mapping
40
* @param request
41
* @return ActionErrors
42
*/
43
public ActionErrors validate(ActionMapping mapping,
44![]()
HttpServletRequest request)
{
45
// TODO Auto-generated method stub
46
return null;
47
}
48![]()
49![]()
/** *//**
50
* Method reset
51
* @param mapping
52
* @param request
53
*/
54![]()
public void reset(ActionMapping mapping, HttpServletRequest request)
{
55
// TODO Auto-generated method stub
56
}
57![]()
58![]()
/** *//**
59
* Returns the password.
60
* @return String
61
*/
62![]()
public String getPassword()
{
63
return password;
64
}
65![]()
66![]()
/** *//**
67
* Set the password.
68
* @param password The password to set
69
*/
70![]()
public void setPassword(String password)
{
71
this.password = password;
72
}
73![]()
74![]()
/** *//**
75
* Returns the username.
76
* @return String
77
*/
78![]()
public String getUsername()
{
79
return username;
80
}
81![]()
82![]()
/** *//**
83
* Set the username.
84
* @param username The username to set
85
*/
86![]()
public void setUsername(String username)
{
87
this.username = username;
88
}
89![]()
90![]()
/** *//**
91
* Returns the id.
92
* @return int
93
*/
94![]()
public int getId()
{
95
return id;
96
}
97![]()
98![]()
/** *//**
99
* Set the id.
100
* @param id The id to set
101
*/
102![]()
public void setId(int id)
{
103
this.id = id;
104
}
105
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

45
46
47
48
49
50
51
52
53
54

55
56
57
58
59
60
61
62

63
64
65
66
67
68
69
70

71
72
73
74
75
76
77
78

79
80
81
82
83
84
85
86

87
88
89
90
91
92
93
94

95
96
97
98
99
100
101
102

103
104
105
ApplicationResources.properties
1
# Resources
for
parameter
'
conf.ApplicationResources
'
2
# Project StrutsToken
3
# Error messages
4
error.token
=
org.apache.struts.taglib.html.TOKEN
5![]()
6![]()
7
# Button messages
8
button.submit
=
Submit
9
button.reset
=
Reset
10![]()
11![]()
12
# Lable messages
13
lable.username
=
username
14
lable.password
=
password
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struts-config.xml
1
<?
xml version
=
"
1.0
"
encoding
=
"
UTF-8
"
?>
2
<!
DOCTYPE struts
-
config PUBLIC
"
-//Apache Software Foundation//DTD Struts Configuration 1.2//EN
"
"
http://struts.apache.org/dtds/struts-config_1_2.dtd
"
>
3![]()
4
<
struts
-
config
>
5
<
data
-
sources
/>
6
<
form
-
beans
>
7
<
form
-
bean name
=
"
userForm
"
8
type
=
"
com.lucky.struts.form.UserForm
"
/>
9![]()
10
</
form
-
beans
>
11![]()
12
<
global
-
exceptions
/>
13
<
global
-
forwards
>
14
<
forward name
=
"
success
"
path
=
"
/success.jsp
"
></
forward
>
15
<
forward name
=
"
error
"
path
=
"
/error.jsp
"
></
forward
>
16
</
global
-
forwards
>
17
<
action
-
mappings
>
18
<
action attribute
=
"
userForm
"
input
=
"
/user.jsp
"
name
=
"
userForm
"
19
parameter
=
"
method
"
path
=
"
/user
"
scope
=
"
request
"
20
type
=
"
com.lucky.struts.action.UserAction
"
>
21
<
forward name
=
"
toAdd
"
path
=
"
/add.jsp
"
></
forward
>
22
</
action
>
23![]()
24
</
action
-
mappings
>
25![]()
26
<
message
-
resources parameter
=
"
conf.ApplicationResources
"
/>
27
</
struts
-
config
>
28![]()
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
add.jsp
1
<%
@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"
%>
2![]()
<%
@include file="./taglib.jsp"
%>
3![]()
<%
4
String path = request.getContextPath();
5
String basePath = request.getScheme() + "://"
6
+ request.getServerName() + ":" + request.getServerPort()
7
+ path + "/";
8
%>
9![]()
10
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
11
<
html
>
12
<
head
>
13
<
base
href
="<%=basePath%>"
>
14![]()
15
<
title
>
My JSP 'add.jsp' starting page
</
title
>
16![]()
17
<
meta
http-equiv
="pragma"
content
="no-cache"
>
18
<
meta
http-equiv
="cache-control"
content
="no-cache"
>
19
<
meta
http-equiv
="expires"
content
="0"
>
20
<
meta
http-equiv
="keywords"
content
="keyword1,keyword2,keyword3"
>
21
<
meta
http-equiv
="description"
content
="This is my page"
>
22
<!--
23
<link rel="stylesheet" type="text/css" href="styles.css">
24
-->
25![]()
26
</
head
>
27![]()
28
<
body
>
29
<
br
>
30
<
br
>
31
This is my JSP page.
32
<
br
>
33
<
html:form
action
="user.do?method=executeAdd"
method
="post"
>
34
<
bean:message
key
="lable.username"
/>
:
<
html:text
property
="username"
></
html:text
>
35
<
br
>
36
<
bean:message
key
="lable.password"
/>
:
<
html:text
property
="password"
></
html:text
>
37
<
html:submit
>
38
<
bean:message
key
="button.submit"
/>
39
</
html:submit
>
40
<
html:reset
>
41
<
bean:message
key
="button.reset"
/>
42
</
html:reset
>
43
</
html:form
>
44
</
body
>
45
</
html
>
46

2

3

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
error.jsp
1
<%
@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"
%>
2![]()
<%
@include file="./taglib.jsp"
%>
3![]()
<%
4
String path = request.getContextPath();
5
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
6
%>
7![]()
8
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
9
<
html
>
10
<
head
>
11
<
base
href
="<%=basePath%>"
>
12
13
<
title
>
My JSP 'error.jsp' starting page
</
title
>
14
15
<
meta
http-equiv
="pragma"
content
="no-cache"
>
16
<
meta
http-equiv
="cache-control"
content
="no-cache"
>
17
<
meta
http-equiv
="expires"
content
="0"
>
18
<
meta
http-equiv
="keywords"
content
="keyword1,keyword2,keyword3"
>
19
<
meta
http-equiv
="description"
content
="This is my page"
>
20
<!--
21
<link rel="stylesheet" type="text/css" href="styles.css">
22
-->
23![]()
24
</
head
>
25
26
<
body
>
27
This is my error JSP page.
<
br
>
28
<
html:errors
name
="message"
/>
29
</
body
>
30
</
html
>
31

2

3

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
index.jsp
1
<%
@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"
%>
2![]()
<%
@ include file="./taglib.jsp"
%>
3![]()
<%
4
String path = request.getContextPath();
5
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
6
%>
7![]()
8
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
9
<
html
>
10
<
head
>
11
<
base
href
="<%=basePath%>"
>
12
13
<
title
>
My JSP 'index.jsp' starting page
</
title
>
14
<
meta
http-equiv
="pragma"
content
="no-cache"
>
15
<
meta
http-equiv
="cache-control"
content
="no-cache"
>
16
<
meta
http-equiv
="expires"
content
="0"
>
17
<
meta
http-equiv
="keywords"
content
="keyword1,keyword2,keyword3"
>
18
<
meta
http-equiv
="description"
content
="This is my page"
>
19
<!--
20
<link rel="stylesheet" type="text/css" href="styles.css">
21
-->
22
</
head
>
23
24
<
body
>
25
This is my JSP page.
<
br
>
26
<
html:link
href
="user.do?method=toAdd"
>
To add page
</
html:link
>
27
</
body
>
28
</
html
>
29

2

3

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
success.jsp
1
<%
@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"
%>
2![]()
<%
3
String path = request.getContextPath();
4
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
5
%>
6![]()
7
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
8
<
html
>
9
<
head
>
10
<
base
href
="<%=basePath%>"
>
11
12
<
title
>
My JSP 'success.jsp' starting page
</
title
>
13
14
<
meta
http-equiv
="pragma"
content
="no-cache"
>
15
<
meta
http-equiv
="cache-control"
content
="no-cache"
>
16
<
meta
http-equiv
="expires"
content
="0"
>
17
<
meta
http-equiv
="keywords"
content
="keyword1,keyword2,keyword3"
>
18
<
meta
http-equiv
="description"
content
="This is my page"
>
19
<!--
20
<link rel="stylesheet" type="text/css" href="styles.css">
21
-->
22![]()
23
</
head
>
24
25
<
body
>
26
This is my success JSP page.
<
br
>
27
</
body
>
28
</
html
>
29

2

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
taglib.jsp
1
<%
@ page language="java" pageEncoding="ISO-8859-1"
%>
2![]()
3![]()
<%
@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"
%>
4![]()
<%
@ taglib uri="http://struts.apache.org/tags-html" prefix="html"
%>
5![]()
<%
@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"
%>
6![]()
<%
@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"
%>
7![]()
8

2
3

4

5

6

7
8
web.xml
1
<?
xml version="1.0" encoding="UTF-8"
?>
2
<
web-app
xmlns
="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
version
="2.4"
xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
3
<
servlet
>
4
<
servlet-name
>
action
</
servlet-name
>
5
<
servlet-class
>
org.apache.struts.action.ActionServlet
</
servlet-class
>
6
<
init-param
>
7
<
param-name
>
config
</
param-name
>
8
<
param-value
>
/WEB-INF/struts-config.xml
</
param-value
>
9
</
init-param
>
10
<
init-param
>
11
<
param-name
>
debug
</
param-name
>
12
<
param-value
>
3
</
param-value
>
13
</
init-param
>
14
<
init-param
>
15
<
param-name
>
detail
</
param-name
>
16
<
param-value
>
3
</
param-value
>
17
</
init-param
>
18
<
load-on-startup
>
0
</
load-on-startup
>
19
</
servlet
>
20
<
servlet-mapping
>
21
<
servlet-name
>
action
</
servlet-name
>
22
<
url-pattern
>
*.do
</
url-pattern
>
23
</
servlet-mapping
>
24
<
welcome-file-list
>
25
<
welcome-file
>
index.jsp
</
welcome-file
>
26
</
welcome-file-list
>
27
</
web-app
>
28![]()
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29