`
CoderDream
  • 浏览: 477320 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

【张冰Struts2学习笔记】0401_struts.xml配置详解之一

阅读更多

 

struts.xml 配置详解之一 Bean 常量 包

 

1.      Bean 配置

Struts2 是个可以扩展的框架,框架的核心组件都是可以配置的,这些组件可以通过Struts2 自身的依赖注入容器来装配。开发时可以自己编写组件来扩展框架功能,然后通过bean 元素来配置组件。

struts-default.xml 文件定义了struts2 框架中可配置的组件。

bean 元素的属性

属性名称

是否必须

描述 信息

class

bean 的类名

type

bean 实现的主要接口

name

bean 的名字,在具有相同Type 属性的bean 中,该名字必须唯一

scope

bean 的作用域,是default,singleton,request,session,thread 中的一个

static

是否注入静态方法,如果指定了typestatic 就不能为true

optional

Bean 是否可选

1.1 Bean 的两种配置方法

1 、框架的IoC 容器创建bean 的实例,然后将该实例注入到框架的内部对象中。

第一种做法可以称为对象注入,它通常要用到beantype 属性,告诉容器这个对象实现了哪个接口。

如果自己创建了ObjectFactory ,则可以在struts-default.xml 中作如下配置:

代码清单 1 struts.xml 片段

<struts>

    <bean type="com.opensymphony.xwork2.ObjectFactory"

       name="struts" class="org.apache.struts2.impl.StrutsObjectFactory" />

</struts>

 

2 、通过bean 的静态方法向bean 注入值

第二种做法使用值注入,允许不创建bean ,而让bean 接受框架的常量。Bean 使用值注入,必须使用static 属性,并将该属性设置为true

例如:struts-default.xml 文件中可以作如下配置:

代码清单 2 struts-defaul.xml 片段

<bean class=“com.opensymphony.xwork2.ObjectFactory” static=“true”/>

1.2 Bean 配置总结

注:在实际开发中,很少使用<bean> 元素。原因是Struts2 本身提供的功能已经足够强大,因此没有必要去扩展或者替换Struts2 的核心组建 ,自然也就用不到配置<bean> 元素。

2.      常量配置

我们可以通过定义一些能够改变框架和插件行为的关键设置来定制我们struts 应用程序,而这些设置就是常量。

常量扮演了两个关键的角色:首先它们被用来覆盖一些原有的默认设置,例如上传文件的最大容量、框架是否处于开发模式等等;其次,常量还用来指定在一个类型(type) 的多个实现中,哪个bean 应该被选中。

constant 元素的属性

属性名称

是否必须

描述 信息

name

常量的名字

value

常量的值

2.1 、常量配置文件的优先级

常量可以定义在多个文件中,默认情况下我们按照下面的顺序来寻找常量,后面的将覆盖前面的设置

struts-default.xml

struts-plugin.xml

struts.xml

struts.properties

web.xml

3xml 文件的格式是一样的,因为它们使用同一个DTD 文件,在xml 文件中Constant 元素有两个必须的属性:namevalue ;在struts.properties 文件中,每一个entry 都被视为一个常量;在web.xml 文件中FilterDispatcher 的初始化参数被载入为常量。

2.2 3 种常量形式的示例

第一种:在struts.xml 文件中配置常量

代码清单 3 struts.xml 片段

<struts> 

<constant name="struts.devMode" value="true" />

</struts>

第二种:在struts.properties 文件中配置常量

代码清单 4 struts.properties 片段

struts.devMode = true

第三种:在web.xml 文件中配置常量

代码清单 5 web.xml 片段

<filter>

           <filter-name> struts</filter-name>     

            <filter-class>

                      org.apache.struts2.dispatcher.FilterDispatcher

          </filter-class>

           <init-param>

                 <param-name> struts.devMode</param-name>

                 <param-value> true</param-value>

           </init-param>

</filter>

3.      包的配置

Struts2 中的包类似于java 中的包,提供了将action resul t拦截器 拦截器栈 组织成一个逻辑单元的一种方式,从而为你简化了维护工作,提高了重用性。

struts.xml 文件中,与web 应用相关的设置都在包中定义,每一个包中都包含了将要用到的actionresult 、拦截器和拦截器栈。

package 元素的属性

属性名称

是否必须

描述 信息

name

被其他包引用时的键(key :唯一标识,不允许同名 )

extends

指定要扩展的包

namespace

指定名称空间

abstract

声明包为抽象的(在包中没有action 定义)

注意:

由于包信息的获取是按照配置文件内容的先后顺序进行的,所以“父”包必须在“子”包之前定义

包定义的例子(节选自struts2 自带的showcase 例子)

代码清单 6 struts.xml 片段

<!-- 定义一个名为 default 的包,

  继承自 struts-default.xml 文件中定义的 struts-default 抽象包 -->

< package name = "default" extends = "struts-default" >

           < interceptors >

           <!-- 定义名为 crudStatck 的拦截器栈 -->

           < interceptor-stack name = "crudStack" >

                 < interceptor-ref name = "checkbox" />

                 < interceptor-ref name = "params" />

                 < interceptor-ref name = "static-params" />

                 < interceptor-ref name = "defaultStack" />

           </ interceptor-stack >

      </ interceptors >

 

      < action name = "date" class = "org.apache.struts2.showcase.DateAction"

           method = "browse" >

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

      </ action >

</ package >

 

<!-- 定义一个名为 skill 的包,继承自先前定义的 default 的包 -->

< package name = "skill" extends = "default" namespace = "/skill" >

      <!-- 设置默认的拦截器引用, crudStack 是从 default 包继承而来的 -->

      < default-interceptor-ref name = "crudStack" />

 

      < action name = "list"

class = "org.apache.struts2.showcase.action.SkillAction" method = "list" >

           < result > /empmanager/listSkills.jsp </ result >

           <!-- 设置 action 引用的拦截器,将覆盖默认的拦截器引用 -->

           < interceptor-ref name = "basicStack" />

      </ action >

</ package >

 

我的联系方式: 85337464

我的博客: http://coderdream.iteye.com

 

1
0
分享到:
评论

相关推荐

    【张冰Struts2学习笔记】0102_第一个Struts2实例

    【张冰Struts2学习笔记】0102_第一个Struts2实例 在Java Web开发领域,Struts2框架是十分重要的MVC(模型-视图-控制器)架构之一,它极大地简化了Web应用程序的开发流程。这篇学习笔记将带你入门Struts2,通过创建...

    【张冰Struts2学习笔记】0202_Struts2的三种接收用户输入的方法

    在"【张冰Struts2学习笔记】0202_Struts2的三种接收用户输入的方法"中,我们主要探讨的是如何在Struts2中有效地获取并处理用户提交的数据。以下是对这三种方法的详细解析: ### 1. 使用Action属性 Struts2的核心是...

    【张冰Struts2学习笔记】0103_Path与绝对路径

    标题中的“【张冰Struts2学习笔记】0103_Path与绝对路径”表明了这篇笔记主要讨论的是Struts2框架中关于Path和绝对路径的概念及其应用。Struts2是一个流行的Java Web开发框架,它提供了强大的MVC(模型-视图-控制器...

    【张冰Struts2学习笔记】0201_Action接口与ActionSupport类

    同时,Struts2的配置文件(struts.xml或struts.properties)也需要定义Action的相关配置,如Action的名称、结果页面等。 在开发过程中,了解并熟练掌握`Action`接口和`ActionSupport`类的用法,能有效提高开发效率...

    Struts2_张冰_视频教程课件_PPT

    这个“Struts2_张冰_视频教程课件_PPT”资源是专门针对Struts2框架的学习资料,由知名讲师张冰制作,旨在帮助学习者深入理解并掌握Struts2的核心概念和技术。 首先,我们来探讨一下Struts2框架的基础知识。Struts2...

    struts2 PPT 张冰

    Struts2是一个强大的Java web应用程序开发框架,由Apache软件基金会维护。它基于MVC(Model-View-Controller)设计模式,旨在简化企业级应用的开发流程。张冰的PPT可能详细介绍了Struts2框架的核心概念和技术,让...

    张冰主讲的struts2 ppt

    Struts2是一个强大的Java ...通过张冰主讲的Struts2 PPT,开发者不仅能学习到上述基础知识,还能了解到实际项目中的最佳实践和常见问题解决方案。这份PPT对于想要深入了解和掌握Struts2框架的人来说是一份宝贵的资源。

    张冰struts原代码(全部1-6)之五

    3. **配置文件**:Struts的配置文件(通常为struts-config.xml)定义了Action的映射、ActionForm Bean的属性以及数据流的方向。这些配置对于理解和控制应用程序的流程至关重要。 4. **Tiles**:在Struts 1.x中,...

    张冰struts原代码(全部1-6)之二

    张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)

    张冰struts原代码(全部1-6)之一

    张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)

    张冰struts原代码(全部1-6)之六

    这个“张冰struts原代码(全部1-6)”系列可能是一个教程或者一系列的学习资源,由张冰提供,涵盖了Struts框架的基础到高级应用,包括了六个部分的内容。 1. **Struts框架基础**:Struts框架的核心是ActionServlet,...

    张冰struts原代码(全部1-6)之三

    这个“张冰struts原代码(全部1-6)”系列可能是一个教学资源,包含了六个部分,旨在帮助学习者深入理解Struts框架的工作原理和实现细节。以下是基于提供的文件名推测的各个部分可能涉及的关键知识点: 1. **test-...

    张冰struts原代码(全部1-6)之四

    张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)

    张冰主讲的Struts2的PPT

    Struts2的配置方式也更加灵活,支持XML配置和注解配置,甚至可以通过Convention插件实现零配置开发。 登录功能的实现是许多web应用的基础,Struts2提供了一套完整的机制来处理用户登录请求,包括Action的定义、结果...

    struts2.ppt完整包

    3. **配置文件**:Struts2的配置文件(如struts.xml)定义了Action的配置、拦截器栈、全局结果等,是控制应用程序行为的重要部分。 4. **拦截器(Interceptors)**:拦截器是Struts2的一个强大特性,它们在Action...

    张冰老师的SSH2整合心得

    8. **Struts2配置**:在Struts2的配置文件(如`struts.xml`)中,定义Action、结果类型和拦截器栈。这将指定用户请求如何映射到Action,以及Action执行后如何返回结果。 9. **整合测试**:完成配置后,启动服务器,...

    Struts2 ppt

    **Struts2 PPT 知识点详解** Struts2 是一个开源的Java Web应用程序框架,主要用于构建MVC(Model-View-Controller)架构的Web应用。由Apache软件基金会维护,它继承了Struts1的优点并弥补了其不足,提供了更强大的...

    传智播客Struts2的PPT

    传智播客Struts2的PPT,是传智播客黎活明老师的东西,和视频是配套的东西还不错

    C面向对象程序设计张冰PPT学习教案.pptx

    ### C面向对象程序设计——基于张冰PPT学习教案的关键知识点 #### 一、面向对象程序设计概述 在《C面向对象程序设计张冰PPT学习教案》中,作者通过具体的例子介绍了面向对象编程的基本思想及其与传统的结构化程序...

    C++面向对象程序设计 张冰 课件、源代码

    张冰教授的课件和源代码很可能是为了辅助学习这些概念而设计的,通过实际编程例子和练习,帮助学生加深理解和应用这些知识。源代码可能涵盖了各种面向对象的设计模式,如工厂模式、单例模式、观察者模式等,这些都是...

Global site tag (gtag.js) - Google Analytics