`
xpp02
  • 浏览: 1035445 次
社区版块
存档分类
最新评论

Struts2教程 - 3.2 使用配置文件struts.xml实现页面导航定义

阅读更多

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

分享到:
评论

相关推荐

    Struts2+hibernate3.2+Spring2.0架构搭建

    ### Struts2+Hibernate3.2+Spring2.0架构搭建详解 #### 一、环境搭建与配置 在本教程中,我们将详细讲解如何搭建基于Struts2+Hibernate3.2+Spring2.0的软件架构。这个组合常被称为SSH(Struts-Spring-Hibernate)...

    多个struts配置文件使用

    Struts配置文件(通常是`.xml`文件)包含了应用程序的配置信息,比如Action映射、Form Bean定义等。通过将这些配置分散到多个文件中,可以使项目更加模块化和易于维护。 #### 2.2 如何配置多个Struts配置文件 在`...

    搭建 Struts2.0 + Hibernate3.2 + Spring2.5 说明

    ### 搭建Struts2.0 + Hibernate3.2 + Spring2.5 ...本教程详细介绍了如何搭建Struts2.0、Spring2.5和Hibernate3.2环境,并解决了常见问题如JAR包冲突等。通过这些步骤,可以构建出一个完整的基于MVC架构的应用程序。

    struts-2.1.8.1-all.zip完整jar包

    - **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...

    整合struts2.1和hibernate3.2的JAR包

    它提供了一种模型驱动的方法来开发Web应用程序,允许开发者使用Action类和配置文件来定义应用程序的行为。Struts2的核心包括Action、Result、Interceptor等组件,通过这些组件,我们可以更好地分离业务逻辑和表现层...

    Struts2.0-Hibernate3.2-Spring2.0整合

    - **strutsActionContext.xml** 是Spring的一个子配置文件,专门用于配置Struts2中的Action Bean。 ```xml &lt;bean id="studentAction" class="com.ilkj.struts.action.StudentAction"&gt; ``` #### 三、Action、...

    Struts 2.0 + Hibernate 3.2 + Spring 2.0 框架整合.doc

    - `struts.xml`是Struts 2的核心配置文件,它定义了Action(控制器)和Action结果(视图)的映射。 - 使用`&lt;s&gt;`标签库可以让JSP页面更简洁,例如`&lt;s:textfield&gt;`用于创建表单输入字段。 2. **Hibernate 3.2**: ...

    Struts2.Hibernate3.2.Spring2.0整合

    Struts2、Hibernate3.2和Spring2.0是Java Web开发中的三个核心框架,它们分别负责MVC(Model-View-Controller)架构的不同部分,实现了业务逻辑、数据持久化和控制层的高效管理。本整合项目旨在演示如何将这三个框架...

    spring-framework-3.2.x .zip----源码

    - 通过 XML 配置文件、注解或编程式的方式来实现对象的创建和依赖关系的配置。 2. **AOP(面向切面编程)** - Spring 提供了基于代理的 AOP 实现,允许开发者定义切面、通知(advisors)和切入点(pointcuts)来...

    struts2+hibernate3.2+spring2.0配置+入门实例

    - 在Struts2的配置文件(struts.xml)中定义Action及其关联的Action类和结果页面。 - 创建JSP页面(如index.jsp和next.jsp)用于用户交互,展示数据。 **5. Spring配置** - 编写Spring的ApplicationContext.xml...

    SSH代码生成工具 SSH代码生成器

    Hibernate3.2配置--&gt; hibernate.cfg.xml JSP文件--&gt; 具有Struts2.0支持的增、删、改、查页面及自定义查询、自动分页等操作 Action--&gt; 业务Action.java和导出Excel的Action等 VO --&gt; bean.java及 bean.hbm.xml配置...

    struts2+hibernate3.2+spring2.5集成步骤

    3. 创建Struts2配置文件`struts.xml`:定义Action、结果类型、拦截器等配置。 二、集成Spring 1. 引入Spring库:将spring.jar以及struts2-spring-plugin.jar添加到项目的类路径中。 2. 编写Spring配置文件`...

    AutoCode代码生成器(SSH版)

    VO --&gt; bean.java及 bean.hbm.xml配置文件 Service --&gt; Service接口定义类 DAO --&gt; DAO接口定义类 DAOImpl --&gt; DAO接口Implements实现类 程序配置 --&gt; web.xml 验证框架--&gt; bean-validation.xml (实体验证)、...

    spring2.5+struts2+hibernate3.2=ssh项目框架源码

    文件名中的"配置文件源码"可能包含相关的XML配置文件,如Spring的beans.xml、Struts的struts.xml以及Hibernate的hibernate.cfg.xml等,这些文件定义了组件间的关联和数据源配置。 通过学习这个SSH项目的源码,你...

    Struts2.Hibernate3.2.Spring2.0整合续一

    2. 配置Spring:创建Spring的配置文件(如applicationContext.xml),定义Bean并进行依赖注入。 3. 配置Hibernate:设置hibernate.cfg.xml文件,定义数据源、SessionFactory等,并配置实体类。 4. 整合Struts2和...

    AutoCode代码生成器【SSH版】

    VO --&gt; bean.java及 bean.hbm.xml配置文件 Service --&gt; Service接口定义类 DAO --&gt; DAO接口定义类 DAOImpl --&gt; DAO接口Implements实现类 程序配置 --&gt; web.xml 验证框架--&gt; bean-validation.xml (实体验证)、...

    ssh代码生成器轻松、快捷

    VO --&gt; bean.java及 bean.hbm.xml配置文件 Service --&gt; Service接口定义类 DAO --&gt; DAO接口定义类 DAOImpl --&gt; DAO接口Implements实现类 程序配置 --&gt; web.xml 验证框架--&gt; bean-validation.xml (实体验证)、Save...

    struts2配置文件详解

    Struts2框架的配置主要通过多个XML文件来实现,这些配置文件定义了应用程序的行为和结构。本文将详细介绍Struts2配置文件中的各个节点及其作用,并为初学者提供深入的理解。 #### 二、Struts2配置文件概览 Struts2...

    spring2_struts2_jbpm3.2.rar_jbpm struts2_jbpm-demo_jbpm3 spring_

    《Spring、Struts2与JBPM 3.2的整合应用详解》 在现代企业级应用开发中,Spring、Struts2和JBPM是三个重要的技术框架。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为应用程序提供了灵活的基础架构...

Global site tag (gtag.js) - Google Analytics