一、struts.xml定义Bean的作用:
1.创建该Bean的实例,将该实例作为Struts2框架的核心组件使用。
2.Bean包含的静态方法需要一个值注入。很方便地允许不创建某个类的实例,却可以接受框架常量。通常需要设置static=“true”。通常,当指定了type属性时,该属性不应该制定为true。
可以参考core包里的struts-default.xml文件。
二、struts2常量的配置
1.通常在struts.xml文件中定义struts2属性,当然也可以在struts.properties文件中配置,还可以在web.xml文件中配置Struts2常量。
2.struts2框架按如下搜索顺序加载struts2常量:
(1)、struts-default.xml:该文件保存在struts2-core-2.0.6.jar文件中。
(2)、struts-plugin.xml:该文件保存在struts2-Xxx-2.0.6.jar等Struts2插件jar文件中。
(3)、struts.xml:该文件是Web应用默认的Struts2配置文件。
(4)、struts.properties:该文件是Web应用默认的Struts2配置文件。
(5)、web.xml:该文件是Web应用的配置文件。
如果在多个文件中配置了同一个Struts2常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值。
配置Struts2常量必须要指定的两个属性:常量name和常量value。
struts.xml文件通过constant元素来配置常量。
struts.properties文件的内容是系列的key-value对,key对应Struts2常量name,value对应value。
web.xml文件中配置struts2常量,可通过<filter>元素的<init-param>子元素指定,每个<init-param>元素配置了一个Struts2常量。
三、包的配置
1.配置包是,必须指定name属性,这个属性是其他包引用该包的key。除此之外,还可以指定一个可选的extends属性,extends属性值必须死另一个包的name属性,指定extends属性表示让该包继承其他包,子包可以继承一个或多个父包中的拦截器、拦截器栈、action等配置。
2.抽象包,含义:该包不能包含Action定义,显示指定:为该package元素增加abstract=“true”属性。
3.namespace属性,包的命名空间。默认命名空间为""。当某个包指定了命名空间后,该包下所有的Action处理的URL应该是命名空间+Action名。例:访问/book命名空间下的action为:http://localhost:8080/namespace(应用程序名)/book(action所在包对应的命名空间)/book.action(action名)。另外还可以显示指定根命名空间,通过设置某个包的namespac=“/"来指定命名空间。
注意:如果该命名空间下没该Action,那么系统就会直接访问默认命名空间下的Action,不会访问其他的action,如果没有,则出错。
四、包含配置
Struts2默认只加载WEB-INF/classes下的struts.xml文件,我们可以通过struts.xml文件来包含其他配置文件。例:在<struts />跟目录下配置<include .../> 元素来完成。<struts>....<include file="com.bbs.model.struts-user.xml" />....</struts>
五、拦截器配置
拦截器其实就是AOP(面向切面编程)的编程思想。拦截器允许在Action处理之前,或者处理结束之后,插入开发者自定义的代码。
定义拦截器栈必须先定义组成拦截器栈的多个拦截器。Struts2把拦截器栈当成拦截器处理,因此拦截器和拦截器栈都放在<interceptors.../>元素中定义。