struts2自主学习之DTD文件结构及各配置文件详解

来源:互联网 发布:js 获取主域名 编辑:程序博客网 时间:2024/06/05 15:43

struts.xml
第一行xml文件说明<?xml-utf-8>
<!doctype> xml文档说明
struts-2.2.dtd文件看xml文档说明



struts的DTD文件结构如下:
struts

1、package*

(1)、result-type?
    <1>result-type+
        [1]param*
(2)、interceptors?拦截器
    <1>interceptor+
        [1]param*
    <2>interceptor-stack+
        [1]interceptor-ref*
            {1}param*
(3)、default-interceptor-ref?
    <1>param*
(4)、default-action-ref?
    [1]param*
(5)、default-action-ref?
    [1]param*
(6)、default-class-ref?
    [1]param*
(7)、global-results?
    <result+>
(8)、action*
    [1]param*
    [2]result*
        <1>(#PCDATA|PARAM)*
    [3]interceptor-ref*
        <1>param*
    exception-mapping*
        <1>(#PCDATA|param)*

        
2、include*
3、bean*
4、constant*


凡是出现*符号的表示这个元素可以出现0-N次
在元素后面出现?的元素表示这个元素是可选的元素
如果元素后面出现+,表示这个元素在相应的元素下必须出现1-N  
如果没有任何符号,表示这个元素是必不可少的struts



Struts-default.xml

内部配置文件
<package name="default" extends="struts-defult">
表示我们自己定义的default这个包需要继承struts-defult这个包


Struts-default.xml包中内容
在core包中


struts.properties
用户自定义的文件

是一个属性定义文件

struts2框架中有大量的属性值和常量
这些属性值和常量可以定义在struts.xml文件中,但是最好还是定义在struts.properties
文件中,这样可以减轻struts.xml文件的压力。
在struts.properties文件中修改文件中的内容,可以实现对Struts2框架中配置参数的修改
就是我们在struts.properties文件中定义的参数可以将struts2文件默认的配置参数覆盖


struts.propertise文件内容必须严格遵照键值对的方式(Key-Value)

    例如:struts.custom.i18n.resources=globalMessage

 struts.propertise常见键值对:
struts.i18n.encoding

指定Web应用的默认编码集。如果需要获取中文请求参数值,可以将该属性值设置为GBK
或者GB2312

struts.custom.i18n.resource
指定Struts2应用所需要加载的国际资源文件。多个文件之间使用英文逗号隔开



(前俩个文件是在设置时经常用到的,一个是设置字符编码,一个是加载国际化资源文件)

struts.locale
指定Web应用的默认Locale

struts.configuration.files
指定Struts2默认加载的配置文件,多个文件之间用英文逗号隔开,其默认值为
“struts-default.xml,struts-plugin.xml,struts.xml”

struts.ui.theme
指定视图标签默认的视图主题,其默认值为xhtml

struts.i18n.reload
设置是否每次HTTP请求到达时,系统都重新加载资源文件,其默认值为false



struts-plugin.xml

内部配置文件core
插件配置文件
如果需在要Struts2框架中集成其他技术,就需要相应的插件配置文件

在该文件中定义了插件组件的包空间、拦截器和其他配置常量等
在Struts2框架包的lib文件夹下,除了包含Struts2核心包之外,还包括多个插件文件。
这些插件文件是以JAR压缩包的形式存在,文件包中包含有-plugin



Bean配置

在Struts2框架的配置文件struts.xml文件中,可以将配置内容分为3大类:
管理元素、用户请求处理元素和错误处理元素。在每种元素中可以包含不同的配置内容。

·管理元素
Bean配置、常量配置、包配置、命名空间配置、包含配置
·用户请求处理元素
拦截器配置、Action配置、Result配置
·错误处理元素
异常配置

Bean配置
struts-default.xml文件中,定义了大量的核心组件,这些核心组件不是直接以硬编码的形式
写在代码中,而是以自己的 依赖注入 容器来配置。

用户可以编写自己的组件实现类来扩展或者替换框架的某一部分,使用<bean>元素来描述组件实现类。
Bean配置:struts-default.xml



<bean>元素的相应属性
class     必选 指定Bean实例的实现类
name      非必选 指定Bean实例的名称,对于多个相同类型的多个Bean,其name属性值是不能相同的
type      非必选 指定Bean实例实现的Struts2规范,该规范通常是通过某个借口来实现的,
        因此该属性的值通常是一个Struts2接口。
        如果需要将Bean实例作为Struts2组件使用,则应该指定该属性值。
scope     非必选 指定Bean实例的作用域,属性值可以是default、singleton、
        rquest、session、或者thread中的一个
optional 非必选 指定是否是一个可选Bean
static 非必选 指定Bean是否使用静态方法注入。通常指定type属性时,该属性值不能指定为true


常量配置
在struts.xml文件中,通过<constant>元素配置常量(Constant),可以作为指定
Struts2属性的一种方式。而Struts2的常量既可以在struts.xml文件中配置也可以在struts.properties
文件中配置,实际上,在其他一些配置文件中也可以实现。


通常情况下,Struts2框架按照以下顺序加载Struts2 常量:
    内部·struts-default.xml    存放在struts2-core-x.x.x.jar文件中。
    内部·struts-plugin.xml    存放在truts2-xxx-x.x.x.jar等Struts2插件的jar文件中
    ·struts.xml     web应用中默认的Struts2配置文件
    ·struts.pr operties     Struts2的属性配置文件
    ·web.xml     web应用的配置文件

后面定义的常量的值将覆盖前面文件中定义的值


<constant>元素
name 指定常量名
value 指定常量的属性名
例如:
在struts.xml文件中,指定字符集编码为gb2312,代码如下:
    <constant name="struts.i18n.encoding" value="gb2312"/>
如果使用struts.properties文件实现上述常量的配置,代码如下:
    struts.i18n.encoding=gb2312
    struts.custom.i18n.resources=globalMessages
使用web.xml文件同样可以实现上述常量的配置
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>struts.i18n.encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>



包配置
在Struts2 框架中,其核心组件是Action和拦截器
该框架使用包来管理这些组件。在包中可以配置多个Action,多个拦截器或者多个拦截器引用的集合
使用<package>元素配置包时,可以指定4个属性

name 必选 指定包的名称,该名称是该包被其他包引用的key值
extends 非必选 指定该包继承的其他包
namespace 非必选 指定该包的命名空间
abstract 非必选 指定该包是否是一个抽象包,抽象包不能定义Action

在包中不可以配置常量



命名空间配置
(namespace)

如果一个Action类中有多个业务处理方法,而客户端请求需要指向不同的方法,这时Struts2以命名空间的
方式来管理这个Action。配置命名空间时,使用属性名为namespace
<package name="myPackage" extends="struts-default" namespace="/tmq">
<action name="login" class = "my.test.LoginAction">
<result name= "successs">welcome.jsp</result>
</action>
</package>

0 0
原创粉丝点击