【转-整理】Struts2中package,action,result,method配置详解

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <!-- /primer/helloWorldAction.action
 7         package:包
 8             * name:包名,唯一的,必选项
 9             * namespace:命名空间,唯一的,相当于房间号。可选项,省略情况下是"/"。页面中请求连接的前半部分
10             * extends:继承
11                 * extends="struts-default":struts2框架底层提供的核心包struts2-core-2.3.3.jar下的struts-default.xml文件
12                 * 为什么要继承这个struts-default.xml文件?
13                     * 因为struts2框架底层提供的struts-default.xml声明了所有的拦截器和拦截器栈,
14                          知道在struts2框架运行时执行struts-default.xml文件中的拦截器栈。
15                     * 如果不继承struts-default.xml文件,就没有办法使用struts2框架提供的所有拦截器
16      -->
17     <package name="primer" namespace="/primer" extends="struts-default">
18
19         <!--
20             如果找不到对应的action名的时候,配置默认要执行的action
21                 * name:指定action的名称
22         -->
23         <default-action-ref name="helloWorldAction" />
24
25         <!--
26             action:
27                 * name:对应页面中请求连接的后面半部分
28                 * class:对应要执行的类的完整路径
29          -->
30         <action name="helloWorldAction" class="cn.yht.primer.HelloWorldAction">
31             <!--
32                 result:结果类型
33                     * name:对应的是执行的类的方法的返回值
34                         public String execute() throws Exception {
35                             System.out.println("HelloWorldAction ************* execute()");
36                             return "success";
37                         }
38                     * 后半部分的文本内容:要转向到的页面
39              -->
40             <result name="success">/primer/success.jsp</result>
41         </action>
42         <!--
43             没有为action指定class
44                 * 在struts2框架底层的struts-default.xml文件中,配置了默认执行的类
45                     com.opensymphony.xwork2.ActionSupport
46                         public String execute() throws Exception {
47                             return SUCCESS;
48                         }
49                 * 实际上,默认执行的是底层提供的ActionSupport类的execute()方法
50                 * result结果类型,默认是根据struts2框架底层提供的ActionSupport类的execute()方法返回值,进行跳转
51          -->
52         <action name="actionNoClass">
53             <result name="success">/primer/success.jsp</result>
54         </action>
55     </package>
56 </struts>  

为Action配置method属性:

将Action类中的每一个处理方法都定义成一个逻辑Action方法。

 1 <!DOCTYPE struts PUBLIC
 2
 3         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4
 5         "http://struts.apache.org/dtds/struts-2.0.dtd">
 6
 7 <struts>
 8
 9     <package name="my" extends="struts-default" namespace="/manage">
10
11         <action name="userLogin" class="org.qiujy.web.struts2.action.LoginAction" method="login">
12
13             <result name="success">/success.jsp</result>
14
15             <result name="error">/error.jsp</result>
16
17         </action>
18
19
20
21         <action name="userRegist" class="org.qiujy.web.struts2.action.LoginAction" method="regist">
22
23             <result name="success">/success.jsp</result>
24
25             <result name="error">/error.jsp</result>
26
27         </action>
28
29     </package>
30
31 </struts>

如上,把LoginAction中的login和regist方法都配置成逻辑Action。要调用login方法,则相应的把index.jsp中表单元素的action设置为"manage/userLogin.action";要调用regist方法,把regist.jsp中表单元素的action设置为"manage/userRegist.action"。

3.3.    使用通配符映射(wildcard mappings)方式:

在struts.xml文件中配置<action…>元素时,它的name、class、method属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。

当我们使用通配符定义Action的name属性时,相当于用一个元素action定义了多个逻辑Action:

<action name="user_*"

class="org.qiujy.web.struts2.action.UserAction" method="{1}">

            <result name="success">/success.jsp</result>

            <result name="error">/error.jsp</result>

        </action>

{1}为配置参数,意思为如:
user_*时,则执行时,使用的是方法*,
user_a时,则执行时,使用的是方法a。

如上,<action name=”user_*”>定义一系列请求URL是user_*.action模式的逻辑Action。同时method属性值为一个表达式{1},表示它的值是name属性值中第一个*的值。例如:用户请求URL为user_login.action时,将调用到UserAction类的login方法;用户请求URL为user_regist.action时,将调用到UserAction类的regist方法。

4.    处理结果

