- 浏览: 83665 次
- 性别:
- 来自: 杭州
-
最新评论
-
jzm0902:
赞一个
JS的event对象 -
zhangweichina:
非常感谢,帮我解决了一个让我头疼了很久的问题
Struts2 上传文件 -
llxhna:
一美女一美女一美女一美女一美女
jQuery类对象数组操作 -
othella:
qq38450529 写道请教:ellipsis.xml里面是 ...
用CSS做字符截断 -
qq38450529:
请教:ellipsis.xml里面是什么内容?
用CSS做字符截断
引用
文章来源:http://www.blogjava.net/nokiaguy/archive/2008/04/16/193457.html
作者:银河使者
作者:银河使者
在本文中将详细讲述struts.xml文件的常用配置及注意事项。
1.使用<include>标签重用配置文件
在Struts2中提供了一个默认的struts.xml文件,但如果package、action、interceptors等配置比较多时,都放到一个struts.xml 文件不太容易维护。因此,就需要将struts.xml文件分成多个配置文件,然后在struts.xml文件中使用<include>标签引用这些配置文件。这样做的优点如下:
结构更清晰,更容易维护配置信息。
配置文件可以复用。如果在多个Web程序中都使用类似或相同的配置文件,那么可以使用<include>标签来引用这些配置文件,这样可以减少工作量。
假设有一个配置文件,文件名为newstruts.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="demo" extends="struts-default" > <action name="submit" class="action.MoreSubmitAction"> <result name="save" > /result.jsp </result> <result name="print"> /result.jsp </result> </action> </package> </struts>
则struts.xml引用newstruts.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> <include file="newstruts.xml"/> <package name="test" extends="struts-default"> </package> </struts>
大家要注意一下,用<include>引用的xml文件也必须是完成的struts2的配置。实际上<include>在引用时是单独解析的xml文件,而不是将被引用的文件插入到struts.xml文件中。
2.action的别名
在默认情况下,Struts2会调用动作类的execute方法。但有些时候,我们需要在一个动作类中处理不同的动作。也就是用户请求不同的动作时,执行动作类中的不同的方法。为了达到这个目的,可以在<action>标签中通过method方法指定要指行的动作类的方法名,并且需要为不同的动作起不同的名子(也称为别名)。如下面代码所示:
<?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="demo" extends="struts-default" > <action name="test" class="action.MyAction"> </action> <action name="my" class="action. MyAction" method="my"> </action> </package> </struts>
上面代码的两个动作的class属性都指向同一个类,name为这个类起了两个动作别名:test和my。在动作my中,使用了method属性指定要要运行的方法名为my。
在MyAction类中必须要有my方法,代码如下:
package action; import com.opensymphony.xwork2.ActionSupport; public class MyAction extends ActionSupport { public String execute() throws Exception { // 处理test动作的代码 } public String my() throws Exception { // 处理my动作的代码 } }
除了在struts.xml中配置别名,还可以通过请求参数来描述指定动作(并不需要在struts.xml中配置)。请求参数的格式如下:
http://localhost:8080/contextPath/actionName!method.action
关于通过请求指定动作的详细内容,请参阅笔者写的《Struts2教程2:处理一个form多个submit》。
3.为action指定参数
在struts2中还可以为action指定一个或多个参数。大家还记着struts1.x是如何设置的action参数不? 在struts1.x中可以使用<action>标签的parameter属性为其指定一个action参数,如果要指定多个,就只能通过逗号(,)或其他的分隔符将不同的参数隔开。而在struts2中可以通过<param>标签指定任意多个参数。代码如下:
<action name="submit" class="action.MyAction"> <param name="param1">value1</param> <param name="param2">value2</param> <result name="save" > /result.jsp </result> </action>
当然,在action中读这些参数也非常简单,只需要象获取请求参数一样在action类中定义相应的setter方法即可(一般不用定义getter方法)。如下面的代码将读取param1和param2参数的值:
package action; import com.opensymphony.xwork2.ActionSupport; public class MyAction extends ActionSupport { private String param1; private String param2; public String execute() throws Exception { System.out.println(param1 + param2); } public void setParam1(String param1) { this.param1 = param1; } public void setParam2(String param2) { this.param2 = param2; } } 当struts2在调用execute之前,param1和param2的值就已经是相应参数的值了,因此,在execute方法中可以直接使用param1和param2。 4. 选择result类型 在默认时,<result>标签的type属性值是“dispatcher”(实际上就是转发,forward)。开发人员可以根据自己的需要指定不同的类型,如redirect、stream等。如下面代码所示: <result name="save" type="redirect"> /result.jsp </result>
这此result-type可以在struts2-core-2.0.11.1.jar包或struts2源代码中的struts-default.xml文件中找到,在这个文件中找到<result-types>标签,所有的result-type都在里面定义了。代码如下:
<result-types> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/> <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/> <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/> <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/> <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/> <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/> <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/> <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" /> <!-- Deprecated name form scheduled for removal in Struts 2.1.0. The camelCase versions are preferred. See ww-1707 --> <result-type name="redirect-action" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <result-type name="plaintext" class="org.apache.struts2.dispatcher.PlainTextResult" /> </result-types>
5.全局result
有很多时候一个<result>初很多<action>使用,这时可以使用<global-results>标签来定义全局的<result>,代码如下:
<struts> <package name="demo" extends="struts-default"> <global-results> <result name="print">/result.jsp</result> </global-results> <action name="submit" class="action.MoreSubmitAction"> </action> <action name="my" class="action.MoreSubmitAction" method="my"> </action> </package> </struts>
如果<action>中没有相应的<result>,Struts2就会使用全局的<result>。
发表评论
-
用于前端行为测试的JsMock
2010-08-26 15:57 3888JsMock用于测试行为,接口的交互测试。 JsMock的地址 ... -
用CSS做字符截断
2010-08-14 17:30 1546CSS类定义: .ellipsis { overflo ... -
CSS在IE下的hack
2010-06-10 16:48 1105hack的例子: <!DOCTYPE html PUBL ... -
IE下postion relative被叠加的issue
2010-05-17 12:59 1382为了fix这个bug试了个例子: <div style= ... -
prototype概念
2009-12-04 17:03 713在JavaScript中,prototype对象是实现面向对象 ... -
IE7,IE8下弹出层上的编辑框会让底层的link透出来的问题
2009-11-16 14:59 1699在层和后面页面中间阻隔一层iframe 如果是model方式 ... -
采用scrollHeight来实现textarea框的自动加行或者减行
2009-11-16 14:48 5657基于jquery实现的: 1.在textarea上绑定blur ... -
jQuery类对象数组操作
2009-07-10 10:10 4870我们都知道jQUery对象中 ... -
jQuery性能优化指南(1)
2009-07-08 10:55 7711,总是从ID选择器开始继承 在jQuery中最快的选择器 ... -
jQuery性能优化指南---2
2009-07-08 10:27 8184,对直接的DOM操作进行 ... -
jQuery性能优化指南---3
2009-07-08 10:26 9938,尽量使用ID代替Class ... -
struts2的boolean属性转换备忘
2009-06-30 13:44 3364用eclipse自动产生的getter和setter方法不符合 ... -
parseInt的备忘
2009-06-25 16:41 811当前面有0的时候,parseInt默认把它当作八进制处理了 0 ... -
struts.xml配置文件说明
2009-06-09 13:16 627<!DOCTYPE struts PUBLIC ... -
Struts 2杂谈(2):如何向标签文件中的Struts 2标签传递参数值
2009-06-09 12:46 1351引用文章来源:http://www.blogjava.net/ ... -
ValueStack对象的传送带机制
2009-06-09 12:42 1032引用文章来源:http://www ... -
Struts2 国际化
2009-06-09 11:20 891引用文章出处:http://www.blogjava.net/ ... -
Struts2如何写自己的拦截器
2009-06-09 11:16 1572引用文章来源:http://www.blogjava.net/ ... -
Struts2拦截器概述
2009-06-09 11:14 878引用文章来源:http://www.blogjava.net/ ... -
Struts2 上传文件
2009-06-09 11:10 1543引用文章来源:http://www.blogjava.net/ ...
相关推荐
需要注意的是,被引用的XML文件必须是完整的Struts2配置文件,`<include>` 标签不会将它们合并到主配置文件中,而是独立解析每个文件。这意味着每个包含的XML文件应该符合Struts2的配置规范。 接下来,我们讨论...
综上所述,Struts2的属性配置涉及到`struts.xml`、`struts.properties`以及`web.xml`三个主要文件,每个都有其特定的使用场景和优先级。理解和熟练掌握这些配置方式,对于构建高效、可维护的Struts2应用至关重要。
其中,`validation.xml`是一种常用的配置文件,它支持定义字段级别的验证规则。这使得开发者可以在不修改Java代码的情况下调整验证逻辑,提高了开发效率。 ### 二、两种配置方式详解 #### 1. **Action级别的配置**...
标题与描述均指向了对Struts 1.2配置文件的深入解析,特别是web.xml与struts-config.xml这两个核心配置文件。以下是对这些关键知识点的详细解读: ### 一、Web配置文件web.xml #### 1. **Servlet与Servlet Mapping...
通过`contextConfigLocation`参数指定多个XML配置文件路径,其中`classpath*:`表示从类路径下的指定目录中加载所有符合通配符规则的XML文件。这样,Spring容器在启动时会自动加载这些配置文件并初始化。 #### 三、...
"Struts2教程3:struts.xml常用配置解析 .doc"深入解析了struts.xml文件中的关键配置元素,包括常用于处理异常的global-exception-mappings,全局结果类型global-results,以及自定义拦截器栈。 "Struts2.0新标签的...
Web.xml文件是Java Web应用程序的核心配置文件,主要用于初始化工程的配置信息,包括但不限于欢迎页面、过滤器(filter)、监听器(listener)、Servlet、Servlet映射(servlet-mapping)以及启动加载级别等。...
首先,Struts2的配置文件基于DTD来解析和验证其结构。DTD是一套规则,用于定义XML文档的合法结构和元素。在Struts2中,配置文件通常以`struts.xml`命名,它定义了不同的组件,如action、结果类型、拦截器等。 配置...
- **配置文件**: Struts2的配置文件通常包括struts.xml,用于定义Action、结果类型、拦截器等。配置文件可以声明式地控制应用的行为。 - **ModelDriven接口**: 这是一个常用的Action实现接口,用于将模型对象绑定到...
3. **解析请求**:Struts2 过滤器根据 `struts.xml` 配置文件查找匹配的命名空间 (`namespace`) 和动作 (`action`)。 4. **处理请求**:根据配置文件中指定的类执行相应的业务逻辑。 5. **返回结果**:执行完毕后,...
综上所述,搭建Struts2+Spring+Ibatis环境需要安装相应的jar包,并配置Struts2的`struts.xml`文件,以及可能涉及到的其他如Spring的配置文件。对于初学者来说,这个教程会指导他们如何整合这三个框架,创建一个完整...
在Struts2框架中,`struts.xml`配置文件扮演着至关重要的角色,尤其是在处理请求结果的配置上。本文将深入解析Struts2中的`result`类型及其含义,旨在帮助开发者更好地理解和应用这些配置,从而优化应用程序的表现和...
要使用 Validator 插件,首先需要在 `struts-config.xml` 文件中进行配置,然后在 ActionForm 类中使用相应的注解或 XML 配置来进行验证。 #### 结语 本文对 Struts 1.x 的核心概念和技术进行了详细介绍,包括配置...
### Struts2配置文件及其代码示例解析 #### 一、Struts2概述 Struts2是一个基于MVC模式的开源Web应用框架,它继承了Struts1的优点,并且进行了大量的改进,支持拦截器、结果类型、动态方法调用等功能。在Struts2中...
`struts.xml`和`struts-default.xml`是Struts2的配置文件,前者定义了Action、结果类型、拦截器栈等,后者则包含了默认的配置项。`struts.xml.bak`和`xwork-default.xml`可能是备份或扩展的Struts配置,`xwork`是...
- `WEB-INF` 目录包含了Web应用的配置文件,如 `web.xml` 和 Struts2 的配置文件 `struts.xml`,以及类文件和库文件。 - 通常,Action类和自定义拦截器会存放在 `WEB-INF/classes` 或 `WEB-INF/lib` 下的相应位置...
9. **实体类和映射文件**(*.hbm.xml):Hibernate使用的XML文件来描述Java对象与数据库表的映射关系。 通过这份“ssh固定配置文件.rar”,开发者可以直接引用这些配置,快速初始化一个新的SSH项目,减少重复的工作...
1. **配置struts.xml**:在配置文件中添加`struts.multipart.parser`属性,指定文件上传的解析器,通常使用默认的`jakarta`解析器。 ```xml <constant name="struts.multipart.parser" value="jakarta"/> ``` 2. *...
在实际配置中,开发者需要根据应用的需求选择合适的包,并在`struts.xml`配置文件中声明这些插件。此外,理解每个包的功能和用法,以及它们之间的协同工作方式,是成功配置和使用Struts2的关键。合理利用这些包,...
#### 二、核心配置解析 **1. web.xml** `web.xml`是Web应用的核心配置文件,它包含了应用程序的初始化参数、过滤器、监听器等配置信息。 - **contextConfigLocation** 参数指定了Spring的配置文件位置,这里使用...