- 浏览: 477320 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
excellent95:
谢楼主分享,确实是CSS图片问题
Struts2判断页面是POST方式提交还是GET方式提交 -
wangluo2:
javaBase那个包显示有问题啊pom文件那一行报错了
微信公众平台开发实战(08) 基于地理信息的服务(LBS) -
andilyliao:
jd技术这么渣也好意思出书,真是醉了
《京东技术解密》试读--十年磨一剑 -
bitray:
刘强东作序多什么,他也不会什么技术,腾讯出来帮他还不是因为腾讯 ...
《京东技术解密》试读--十年磨一剑 -
come_for_dream:
想试试搞这个
《大型分布式网站架构设计与实践》试读
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 |
否 |
是否注入静态方法,如果指定了type ,static 就不能为true |
optional |
否 |
Bean 是否可选 |
1.1 、 Bean 的两种配置方法
1 、框架的IoC 容器创建bean 的实例,然后将该实例注入到框架的内部对象中。
第一种做法可以称为对象注入,它通常要用到bean 的type 属性,告诉容器这个对象实现了哪个接口。
如果自己创建了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
前3 个xml 文件的格式是一样的,因为它们使用同一个DTD 文件,在xml 文件中Constant 元素有两个必须的属性:name 和value ;在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 应用相关的设置都在包中定义,每一个包中都包含了将要用到的action 、result 、拦截器和拦截器栈。
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
- 0401.struts.xml配置详解之一__Bean_常量_包.pdf (298.1 KB)
- 下载次数: 22
发表评论
-
Maven Struts2 项目
2013-09-14 11:44 01、创建好Maven环境; 2、创建一个Maven工 ... -
【张冰Struts2学习笔记】0601.struts.xml配置详解之六 Action配置3 通配符
2010-11-26 15:19 2586struts.xml 配置详解之六 通配符 ... -
【张冰Struts2学习笔记】0502.struts.xml配置详解之五 Action配置2
2010-11-26 14:28 1931struts.xml 配置详解之五 Action ... -
【张冰Struts2学习笔记】0501.struts.xml配置详解之四 Action配置1
2010-11-26 13:10 1917struts.xml 配置详解之四 Action 配置 ... -
【张冰Struts2学习笔记】0403.struts.xml配置详解之三 拦截器配置
2010-11-25 19:03 3357struts.xml 配置详解之三 拦截器配置 ... -
【张冰Struts2学习笔记】0402.struts.xml配置详解之二 名称空间 包含
2010-11-25 18:59 1956struts.xml 配置详解之二 名称空间 包含 ... -
【张冰Struts2学习笔记】0302.Struts2的主要配置文件及优先级
2010-11-20 16:33 1712Struts2 的主要配置文件及优先级 ... -
【张冰Struts2学习笔记】0301_struts.properties 配置详解(表格版)
2010-11-17 15:23 1612注:附件pdf中有35个属性! ... -
【张冰Struts2学习笔记】0202_Struts2的三种接收用户输入的方法
2010-11-17 12:32 2092Struts2的三种接收用户输入的方法 ... -
【张冰Struts2学习笔记】0201_Action接口与ActionSupport类
2010-11-16 15:32 4116Action 接口与ActionSupport ... -
【张冰Struts2学习笔记】0102_第一个Struts2实例
2010-11-14 19:17 3030基于Struts2 的简单登录项目 ... -
【张冰Struts2学习笔记】0101_Struts1与Struts2的不同点
2010-11-14 14:12 1425Struts1与Struts2的不同点 ... -
基于Struts2的Web应用程序所需要的最少类库
2010-08-30 16:17 1923Struts 2.0.11版: 文件名 ... -
Struts2判断页面是POST方式提交还是GET方式提交
2010-06-03 11:06 9171在项目开发过程中,发现有个页面会提交两次,一直没有找到原因,后 ... -
Struts2的一个问题!no found ApplicationContextAware
2009-06-15 16:39 1743问题: Caused by: java.lang.NoC ... -
struts2的select用法
2009-02-11 09:59 66891、在页面对应的Action中有typeBase属性,改变下拉 ... -
子页面刷新父窗口
2009-02-09 11:50 3152下面的例子是一个子窗体调用方法改变父窗体 主页面 cc.ht ... -
Struts2结合JavaScript控制单选框的状态
2008-12-26 11:48 2084需求: 某个页面有3种操作,新增、修改和删除,其中某个字段为只 ... -
《Struts2深入详解》笔记--第三章 由“登录开始”
2008-12-02 19:36 17531、使用领域对象来接收用户输入 【工程1:sx_ch ... -
Struts2使用经验
2008-11-27 14:35 1443、显示某个对象的某个属性值: 两种方式: ${enterpri ...
相关推荐
【张冰Struts2学习笔记】0102_第一个Struts2实例 在Java Web开发领域,Struts2框架是十分重要的MVC(模型-视图-控制器)架构之一,它极大地简化了Web应用程序的开发流程。这篇学习笔记将带你入门Struts2,通过创建...
在"【张冰Struts2学习笔记】0202_Struts2的三种接收用户输入的方法"中,我们主要探讨的是如何在Struts2中有效地获取并处理用户提交的数据。以下是对这三种方法的详细解析: ### 1. 使用Action属性 Struts2的核心是...
标题中的“【张冰Struts2学习笔记】0103_Path与绝对路径”表明了这篇笔记主要讨论的是Struts2框架中关于Path和绝对路径的概念及其应用。Struts2是一个流行的Java Web开发框架,它提供了强大的MVC(模型-视图-控制器...
同时,Struts2的配置文件(struts.xml或struts.properties)也需要定义Action的相关配置,如Action的名称、结果页面等。 在开发过程中,了解并熟练掌握`Action`接口和`ActionSupport`类的用法,能有效提高开发效率...
这个“Struts2_张冰_视频教程课件_PPT”资源是专门针对Struts2框架的学习资料,由知名讲师张冰制作,旨在帮助学习者深入理解并掌握Struts2的核心概念和技术。 首先,我们来探讨一下Struts2框架的基础知识。Struts2...
Struts2是一个强大的Java web应用程序开发框架,由Apache软件基金会维护。它基于MVC(Model-View-Controller)设计模式,旨在简化企业级应用的开发流程。张冰的PPT可能详细介绍了Struts2框架的核心概念和技术,让...
Struts2是一个强大的Java ...通过张冰主讲的Struts2 PPT,开发者不仅能学习到上述基础知识,还能了解到实际项目中的最佳实践和常见问题解决方案。这份PPT对于想要深入了解和掌握Struts2框架的人来说是一份宝贵的资源。
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. **Struts框架基础**:Struts框架的核心是ActionServlet,...
这个“张冰struts原代码(全部1-6)”系列可能是一个教学资源,包含了六个部分,旨在帮助学习者深入理解Struts框架的工作原理和实现细节。以下是基于提供的文件名推测的各个部分可能涉及的关键知识点: 1. **test-...
张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)
Struts2的配置方式也更加灵活,支持XML配置和注解配置,甚至可以通过Convention插件实现零配置开发。 登录功能的实现是许多web应用的基础,Struts2提供了一套完整的机制来处理用户登录请求,包括Action的定义、结果...
3. **配置文件**:Struts2的配置文件(如struts.xml)定义了Action的配置、拦截器栈、全局结果等,是控制应用程序行为的重要部分。 4. **拦截器(Interceptors)**:拦截器是Struts2的一个强大特性,它们在Action...
8. **Struts2配置**:在Struts2的配置文件(如`struts.xml`)中,定义Action、结果类型和拦截器栈。这将指定用户请求如何映射到Action,以及Action执行后如何返回结果。 9. **整合测试**:完成配置后,启动服务器,...
**Struts2 PPT 知识点详解** Struts2 是一个开源的Java Web应用程序框架,主要用于构建MVC(Model-View-Controller)架构的Web应用。由Apache软件基金会维护,它继承了Struts1的优点并弥补了其不足,提供了更强大的...
传智播客Struts2的PPT,是传智播客黎活明老师的东西,和视频是配套的东西还不错
### C面向对象程序设计——基于张冰PPT学习教案的关键知识点 #### 一、面向对象程序设计概述 在《C面向对象程序设计张冰PPT学习教案》中,作者通过具体的例子介绍了面向对象编程的基本思想及其与传统的结构化程序...
张冰教授的课件和源代码很可能是为了辅助学习这些概念而设计的,通过实际编程例子和练习,帮助学生加深理解和应用这些知识。源代码可能涵盖了各种面向对象的设计模式,如工厂模式、单例模式、观察者模式等,这些都是...