4. 示例 03 – 导航键
4.1. NetBeans 项目
![]() |
- 在 [1] 中:
- [web.xml]:Web 应用程序配置文件
- [struts.xml]:Struts 配置文件
- [Action1.java]:应用程序的单个操作
- [Page1.jsp, Page2.jsp]:应用程序的两个视图
- 在 [2] 中:[Page1.jsp] 的显示
- 在 [3] 中:显示 [Page2.jsp]
4.2. [struts.xml] 文件
内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<action name="index">
<result type="redirectAction">
<param name="actionName">Action1</param>
<param name="namespace">/actions</param>
</result>
</action>
</package>
<package name="actions" namespace="/actions" extends="struts-default">
<action name="Action1" class="actions.Action1">
<result name="page1">/vues/Page1.jsp</result>
<result name="page2">/vues/Page2.jsp</result>
</action>
</package>
</struts>
- 第 17-19 行:[Action1] 的 execute 方法将返回两个导航键:
- page1,将显示视图 /views/Page1.jsp
- page2,将显示视图 /views/Page2.jsp
4.3. [Action1] 操作
它与前一个示例中的类似:
package actions;
import com.opensymphony.xwork2.ActionSupport;
public class Action1 extends ActionSupport{
// action model
private String param1="valeur1";
private String param2="valeur2";
@Override
public String execute(){
// random selection between two views
int i=(int)(Math.random()*2);
if(i==0){
return "page1";
}else{
return "page2";
}
}
// getters and setters
...
}
- 第 12–14 行:execute 方法会随机返回预期的键 page1 和 page2。
4.4. JSP 视图
Page1.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Page1</title>
</head>
<body>
<h1>Page1</h1>
param1=<s:property value="param1"/><br/>
</body>
</html>
第 11 行:该页面显示来自 [Action1] 的 param1 字段的值。
Page2.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Page2</title>
</head>
<body>
<h1>Page2</h1>
param2=<s:property value="param2"/><br/>
</body>
</html>
第 11 行:该页面显示来自 [Action1] 的 param2 字段的值。
4.5. 测试


当其中一个页面在浏览器中加载后,您必须刷新该页面(按 F5 键),以反复执行 [Action1] 操作,直到另一个页面出现。您还可以传递参数:

