首先介绍一下namespace
Struts2的配置文件struts.xml当中有一个元素package ,这个元素有一个属性是 namespace。这个属性的作用是什么呢?
1. 确定该包内的action URL路径
例如:
Java代码
1.<package name="rodom" namespace="/templates" extends="struts-default">
2. <action name="testAction" class="test.web.TestAction">
3. <result>test.jsp</result>
4. </action>
5.</package>
<package name="rodom" namespace="/templates" extends="struts-default">
<action name="testAction" class="test.web.TestAction">
<result>test.jsp</result>
</action>
</package>假设应用contextpath名字为tianxia,应用服务器端口号为8080若在浏览器中访问testAction此时URL的路径为 http://localhost:8080/tianxia/ templates/ testAction.action
在配置namespace时注意的是在templates名字前加“/”
2. 确定返回jsp或ftl等文件的物理路径
如上面的配置test.jsp需放在templates目录下struts才能够找到
若想访问应用根目录下的文件例如index.jsp则如下配置:
<result>/index.jsp</result>
接下来讨论一下<result type=”chain”>的配置
当action结果调用另一个action时result的类型设置为chain,则表示被调用的action会保持调用action的属性值。
Type=“chain”时 result标签的参数可以有下面4个
• actionName
• namespace
• method
• skipActions
举个例子:
配置如下:
Java代码
1.<action name="fm" class="test.web.SimpleAction">
2. <result type="chain">
3. <param name="actionName">chaintest</param>
4. <param name="method">look</param>
5. </result>
6.</action>
7.<action name="chaintest" class="test.web.ChainAction">
8. <result type="freemarker">test.ftl</result>
9.</action>
<action name="fm" class="test.web.SimpleAction">
<result type="chain">
<param name="actionName">chaintest</param>
<param name="method">look</param>
</result>
</action>
<action name="chaintest" class="test.web.ChainAction">
<result type="freemarker">test.ftl</result>
</action>
Java代码
1.public class SimpleAction extends ActionSupport{
2. private String message;
3.public String getMessage() {
4. return message;
5. }
6. public void setMessage(String message) {
7. this.message = message;
8. }
9.public String execute()
10. {
11. message = "hello ";
12. }
13.}
public class SimpleAction extends ActionSupport{
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String execute()
{
message = "hello ";
}
}
Java代码
1.public class ChainAction extends ActionSupport{
2. private String message;
3.public String getMessage() {
4. return message;
5. }
6. public void setMessage(String message) {
7. this.message = message;
8. }
9.public String execute()
10. {
11. message += " tianxia!";
12. System.out.println(message);
13. }
14.}
public class ChainAction extends ActionSupport{
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String execute()
{
message += " tianxia!";
System.out.println(message);
}
}
当调用”fm”这个action返回SUCCESS时fm会调用test.web.ChainAction类的look()方法
控制台上会打印 hello tianxia!这说明SimpleAction的message被保存到ChainAction。
此处需要注意的是,
1.一个Action调用其它Action用chain的方式,调用者中的集合类中的元素依然会保存到被调用者执行。
2. <result type="chain"> chaintest! look</result>不能访问到test.web.ChainAction的look方法
原文:http://mike-zhangp.iteye.com/blog/290816
分享到:
相关推荐
13. **表单提交与Action的关联**:在使用Struts2进行表单处理时,必须确保表单的`action`属性正确指向目标Action,且Action的`namespace`和`name`属性与配置一致,否则会导致请求无法正常路由到指定的Action。...
Namespace是Struts 2中的一个概念,用于分隔不同的功能模块或操作。每个Action都可以关联一个或多个Namespace,它决定了Action的访问路径。默认Namespace为空,表示所有路径都可访问。例如,`/`, `/xxx`, `/xxx/yyy`...
Struts2支持多种结果类型,如`dispatcher`、`redirect`、`chain`等,其中: - `dispatcher`:用于转向到另一个页面。 - `redirect`:用于重定向到另一个页面或Action。 - `chain`:用于调用另一个Action。 例如: ...
Struts2支持多种结果类型,包括`dispatcher`、`redirect`、`chain`和`redirectAction`,每种类型都有其特定用途,如重定向、转发或链式调用等。全局结果集`global-result`则允许开发者为框架设置默认的结果映射,...
<package name="struts2" namespace="/test" extends="struts-default"> <result>/path/to/result.jsp ``` - `<package>`:定义了一个包,其中 `name` 属性标识了包名,`namespace` 定义了命名空间,`...
6. **灵活的结果类型:** Struts2支持多种结果类型,包括dispatcher(转发)、redirect(重定向)、chain(链式调用)等,使得页面跳转更加灵活多样。 #### 二、Struts2项目搭建与配置 要构建一个基于Struts2的Web...
本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...
2. **包(Package)和命名空间(Namespace)**:包用于组织和分类Action,避免重名冲突。命名空间用于进一步区分Action,它可以为空或包含多个Action,处理特定范围内的请求。 3. **Action的实现方式**:有三种主要...
Struts2是一个基于MVC(Model-View-Controller)设计模式的开源JavaEE框架,用于构建企业级Web应用程序。在了解Struts2的基本知识点之前,我们先来回顾一下MVC模式的不同架构: 1) Model1架构模式:在这个模式中,...
- **Result类型**:Struts2提供了多种类型的结果集,包括`dispatcher`、`redirect`、`chain`等。 - **全局结果集**:定义在`<package>`级别的结果集,适用于包内的所有Action。 - **动态结果集**:通过`...
<package name="default" namespace="/" extends="struts-default"> <interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/> <!-- 其他拦截器 --> ...
Struts2是一个流行的Java web框架,它用于构建MVC(模型-视图-控制器)架构的应用程序。以下是对Struts2框架的一些关键知识点的详细解释: 1. **开发模式**: - 开发模式(`struts.devMode`)允许开发者开启额外的...
### Struts2注解配置全面解析 #### 一、引言 随着Struts2框架的不断更新和发展,很多开发者在尝试使用注解方式进行配置时往往会遇到不少难题。尤其是在使用Struts2.1及以上版本时,由于大部分教程和资料仍然基于...
Struts2是一个强大的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。这个框架简化了Web应用开发,提高了代码的可维护性和可扩展性。以下是对Struts2框架核心概念和特性的一些详细说明: 1. **...
### Struts2中的URL配置与处理机制 #### 引言 在Web开发中,URL的配置及处理一直是开发者关注的重点之一。特别是在Struts2框架中,如何高效且准确地配置URL,以确保程序能正确地识别用户请求并作出响应,是一项...
<package name="default" namespace="/" extends="struts-default"> <result name="success">/WEB-INF/views/hello.jsp </struts> ``` - **关键元素说明**: - `<package>`:定义一个包,可以包含多个 ...