Struts2的Action处理完用户请求后,将返回一个普通字符串,整个普通字符串就是一个逻辑视图名。Struts2通过配置逻辑视图名和物理视图资源之间的映射关系,一旦系统收到Action返回的某个逻辑视图名,系统就会把对应的物理视图资源呈现给浏览者。

4.1.    配置处理结果:

Struts2的Action处理用户请求结束后,返回一个普通字符串-逻辑视图名,必须在struts.xml文件中完成逻辑视图和物理视图资源的映射,才可让系统转到实际的视图资源。

Struts2通过在struts.xml文件中使用<result …/>元素来配置结果。Struts2提供了两种结果。

l 局部结果:将<result …/>作为<action …>元素的子元素配置。

l 全局结果:将<result …/>作为<global-results …>元素的子元素配置。

在package元素中配置<global-results>子元素:

<global-results>

<result name="error">/Error.jsp</result>

<result name="invalid.token">/Error.jsp</result>

<result name="login" type="redirect-action">Logon!input</result>

</global-results>
全局result(global-results)有很多时候一个<result>可供很多<action>使用,这时可以使用<global-results>标签来定义全局的<result>l。执行顺序:当一个Action返回的String没有相应的<result>与之对应,Struts2就会查找全局的<result>。
时间: 2024-12-30 02:51:39

【转-整理】Struts2中package,action,result,method配置详解的相关文章

Struts2中 Result类型配置详解(转)

一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出.在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport 这个类才可以使用下面的结果代码,如下所示:public interface Action{    public static final String SUCCESS =

Struts2中 Result类型配置详解

一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出. 在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport 这个类才可以使用下面的结果代码,如下所示: public interface Action {     public static final String SUCCES

struts2框架学习笔记2:配置详解

核心配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <

struts2中的action标签

struts2中的action标签用于在JSP页面中直接调用一个Action,通过指定executeResult参数,还可以将该Action的处理结果包含到本页面中来. 使用action标签可以允许JSP页面直接调用Action,因为需要调用Action,故可以指定需要被调用的Action的name以及namespace.如果指定了executeResult参数的值为true,该标签还会把Action中处理的结果包含到本页面中来.使用action标签有如下的几个属性: id:          

Struts2 中的action与页面数据传输

1. 如何将参数从界面传递到Action? 你可以把Struts2中的Action看做是Struts1的Action+ActionForm,即只需在Action中定义相关的属性(要有getters/setters方法),然后界面传参的名称跟这些属性保持一致即可.普通的数据类型,将可自动转换.(空字符串转换为int类型时将报错) 2.如何将数据从Action传输到JSP? 可通过多种方式传输 方式一:通过Action的属性传输 直接给action的属性赋值,在转向之后的JSP中,直接用标签<s:p

Struts2配置详解_配置Action

Struts2的核心功能是action,对于开发人员来说,使用Struts2主要就是编写action,action类通常都要实现com.opensymphony.xwork2.Action接口,并实现该接口中的execute()方法. public String execute() throws Exception Struts2并不是要求所有编写的action类都要实现Action接口,也可以直接编写一个普通的Java类作为action,只要实现一个返回类型为String的无参的public方

action中redirectAction到另一个命名空间中的action该如何配置

action中redirectAction到另一个命名空间中的action该如何配置,请注意namespace这儿必须是/global,而不是global,要不然找不到此action的

【SSH2(理论篇)】--Struts2配置详解

上篇博客讨论了SSH2框架模型,在开发过程中发现SSH2的开发模型其实类似于经典的三层模式,在每一层中分别添加了不同的框架,显示层使用的是Struts2进行配置的,业务逻辑层使用的是Spring配置,数据持久层则采用的是Hibernate,开发模式简单易懂,接下来将会分别从三层着手讨论每一层的运行内容. 一.Struts体系简介 struts,是Apache软件基金会(ASF)赞助的一个开源项目,它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-V

Struts2 XML配置详解

struts官网下载地址:http://struts.apache.org/ 1.    深入Struts2的配置文件 本部分主要介绍struts.xml的常用配置. 1.1.    包配置: Struts2框架中核心组件就是Action.拦截器等,Struts2框架使用包来管理Action和拦截器等.每个包就是多个Action.多个拦截器.多个拦截器引用的集合. 在struts.xml文件中package元素用于定义包配置,每个package元素定义了一个包配置.它的常用属性有: l name