一、struts 2 基础---3.struts.xml的配置

struts.xml的配置

1.struts.xml概述

struts.xml 为Struts 2的核心配置文件。struts.xml中主要配置Struts项目的一些全局的属性,用户请求和响应Action之间的对应关系,以及配置Action中可能用到的参数,以及处理结果的返回页面。还包括各种拦截器的配置等。

struts.xml的DTD(Document Type Definition)描述如下:


name CDATA #REQUIRED
extends CDATA #IMPLIED
namespace CDATA #IMPLIED
abstract CDATA #IMPLIED
externalReferenceResolver NMTOKEN #IMPLIED
>


name CDATA #REQUIRED
class CDATA #REQUIRED
default (true|false) "false"
>


name CDATA #REQUIRED
class CDATA #REQUIRED
>


name CDATA #REQUIRED
>


name CDATA #REQUIRED
>


name CDATA #REQUIRED
>


name CDATA #REQUIRED
>


name CDATA #REQUIRED
class CDATA #IMPLIED
method CDATA #IMPLIED
converter CDATA #IMPLIED
>


name CDATA #REQUIRED
>


name CDATA #IMPLIED
type CDATA #IMPLIED
>


name CDATA #IMPLIED
exception CDATA #REQUIRED
result CDATA #REQUIRED
>


file CDATA #REQUIRED
>


type CDATA #IMPLIED
name CDATA #IMPLIED
class CDATA #REQUIRED
scope CDATA #IMPLIED
static CDATA #IMPLIED
optional CDATA #IMPLIED
>


name CDATA #REQUIRED
value CDATA #REQUIRED
>

2.Bean 配置

在struts.xml文件中定义Bean时,通常有以下两个作用:

⑴创建该Bean的实例,将该实例作为Struts 2框架的核心组建使用。

例2.1

Name=”myfactory” class=”com.company.myapp.MyObjectFactory”/>

⑵Bean包含的静态方法需要一个值注入。

这种用法可以很方便地允许不创建某个类的实例,却可以接受框架常量。

在这种方法下,通常需要设置static=”true”。(有些类似static方法:不用创建类实例就可以调用类的static方法。)

例2.2

元素在struts.xml文件中的属性:

l class:必填属性,指定Bean实例的实现类。

l type:可选属性,指定Bean实例实现的Struts 2规范,该规范通常是通过某个接口来实现的,因此该属性的值通常是一个Struts 2接口。如果需要将Bean实例作为Struts2组件使用,则应该指定该属性。

l name:可选属性,指定Bean实例的名字,对于有相同type类型的多个Bean,则他们的name属性不能相同。

l scope:可选属性,该属性指定Bean的作用域。属性值可以是defaultsingletonrequestsessionthread其中之一。

l static:该属性指定Bean是否使用静态方法注入。通常而言,当指定了type属性时,该属性不应该指定为true

l optional:可选属性,该属性指定该Bean是否是一个可选Bean

3.常量配置

Struts2的常量在web.xml、struts.xml、struts.properties等多处都可以配置。其加载顺序如下:

l struts-default.xml:该文件保存在struts2-core-2.0.x.jar文件中。

l struts-plugin.xml:该文件保存在struts-xxx-2.0.x.jar文件中。

l struts.xml:这个就不多说了。

l struts.properties:如上。

l web.xml:同上。

Struts2中的配置:

例3.1:

与之等效的struts.properties文件配置如下:

#配置国际化文件

struts.custom.i18n.resources= globalMessage

contant元素的属性:

l name::指定常量的name

l value:指定常量的value

4.包配置

Struts2框架中核心组件就是Action,拦截器等,Struts2框架使用包来管理Action和拦截器等。每个包就是多个Action、多个拦截器、多哥拦截器应用的集合。

package元素的属性:

l name :必填属性,指定该包的名字,此名是该包被其他包应用的Key

l extends:可选属性,该属性指定该包继承其他包。可继承其他包的action、拦截器、拦截器栈等。

l namespace:可选属性,指定该包的命名空间。

l abstract:可选属性,指定该包是否为一个抽象包。抽象包中不能包含Action定义。

例4.1:

<struts>

<constantname="struts.custom.i18n.resources"value="globalMessages"/>

<constantname="struts.i18n.encoding"value="GBK">constant>

<packagename="lee"extends="struts-default">

<interceptors>

<interceptorname="myfilter"class="lee.BeforeResultInterceptor">

<paramname="name">方法过滤拦截器param>

interceptor>

interceptors>

<actionname="login"class="lee.LoginAction"method="Login">

<resultname="error">/error.jspresult>

<resultname="success">/welcome.jspresult>

<interceptor-refname="defaultStack"/>

<interceptor-refname="myfilter">

<paramname="name">改变后的拦截器param>

<paramname="excludeMethods">executeparam>

interceptor-ref>

action>

package>

struts>

5.命名空间配置

同一个Web应用有可能需要出现同名的Action,所以Struts2中以命名空间的方式来管理Action。同一个命名空间里不能有同名的Action,不同的命名空间里可以有同名的Action。

Struts2不支持给单独的Action设置命名空间,而是通过包指定namespace属性来为包下面的所有Action指定共同的命名空间。

例5.1:

/login.jsp

/error.jsp

/success.jsp

/login.jsp

/success.jsp

若项目的根目录为webroot,则两个Action的URL为:

http://localhost:8080/webroot/Login.action

http://localhost:8080/webroot/book/GetBooks.action

[注]默认命名空间里的Action可以处理任何模式下的Action请求。如上例如果GetBooks在book下没有找到,则会在默认命名空间里找,如果在默认命名空间还找不到就回报错。

6.包含配置

在实际项目中要配置的信息比较多,通常分成多个配置文件,然后吧它们加载到struts.xml中。

例6.1:

7.拦截器配置

拦截器的具体内容将单独介绍。例子可参照本文的例4.1。

你可能感兴趣的:(ssh)