action元素指定method属性
对action进行如下的配置:
<action name=”Login” class=”cc.dynasoft.LoginAction” method=”login” />
……
</action>
<action name=”Regist” class=”cc.dynasoft.LoginAction” />
……
</action>
查看以上两个action,默认的情况是Regist,而当Login的时候,将提交到LoginAction的login中。查看上面的两个action,class都是一样的,于是就出现了下面的使用通配符的概念。
使用通配符
在配置action的时候,action的三个属性name、class和method都可以使用通配符。
以下举例说明:
例1:<action name=”*Action” class=”cc.dynasoft.LoginAction” method=”{1}”>
……
</action>
解释一下上面代码的含义:上面定义的不是一个普通的action,而是定义了一系列的action,只要URL是*Action.action的模式,都可以通过该Action进行处理。但该Action定义了一个表达式{1},该表达式的值就是name属性值中的第一个*的值。
例如,如果用户请求的URL是loginAction.action,则调用该action的login方法;如果用户请求的URL是registAction.action,则调用该action的regist方法。
例2:<action name=”*Action” class=”cc.dynasoft.{1}Action”>
……
</action>
比如说:如果URL为RegistAction.action,可以匹配上面的action,该action的处理类是cc.dynasoft.RegistAction
例3:<action name=”*_*” class=”cc.dynasoft.{1}Action” method=”{2}”>
当一个action为Book_save.action的时候将调用BookAction的save方法来处理用户请求。
注意这个时候指定校验文件需要注意,比如说Book_save.action的校验文件应该是
Book_save-validation.xml。
例4:<action name=”*”>
<result>/{1}.jsp</result>
</action>
这个应该不难理解,呵呵。
以下需要注意的问题:
如果有URL为abcAction.action的请求,如果struts.xml文件有名为abcAction的Action,则一定由该Action来处理用户请求;如果struts.xml文件没有名为abcAction的Action,则搜索name属性值匹配abcAction的Action,例如name为*Action或*,*Action并不会比*更优先匹配abcAction的请求,而是先找到哪个Action,就先由哪个Action来处理用户的请求。因此,我们应该将名为*的Action配置在最后,否则struts2将使用该Action来处理所有希望使用模式匹配的请求。
处理结果
struts2通过在struts.xml文件中使用<result>元素来配置结果,根据<result>元素所在位置的不同,struts2提供了两种结果。
局部结果:将<result>作为<action>元素的子元素配置
全局结果:将<result>作为<global-result>元素的子元素配置。
以下列出比较标准的配置:
<result name=”success” type=”dispatcher”>
<param name=”location” >/thank_you.jsp</param>
<param name=”parse” >true</param>
</result>
location:用于指定实际视图资源
parse:该参数指定是否允许在实际视图名称中使用ONGL表达式,默认为true。如果设置为false则不允许使用,通常不需要修改。
一般我们比较常用的写法:
<result name=”success” type=”dispatcher”>
/thank_you.jsp
</result>
注意如果没有指定name属性:则默认是success;如果没有指定type,则默认就是dispatcher,即JSP。
下面列出struts2内建支持的结果类型如下:
chain:Action链式处理的结果类型,也就是将结果转发到这个action中。
chart:整合JFreeChart的结果类型
dispatcher:用于整合JSP的结果类型
freemarker:用于整合freemarker结果类型。
httpheader:用于控制特殊的HTTP行为的结果类型。
jasper:用于JasperReports整合的结果类型
jsf:用于整合JSF后的结果类型
redirect:实际上dispatcher和redirect的区别就是在于转发和重定向的区别。
redirect-action:用于直接redirect action。
stream:用于向浏览器返回一个Inputstream(用于文件下载)
tiles:用于整合Tiles后的结果类型。
velocity:用于整合Velocity的结果类型。
xslt:用于整合XML/XSLT的结果类型。
plaintext:用于显示某个页面的源代码。
plaintext、redirect以及redirect-action的配置分别如下:
<result type=”plaintext”>
<param name=”location”>/welcome.jsp</param>
<!—设置字符集编码-->
<param name=”charset”>gb2312</param>
</result>
<result type=”redirect”>
/welcome.jsp
</result>
<result type=” redirect-action”>
<!—指定action的命名空间-->
<param name=”namespace”>/ss</param>
<!—指定action的名字-->
<param name=”actionName”>login </param>
</result>
在请求结果中使用ONGL表达式
例子:
<result type=”redirect”>edit.action?skillName=${currentSkill.name}</result>
对于上面的表达式语法,要求action中必须包含currentSkill属性,并且currentSkill属性必须包含name属性,否则${currentSkill.name}表达式值为null。
属性驱动和模型驱动
我不推荐使用模型驱动,属性驱动完全可以实现模型驱动的效果。
异常处理
异常处理在struts2中采用可配置的方式来处理,主要是为了防止异常代码和action代码耦合。我们比较希望的异常处理模式是这样的,如果出现了异常一,则系统跳转到视图1;如果出现了异常二,则系统转到视图2。
我们查看execute的声明:public String execute() throws Exception可以发现将异常抛出由struts2框架进行处理,为了处理异常,我们必须使用exception拦截器,由于在struts-default.xml的defaultStack中已经存在这个拦截器的定义,于是我们可以不用做任何事情。
struts2的异常处理机制是通过在struts.xml文件中配置<exception-mapping />元素完成的,配置该元素的时候,需要指定两个属性:
exception:此属性指定该异常映射所设置的异常类型。
result:出现这个异常的时候,转入result属性所指向的结果。
根据<exception-mapping />元素出现的位置的不同,异常映射又可分为两种:
局部异常映射:将<exception-mapping />作为action的子元素配置
全局异常映射:将<exception-mapping />元素作为<global-exception-mappings>元素的子元素配置。
实际上配置类似result,可以有局部,也可以是全局,局部优先。
举个例子:
<global-exception-mappings>
<exception-mapping exception=”java.sql.SQLException” result=”sql”/>
<exception-mapping exception=”java.lang.Exception” result=”root”/>
</ global-exception-mappings>
注意以上的sql和root是全局result。
输出异常信息:
<s:property value=”exception” />:输出异常对象本身,注意这个异常代表Exception的实例,因此可以调用message属性。
<s:property value=”exceptionStack” />:输出异常堆栈信息。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/michael110/archive/2009/03/25/4024743.aspx
分享到:
相关推荐
下面将详细介绍这些常用的JAR包及其在Struts2框架中的作用。 1. **struts2-core.jar**:这是Struts2框架的基础,包含了框架的核心类和接口,如Action、Result、Interceptor等。这个JAR文件提供了请求处理、动作映射...
总结来说,"Struts 2常用jar包"是构建基于Struts 2的Web应用所必需的类库,它们协同工作,为开发者提供了强大的MVC框架支持,包括请求处理、数据绑定、视图渲染以及丰富的客户端交互能力。正确理解和使用这些库,...
1. struts2-core-2.3.4.1.jar:这是Struts2的核心库,包含了框架的基础功能,如Action类、Result类型、拦截器、配置管理等。它是所有Struts2应用的基础,没有它,其他组件无法正常工作。 2. xwork-core-2.3.4.1.jar...
在这个主题中,我们将详细探讨Struts2框架中常用的jar包及其作用。 1. **struts2-core-2.3.34.jar**:这是Struts2的核心库,包含了框架的主要组件,如Action类、拦截器、结果类型、配置管理等。它实现了请求的处理...
#### 二、Struts2常用配置常量 1. **`struts.i18n.encoding`** - **作用**:此常量用于指定Web应用的默认编码集,等同于调用`HttpServletRequest`的`setCharacterEncoding`方法。设置此项可以确保所有的输入数据...
本压缩包包含了13个Struts2框架中常用的类包,对于初学者和学生来说,掌握这些类包将对理解Struts2的工作原理及其核心功能大有裨益。 1. **struts2-core**: 这是Struts2的核心库,包含了框架的基础组件。如Action、...
在Java Web开发领域中,Struts2框架因其丰富的功能及灵活的配置而备受开发者们的青睐。为了更好地掌握Struts2框架并提升开发效率,本文将详细介绍Struts2中常用的标签及其用法,无论您是初学者还是高级用户,都能...
在使用Struts2时,需要在web.xml中配置Struts2的前端控制器Filter,以处理所有的HTTP请求。同时,Action类通常会继承自Struts2提供的ActionSupport类,以便利用其默认的行为和错误处理机制。 总的来说,Struts2.0的...
`struts2常用包.zip`包含了Struts2框架运行所必需的一些核心库和其他支持库。下面将详细介绍这些文件及其在Struts2中的作用: 1. `struts2-core-2.3.1.2.jar`:这是Struts2的核心库,包含了框架的主要组件和功能。...
这个“Struts2常用jar包.rar”文件包含了运行Struts2应用所需的核心库和依赖,方便开发者直接放入项目的lib目录中使用。下面将详细介绍Struts2框架的关键组件和它们在实际开发中的作用。 1. **核心组件**: - `...
在实际项目中,开发者还需要熟悉Struts2的配置文件(struts.xml),Action的定义,以及如何使用 strut标签库来构建视图。同时,理解OGNL表达式的用法,以及如何使用FreeMarker模板来动态生成页面,也是必不可少的...
在"JSP上手struts2常用包2.3版"中,包含了一系列用于快速开发Struts2应用的基础组件。 1. **Struts2核心库**:这是Struts2的核心组件,包括了Action、Result、Interceptor等关键概念的实现。例如`struts2-core.jar`...
在"STRUTS2常用JAr"这个压缩包中,我们通常会看到以下关键的JAR文件: 1. **struts2-core.jar**:这是Struts2框架的核心库,包含了Action、Interceptor、Result以及其他核心组件的实现。它提供了控制器层的主要功能...
以下是对"struts2的六个常用jar"的详细解释: 1. **struts2-core.jar**:这是Struts2的核心库,包含了框架的主要组件和功能。它提供了Action、Result、Interceptor等关键接口和实现,以及请求处理和视图渲染的基础...
下面我们将深入探讨Struts2的常用包及其在开发中的作用。 1. **核心包(core)**: - `struts2-core`: 这是Struts2的基础包,包含核心的控制器、拦截器、结果类型等。它定义了`Action`接口和`ActionSupport`基类,...
### Struts2常量设置详解 #### 一、概述 在Struts2框架中,配置文件`struts.properties`用于定义一系列重要的系统级配置项,这些配置项对框架的行为模式和功能实现起着至关重要的作用。本文将详细介绍该文件中几个...
10. **标签的CSS和JavaScript控制**:Struts2的标签支持CSS类的设置,如`cssClass`属性,以及JavaScript事件处理,如`onchange`、`onclick`等。 以上只是Struts2.0常用标签的一小部分,实际使用中还有更多功能强大...
在使用Struts2时,了解并掌握其常用的类库至关重要。以下是一些核心的Struts2类库及其作用的详细解释: 1. **Struts2 Core Library**:这是Struts2的核心库,包含了框架的基本组件,如Action、Result、Interceptor...