12.Struts2重定向Action
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在这章中,你将熟悉一下Struts2重定向Action并学习如何在Struts2程序中使用它.
Post之后的重定向: 该post模式由Struts2提供.这web程序中是常见的模式.由一个action转发到另一个action.这是常见的用法转发action显示页面.
转发Action结果 : 重定向模式由Struts2提供.ActionMapperFactory提供的ActionMapper用来转发浏览器到URL指定的Action.在下面的Struts2程序中你能看到一个简单的实现.
重定向动态参数 : Action重定向结果带有下面的参数
∙actionName
∙namespace
∙method
∙encode
∙parse
∙location
∙prependServletContext
仿照下面的步骤创建一个重定向Action例子 :
第一步 : 创建struts.xml文件
Java代码
1.<?xml version
2.="1.0" encoding="UTF-8" ?>
3.<!DOCTYPE struts PUBLIC
4. "-//Apache Software Foundation//DTD Struts Configuration 2.
0//EN"
5. "http://struts.apache
/dtds/struts-2.0.dtd">
7.<struts>
8. <!-- Rose India Struts 2 Tutorials -->
9. <constant name="struts.enable.DynamicMethodInvocation" valu
e="false" />
10. <constant name="struts.devMode" value="true" />
11.<include file="struts-default.xml"/>
12. <package name="roseindia" namespace="/roseindia" extends="s
truts-default">
13.
14. <!-- Redirect Action -->
15.
16. <action name="showAjaxLoginCancelForm">
17. <result>/pages/ajaxloginCancel.jsp</result>
18. </action>
19.
20. <action name="ajaxloginCancel" class="net.roseindia.Login">
21. <result name="input">/pages/ajaxloginCancel.jsp</result>
22. <result name="error">/pages/ajaxloginCancel.jsp</result>
23. <result name="cancel" type="redirect">/pages/ajaxloginCan
cel.jsp</result>
24. <result>/pages/ajaxloginsuccess.jsp</result>
25. </action>
26.
27. <!-- Add actions here -->
28. </package>
29.
30. <!-- Add packages here -->
31.
32.</struts>
第二步 : 创建一个输入表单 : ajaxloginCancel.jsp
Html代码
1.<%@ taglib prefix="s"uri="/struts-tags"%>
2.<html>
3.<head>
4.<s:head theme="ajax"debug="true"/>
5.</head>
6.<body>
7.<s:div id="loginDiv"theme="ajax">
8.<div style="width: 300px;border-style: solid">
9.<s:form action="ajaxloginCancel"validate="true">
10. <tr>
11. <td colspan="2">
12. Login
13. </td>
14. </tr>
15. <tr>
16. <td colspan="2">
17. <s:actionerror/>
18. <s:fielderror/>
19. </td>
20. <s:textfield name="username"label="Login name"/>
21. <s:password name="password"label="Password"/>
22. <s:submit value="Submit"theme="ajax"targets="loginD
iv"notifyTopics="/ajaxloginCancel"/>
23. <s:submit action="showAjaxLoginCancelForm"value="Can
cel"onclick="form.onsubmit=null"/>
24.
25. </s:form>
26. </div>
27. </s:div>
28. </body>
29.</html>
第三步 : 创建一个Action类:Login.java
Java代码
1.package net.roseindia;
2.import com.opensymphony.xwork2.ActionSupport;
3.import java.util.Date;
4.
5.
6./**
7. * <p> Validate a user login. </p>
8. */
9.public class Login extends ActionSupport {
10.
11.
12. public String execute() throws Exception {
13. if(!getUsername().equals("Admin") || !getPassword().equals(
"Admin")){
14. addActionError("Invalid user name or password! Plea
se try again!");
15. return ERROR;
16. }
17. if(getUsername().equals("Admin") || getPassword().equals("A
dmin")){
18. return SUCCESS;
19. }else{
20. return NONE;
21. }
22. }
23.
24.
25. // ---- Username property ----
26.
27. /**
28. * <p>Field to store User username.</p>
29. * <p/>
30. */
31. private String username = null;
32.
33.
34. /**
35. * <p>Provide User username.</p>
36. *
37. * @return Returns the User username.
38. */
39. public String getUsername() {
40. return username;
41. }
42.
43. /**
44. * <p>Store new User username</p>
45. *
46. * @param value The username to set.
47. */
48. public void setUsername(String value) {
49. username = value;
50. }
51.
52. // ---- Username property ----
53.
54. /**
55. * <p>Field to store User password.</p>
56. * <p/>
57. */
58. private String password = null;
59.
60.
61. /**
62. * <p>Provide User password.</p>
63. *
64. * @return Returns the User password.
65. */
66. public String getPassword() {
67. return password;
68. }
69.
70. /**
71. * <p>Store new User password</p>
72. *
73. * @param value The password to set.
74. */
75. public void setPassword(String value) {
76. password = value;
77. }
78.
79.}
创建一个适当的验证器 :
validation.xml的格式要么是<Action名>-validation.xml或者<Action
名>-<Action别名>-validation.xml.
Login-validation.xml
Xml代码
1.<?xml version="1.0"encoding="UTF-8"?>
2.<!DOCTYPE validators PUBLIC
3. "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
4. "/xwork/xwork-validator-1.0.2.
dtd">
5.
6.<validators>
7.<field name="username">
8.<field-validator type="requiredstring">
9.<param name="trim">true</param>
10. <message>Login name is required</message>
11. </field-validator>
12. </field>
13. <field name="password">
14. <field-validator type="requiredstring">
15. <param name="trim">true</param>
16. <message>Password is required</message>
17. </field-validator>
18. </field>
19.</validators>
当输入正确的用户名和密码,用户会得到ajaxloginsuccess.jsp页面显示的输入信息
Html代码
1.<html>
2.<head>
3.<title>Login Success</title>
4.</head>
5.<body>
6.<p align="center"><font color="#000080"size="5">Login Succ
essful !</font></p>
7.<h1> Welcome to <%=request.getParameter("username")%></h1
>
8.</body>
9.</html>
输出 :
当程序执行的时候你会看到如下 :
当你什么字段都不填并点击"Submit"的时候,你会得到 :
如果你点击"Cancel"按钮,那么重定向Action并执行得到 :。