- 浏览: 1048063 次
文章分类
最新评论
-
cjh_android:
我想你是对的,至少对于现实是对的,不过对于技术岗位竞争越来越激 ...
程序员的思考--终于确定了自己的技术发展方向 -
dongbiying:
现在情况如何 。。
创业,不能兼职 -
jackyrong:
ie 9 下时,老显示关闭窗口提示,有办法去掉么,就是关闭掉那 ...
jquery右下角弹窗效果 -
lmaxjj:
加点班如果都称得上是累,只能说明还没体会到真正的生活。。
IT男的进化论 -
馨雨轩:
IT男要进化需要先穿越
IT男的进化论
Struts2 中最核心的是 Action, 而 Action 的核心就是 struts.xml , struts.xml 集中了所有页面的导航定义。对于大型的 Web 项目,通过此配置文件即可迅速把握其脉络,这不管是对于前期的开发,还是后期的维护或升级都是大有裨益的。掌握 struts.xml 是掌握 Struts2 的关键所在 。
技术要点
本节代码向读者演示 struts.xml 内容的组成部分
= XML 文件字符编码定义和 DTD 文件声明。
= global-results 映射定义,如何进行全局导航页面
= package 映射定义。包含的 Action 各属性介绍
演示代码
<!------------------------------------------- 文件名: struts.xml------------------------------->
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- Action 所在包定义 -->
<package name="C04" extends="struts-default">
<!-- 全局导航页面定义 -->
<global-results>
<result name="global">/jsp/login.jsp</result>
</global-results>
<!-- Action 名字,类以及导航页面定义 -->
<!-- 通过 Action 类处理才导航的的 Action 定义 -->
<action name="Login"
class="com.example.struts.action.LoginAction">
<result name="input">/jsp/login.jsp</result>
<result name="success">/jsp/success.jsp</result>
</action>
<!-- 直接导航的的 Action 定义 -->
<action name="index" >
<result >/jsp/login.jsp</result>
</action>
</package>
</struts>
代码解释
( 1 ) struts.xml 第一行是所有 xml 文件都具有的声明。通常以“ <? ”开始 , 以“ ?> ”结束。 Version 是必须指定的 , 该属性一般都为 1.0 ,表明该文档遵守 XML1.0 规范。 Encoding 是可选的,如果不写则默认 UTF-8 ,该文件代码中的 gb2312 表明该文件的编码集是 gb2312 ,支持中文字符。常见的字符编码集有支持简体中文的 gb2312 ,支持繁体中文的 GBK ,支持西欧字符的 ISO8859-1 以及通用的国际编码 UTF-8 。 DTD 文件必须被声明,它表明 struts.xml 是支持 Struts2.0 的文档类型定义。 DTD 全称为 Document Type Defination (文档类型定义)。
( 2 ) struts.xml 文件中所有的属性定义都是以“ <struts > ”开始,“ </struts > ”结束。主要属性有很多,这里先详细介绍 package 。
( 3 ) package 里定义了 Action 映射申明。它也可以包含很多 <action> 或者一个也不包含(当然实际开发中是不可能一个都不包含的)。其中 name 属性内容是开发的 web 项目名称,比如本章代码是 C04 项目,所以代码里写的是 C04 。而且它还扩展了 Struts2 自带的缺省文件 struts-default.xml 配置文件,在此基础上可以对 Action 或其他项目中需要用到的类映射进行自定义。
( 4 ) Action 是之前所述 package 包含的 Action 映射申明。 <action> 里的 name 属性是在 JSP 页面上定义的 Action 名字。在 Struts2 里系统主动寻找名字为它的 Action ,一旦找到就根据 class 属性里定义的 Action 类路径去执行该 Action 类。在代码里可以看到 Action 名字为 Login.action ,系统搜索到它之后根据映射定义的 class 执行 LoginAction 类。 result 相当于在 Struts1 里的 forward 属性。因为 Action 对象都是配置对象,这些配置对象都有唯一的标识,其中 name 就是标识。通过检索这些标识, Action 对象封装了需要指向的 URL ,系统就会将 最后响应信息转到 URL 所指的 JSP 页面。也就是代码里在 <result> 和 </result> 里定义的 JSP 页面路径。
注意: Action 的 name 一定要写成代码里显示的形式,没必要后面加“ .do ”或者“ .action ”这样的后缀名形式。因为“ .do ”是 Struts1 里定义的 Action 后缀名形式 ( 当然在 web.xml 里也可以使用 <url-pattern>*.do</url-pattern> 来定义或定义成其他后缀名形式 ) ,在 Struts2 里已经废弃不用了。而“ .action ”不加是因为当系统运行时候其实它会自动搜寻后缀名为“ .action ”的 Action ,所以也没必要加。否则就变成搜寻“ xx.action.action ”这样格式的 Action ,系统肯定会报错。
另外说一句,虽然 Struts2 里系统只会搜寻“ .action ”的 Action ,但也可以让它只搜寻其他名字的后缀名。在 Struts2 的 org/apache/struts2 目录下有个 default.properties 属性文件,其中有个属性名为 struts.action.extension ,可以将它改为“ struts.action.extension=do ”,这样就只搜寻“ .do ”后缀名。如果不想修改 Struts2 的源文件,也可以用 struts.properties ,在该文件里加上“ struts.action.extension=do ”。而且还可以改为“ struts.action.extension=do , htm ”,这样就不只搜寻“ .do ” , 还可以搜寻“ .htm ”后缀名。当中以“,”隔开就行。
代码里还示范了另外一种 Action 写法,这种 Action 是不经过具体 Action 类进行业务逻辑处理,而是类似一个简单的 Html 链接功能。如代码所示,系统找到 index.Action ,根据 <result> 里定义的 URL ,在浏览器里直接显示 login.jsp 。
注意: <result> 和 </result> 之间定义的 JSP 页面要把全路径写出来,不能只写 login.jsp 、 success.jsp 。除非该 JSP 页面是在系统根目录下。
( 5 ) <global-results> 是全局导航页面映射定义,这些定义的 <result> 是被多个 Action 共用的。如果一个具体 Action 在 <action> 里找不到定义的 <result> 唯一标识,它就去寻找(也可称之为匹配) <global-results> 里的 <result> 唯一标识。如代码所示如果 LoginAction 返回的唯一标识不是“ input ”和“ success ”而是“ global ”,那它就在浏览器显示的是名字为“ global ”的 <result> 指向的 JSP ,这里只是为了示范,所以还是指向 login.jsp 。可以新建一个 error.jsp ,让 <global-results> 中这个名字为“ global ”的 <result> 指向它。则页面显示的就是 error.jsp 的内容。
更多信息请查看 java进阶网 http://www.javady.com
发表评论
-
Struts之拦截器
2012-05-16 17:16 1534今天看了看拦截器,不由得想对拦截器做个描述,在我们进 ... -
struts第一篇:struts诞生记
2012-04-23 22:29 1158Struts是一个开源框架,学Struts有一段时间 ... -
Struts2教程 - 5.4.4 debug标签使用介绍
2012-04-16 21:23 1052技术要点 本节代码具体介绍 debug 数据 标签的使 ... -
Struts2教程 - 5.4.3 date标签使用介绍
2012-04-16 21:23 1172技术要点 本节代码具体介绍 date 数据 标签的使用 ... -
Struts2教程 - 5.2 OGNL表达式语言介绍
2012-04-14 21:15 2169在进行 Struts2 的标签库介绍之前,有必要着重对 ... -
Struts2教程 - 4.1 拦截器在Struts2中的缺省应用
2012-04-09 10:11 1155通过前几章介绍,读者应该明白在 Web 项目中,客户先在视图界 ... -
Struts2教程 - 使用Action类控制导航业务数据
2012-04-09 10:10 1287Struts2 中 Action 充当着一个关键的角色。它解决 ... -
Struts2教程 - 3.4 使用ActionSupport进行校验
2012-04-08 09:04 1578如果 From 数据操作有误,比如输入不是我们需要的数据, ... -
Struts2教程 - 3.3使用Action类控制导航业务数据
2012-04-08 09:04 1208Struts2 中 Action 充当着一个关键的角色。 ... -
Struts2教程 - 5.4.8--10 url标签使用介绍
2012-04-16 21:24 10715.4.8 url 标签使用介绍 ... -
Struts2教程 - 5.4.6-7push、set标签使用介绍
2012-04-16 21:23 1233技术要点 本节代码具体介绍 push ... -
Struts2教程 - 5.4.5 include标签使用介绍
2012-04-16 21:23 1239技术要点 本节代码具体介绍 inclu ... -
Struts2教程 - 5.4.4 debug标签使用介绍
2012-04-17 23:46 1045技术要点 本节代码具体介绍 debug ... -
Struts2教程 - 5.4.3 date标签使用介绍
2012-04-17 23:46 1157技术要点 本节代码具体介绍 date ... -
Struts2教程 - 5.4.2 bean标签使用介绍
2012-04-15 22:57 872技术要点 本节代码具体介绍 bean ... -
Struts2教程 - 5.4.1 action标签使用介绍
2012-04-15 22:57 1161技术要点 本节代码具体介绍 actio ... -
Struts2教程 - 5.3.7 subset标签使用介绍
2012-04-15 22:57 12175.3.7 subset 标签使用介绍 ... -
Struts2教程 - 5.3.5-6 merge、sort标签使用介绍
2012-04-15 22:57 10805.3.5 merge 标签使用介绍 ... -
Struts2教程 - 5.3.4 iterator标签使用介绍
2012-04-14 21:14 1109技术要点 本节代码具体介绍 itera ... -
Struts2教程 - 5.3.3 if、else、elseif标签使用介绍
2012-04-14 21:14 1334技术要点 本节代码具体介绍 if 、 ...
相关推荐
Struts配置文件(通常是`.xml`文件)包含了应用程序的配置信息,比如Action映射、Form Bean定义等。通过将这些配置分散到多个文件中,可以使项目更加模块化和易于维护。 #### 2.2 如何配置多个Struts配置文件 在`...
- **struts-2.1.7.dtd、struts-2.1.dtd、struts-2.0.dtd**:这些是DTD(Document Type Definition)文件,定义了Struts配置文件的结构和规则,帮助XML解析器验证struts.xml的正确性。 - **struts2-dojo-plugin-2.1...
- `struts.xml`是Struts 2的核心配置文件,它定义了Action(控制器)和Action结果(视图)的映射。 - 使用`<s>`标签库可以让JSP页面更简洁,例如`<s:textfield>`用于创建表单输入字段。 2. **Hibernate 3.2**: ...
它提供了一种模型驱动的方法来开发Web应用程序,允许开发者使用Action类和配置文件来定义应用程序的行为。Struts2的核心包括Action、Result、Interceptor等组件,通过这些组件,我们可以更好地分离业务逻辑和表现层...
- **strutsActionContext.xml** 是Spring的一个子配置文件,专门用于配置Struts2中的Action Bean。 ```xml <bean id="studentAction" class="com.ilkj.struts.action.StudentAction"> ``` #### 三、Action、...
Struts2、Hibernate3.2和Spring2.0是Java Web开发中的三个核心框架,它们分别负责MVC(Model-View-Controller)架构的不同部分,实现了业务逻辑、数据持久化和控制层的高效管理。本整合项目旨在演示如何将这三个框架...
- 通过 XML 配置文件、注解或编程式的方式来实现对象的创建和依赖关系的配置。 2. **AOP(面向切面编程)** - Spring 提供了基于代理的 AOP 实现,允许开发者定义切面、通知(advisors)和切入点(pointcuts)来...
- 在Struts2的配置文件(struts.xml)中定义Action及其关联的Action类和结果页面。 - 创建JSP页面(如index.jsp和next.jsp)用于用户交互,展示数据。 **5. Spring配置** - 编写Spring的ApplicationContext.xml...
Hibernate3.2配置--> hibernate.cfg.xml JSP文件--> 具有Struts2.0支持的增、删、改、查页面及自定义查询、自动分页等操作 Action--> 业务Action.java和导出Excel的Action等 VO --> bean.java及 bean.hbm.xml配置...
3. 创建Struts2配置文件`struts.xml`:定义Action、结果类型、拦截器等配置。 二、集成Spring 1. 引入Spring库:将spring.jar以及struts2-spring-plugin.jar添加到项目的类路径中。 2. 编写Spring配置文件`...
VO --> bean.java及 bean.hbm.xml配置文件 Service --> Service接口定义类 DAO --> DAO接口定义类 DAOImpl --> DAO接口Implements实现类 程序配置 --> web.xml 验证框架--> bean-validation.xml (实体验证)、...
文件名中的"配置文件源码"可能包含相关的XML配置文件,如Spring的beans.xml、Struts的struts.xml以及Hibernate的hibernate.cfg.xml等,这些文件定义了组件间的关联和数据源配置。 通过学习这个SSH项目的源码,你...
2. 配置Spring:创建Spring的配置文件(如applicationContext.xml),定义Bean并进行依赖注入。 3. 配置Hibernate:设置hibernate.cfg.xml文件,定义数据源、SessionFactory等,并配置实体类。 4. 整合Struts2和...
VO --> bean.java及 bean.hbm.xml配置文件 Service --> Service接口定义类 DAO --> DAO接口定义类 DAOImpl --> DAO接口Implements实现类 程序配置 --> web.xml 验证框架--> bean-validation.xml (实体验证)、...
VO --> bean.java及 bean.hbm.xml配置文件 Service --> Service接口定义类 DAO --> DAO接口定义类 DAOImpl --> DAO接口Implements实现类 程序配置 --> web.xml 验证框架--> bean-validation.xml (实体验证)、Save...
Struts2框架的配置主要通过多个XML文件来实现,这些配置文件定义了应用程序的行为和结构。本文将详细介绍Struts2配置文件中的各个节点及其作用,并为初学者提供深入的理解。 #### 二、Struts2配置文件概览 Struts2...
《Spring、Struts2与JBPM 3.2的整合应用详解》 在现代企业级应用开发中,Spring、Struts2和JBPM是三个重要的技术框架。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为应用程序提供了灵活的基础架构...