Struts2的核心功能是action,对于开发人员来说,使用Struts2主要就是编写action,action类通常都要实现com.opensymphony.xwork2.Action接口,并实现该接口中的execute()方法。
该方法如下:
public String execute() throws Exception
Struts2并不是要求所有编写的action类都要实现Action接口,也可以直接编写一个普通的Java类作为action,只要实现一个返回类型为String的无参的public方法即可:
public String xxx()
在实际开发中,action类很少直接实现Action接口,通常都是从com.opensymphony.xwork2.ActionSupport类继承,ActionSupport实现了Action接口和其他一些可选的接口,提供了输入验证,错误信息存取,以及国际化的支持,选择从ActionSupport继承,可以简化action的定义。
开发好action之后,好需要对action进行配置,以告诉Struts2框架,针对某个URL的请求应该交由哪个action进行处理。
1. Action映射:
action映射是Struts2框架中的基本” 工作单元”,action映射就是将一个请求URL(即action的名字)映射到一个action类,当一个请求匹配某个action的名字时,框架就使用这个映射来确定如何处理请求。
属性 |
是否必须 |
说明 |
name |
是 |
action的名字,用于匹配URL |
class |
否 |
Action实现类的完整类名 |
method |
否 |
执行Action类时调用的方法 |
convert |
否 |
应用于action的类型转换的完整类名
|
例如:
<action name="user" class="org.lesson05.UserAction"> <result name="success">/user.jsp</result> </action>
2. 使用method属性
在配置action时,我们可以通过action元素的method属性来指定action调用的
方法,所指定的方法,必须遵循与execute方法相同的格式。
在Struts2.xml文件中,我们可以为同一个action类配置不同的别名,并使用
method属性。
在Struts.xml文件中为同一个Action类配置不同的别名
<!-- 使用method属性 --> <package name="methods" namespace="/" extends="struts-default"> <!-- 对应着MethodAction里面的execute方法 --> <action name="list" class="org.lesson05.MethodAction"> <result name="success">/Methods/list.jsp</result> </action> <!-- 对应着MethodAction里面的add方法 --> <action name="add" class="org.lesson05.MethodAction" method="add"> <result name="success">/Methods/add.jsp</result> </action> <!-- 对应着MethodAction里面的edit方法 --> <action name="edit" class="org.lesson05.MethodAction" method="edit"> <result name="success">/Methods/edit.jsp</result> </action> <!-- 对应着MethodAction里面的delete方法 --> <action name="delete" class="org.lesson05.MethodAction" method="delete"> <result name="success">/Methods/delete.jsp</result> </action> </package>
3.通配符映射
随着Web应用程序的增加,所需的Action也会更多,从而导致大量的action映射,使用通配符可以减少action配置的数量,使一些具有类似行为的Action或者Action方法可以使用通用的样式来配置。
通配符即星号(*),用于匹配0个或多个字符,在配置action时,可以在action元素的name属性中使用星号(*)来匹配任意的字符。
以下是在action映射中使用通配符:
<action name="news*"
class="org.struts2.lesson05.News{1}Action">
<result name="success">/WEB-INF/News/{1}.jsp</result>
</action>
我们在action元素的name属性中使用了通配符(*),允许这个映射匹配所有以/news开始的URL,例如/newsAdd,/newsEdit,/newsDelete,但是,如果请求的是/newsEdit/add,那么这个映射就不会被匹配。
在上面,有一个特殊的记号{1},这是作为占位符使用的,它将被通配符所匹配的值替换,例如访问/newsEdit,通配符(*)匹配的部分是Edit,那么,这个值将替换{1},最终调用的类是org.struts2.lesson05.NewsEditAction,Action
执行成功后导向的结果页面是/WEB-INF/News/Edit.jsp。
在action映射和action结果中,通配符匹配的值可以用记号{N}来访问,N是从1到9的数字,指出替换的是哪一个通配符匹配的值。整个请求URL可以用记号{0}来访问。例如如下的action映射:
<action name="*_*" class="org.struts2.lesson05.{1}Action"
method="{2}">
<result>/WEB-INF/News/{0}.jsp</result>
</action>
当访问/News_delete时,name属性中的第一个”*”匹配News,第二个”*”匹配delete,class属性中使用的记号是{1},所以被News所替换,method属性中使用的记号是{2},于是被delete所替换。结果映射中使用的记号是{0},于是被整个URL替换,即News_delete所替换。整个替换后的结果是:当请求/News_delete时,框架调用NewsAction实例的delete方法对请求进行处理。执行成功后,请求被导向到/WEB-INF/News/News_delete.jsp页面。
通配符方法设置的另一种常见方式是使用后缀通配符,即将”*”放在action名字的后面,在”*”和名字前缀之间使用一个特殊字符作为分隔,常用的特殊字符是下划线(_),当然也可以使用其他字符。例如:
<action name="News_*"
class="org.struts2.lesson05.NewsAction" method="{1}">
<result>/WEB-INF/News/{0}.jsp</result>
</action>
当请求/News_delete时,调用的是NewsAction实例的delete方法,当请求/News_edit的时候,调用的是NewsAction实例的edit方法
4.默认的action
如果请求一个不存在的action,结果将是HTTP404错误。在Struts2中,可以指定一个默认的action,如果一个请求没有其他的action匹配,那么默认的action将被执行。
默认的action使用default-action-ref元素来声明,如下所示:
<!-- 默认action --> <package name="defaultAction" namespace="/default" extends="struts-default"> <default-action-ref name="error"></default-action-ref> <action name="defaultaction" class="org.lesson05.DefaultAction"> <result name="success">/defaultAction.jsp</result> </action> <action name="error"> <result>/error.jsp</result> </action> </package>
注意:根据struts-2.0.dtd中定义的package元素的内容模型,
default-acion-ref必须在action元素之前使用。
如果请求的是/default/defaultaction1.action,框架找不到映射到defaultaction1的action,那么名为error的action将被调用。
注意:每个包中都可以有它自己默认的action,但是每一个名称空间应该只有一个默认action。如果具有相同名称空间的多个包中都声明了默认action,那么哪一个action才是默认的将无法保证。
注意:默认action只对action的访问有效。如果你访问一个非action的资源,例如/user.jsp,而该页面不存在,这时仍会看到HTTP404错误。如果想为整个Web应用程序指定默认页面,需要在web.xml文件中对HTTP404错误指定相应的错误处理页面。
相关推荐
- **struts.xml**:这是Struts2框架的核心配置文件,定义了应用程序中的Action映射、结果类型以及拦截器等关键配置信息。它主要包含以下几个元素: - `package`:表示一个包,其中可以包含多个Action。 - `action`...
1. **Action配置**: Action是Struts2处理用户请求的核心组件。在配置文件中,我们可以定义Action类、对应的URL路径、结果视图以及与之关联的拦截器。例如: ```xml <action name="saveUser" class=...
本文将深入解析`struts.xml`中的Action配置,帮助开发者更好地理解和运用这一关键组件。 首先,Action配置是Struts2中定义业务逻辑入口的关键,它将HTTP请求映射到特定的Java类方法上。在`struts.xml`中,一个...
在传统的Struts 2应用中,我们通常会通过XML配置文件(struts.xml)来定义Action,包括Action类、结果页面、拦截器等信息。然而,随着Java注解的广泛应用,Struts 2也引入了注解配置的方式来简化开发过程,避免了XML...
- **Action配置**:在`struts.xml`中,通过`<action>`标签定义Action,包括名字、类、方法、结果等属性。 ```xml <action name="exampleAction" class="com.example.ExampleAction" method="execute"> ...
配置文件在Struts2中起着至关重要的作用,它定义了框架的行为、动作映射、拦截器和其他关键设置。以下是Struts2配置文件的一些核心元素和属性的详细说明: 1. **配置文件结构**: Struts2的配置通常存储在一个名为...
6. **Action配置覆盖**:如果同一个Action在不同的包中有配置,那么后加载的包中的Action配置会覆盖前面的配置。这也是为什么推荐将通用配置放在父包,而特定配置放在子包中的原因。 理解这个加载顺序有助于我们更...
### Struts 各种配置详解 #### 一、概述 Struts 是一款开源的MVC框架,用于构建可扩展的企业级Java Web应用。它通过提供一套标准的开发模式和组件来简化开发流程,并且能够很好地与其他Java技术进行整合。本文将...
除了Action配置,Struts2的配置文件还包括: - **web.xml**:这是所有Web应用的标准部署描述符,包含Struts2框架所需的必要组件配置。 - **struts.xml**:这是Struts2的主要配置文件,用于定义Action映射、Result...
在这个demo中,`Struts1_MyCinema`可能包含了这个配置文件,我们可以在其中看到各个Action的定义,如Action类名、对应的输入输出页面以及业务处理逻辑。例如: ```xml <action path="/showMovie" type=...
这种方式使得Action配置更加简洁,但同时也可能带来安全问题,因为允许任意方法调用可能会导致未授权的用户执行不应执行的操作。 总结来说,Struts2 Action的参数包括`name`、`class`、`namespace`、`method`等,...
1. **struts-config.xml**:这是Struts的核心配置文件,它定义了Action和ActionForm,以及Action的映射路径。例如: ```xml <action path="/login" type="com.example.LoginAction" name="loginForm"> </...
2. **Action配置**:每个Action都有一个唯一的名字,可以映射到一个具体的Java类。类中包含处理用户请求的方法。通过`class`属性指定Action的完整类名,`name`属性定义了Action的请求路径。 3. **结果配置**:`...
### Struts2 配置文件详解 #### 一、引言 在Struts2框架的应用开发过程中,配置文件起到了至关重要的作用。Struts2主要依赖于两种基于XML的配置文件:`web.xml` 和 `struts-config.xml`(通常命名为 `struts.xml`)...
### Struts 2.0 详细配置解析 #### 一、Struts 2.0 简介 Struts 2.0 是一个基于 Java 的开源框架,用于开发 Web 应用程序。它继承了 Struts 1.x 的优点,并在架构上进行了改进,更加灵活且易于扩展。Struts 2.0 ...
### Struts2参数配置详解 #### 一、概述 在深入了解Struts2框架时,我们不可避免地会接触到各种参数配置。这些配置对于整个框架的运行至关重要。本文将围绕Struts2中的关键配置进行深入探讨,旨在帮助开发者更好地...
在传统配置中,我们需要在struts.xml文件中定义Action类及其对应的映射路径。然而,通过使用注解,我们可以在Action类或方法上直接标注,省去XML配置。例如,我们可以使用`@Action`注解来定义Action的名称和执行方法...
Struts2支持基于注解的Action配置,可以直接在Action方法上使用注解定义请求路径、结果类型等。同时,也可以通过XML配置文件来定义Action的属性。 总结来说,Struts2是一个强大的MVC框架,它通过非侵入式设计、拦截...
本文将深入探讨Struts2中的常量配置,包括基本的XML配置以及零配置的Convention模式下的常量设定。 首先,让我们了解Struts2框架中的常量配置。这些常量定义在`struts-default.xml`和`struts-plugin.xml`等配置文件...