Struts2配置文件
Struts2框架有很多个配置文件,分别用于配置不同的内容,其中部分是Struts框架默认的配置文件,开发者不能修改。在项目执行时,Struts2框架有序的加载所有配置文件。
1.1 Struts2配置文件的加载顺序
在Struts2中,如果两个配置文件中对同一属性进行了配置,则后加载的配置文件中的配置会覆盖先加载的配置文件中的配置。
Struts2配置文件的加载顺序:
default.properties
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
其中,前三个是默认配置文件,进行开发时不需要关心。struts.xml是由用户定义的,是Struts2的核心配置文件,用来配置Action以及Struts2常量。struts.properties由用户定义,用来配置Struts2常量。web.xml用来配置Struts2的核心过滤器(必须)及Struts2常量。
1.2 Struts2配置Action
Struts2的核心配置文件是一个名称固定的文件:struts.xml。该文件主要用来配置Action类和对应的请求关系,还可以用来配置常量
一个简单的struts.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="demoProject" extends="struts-default" namespace="/">
<action name="ActionDemo1" class="com.mvc.action.ActionDemo1">
<result name="success">/WEB-INF/jsp/view.jsp</result>
</action>
</package>
</struts>
1.1.1 package元素配置
Struts2框架的核心组件是Action和拦截器,Struts2使用包将Action和拦截器进行分类管理,其原理类似于java中的包,主要作用就是避免类重名,同时方便进行调用,易于扩展。
在struts.xml文件中,package元素用于定义包
package元素的常用属性:
属性 | 含义 |
---|---|
name | 必须,指定包名,包之间可以通过包名调用 |
namespace | 可选,定义包的名称空间,和name属性一同决定了Action类的位置 |
extends | 可选,该属性用来配置包的父包,子包可以继承父包中的Action定义,拦截器定义,通常配置为struts-default,使自定义的包具有Struts框架默认的拦截器功能 |
abstract | 可选,指定该包是否是一个抽象包,抽象包中不能包含Action定义 |
1.1.2 action元素配置
Action映射是Struts2框架中的基本“工作单元”,Action映射就是将一个请求的URL映射到一个Action类,Action来完成请求的处理。
在struts.xml文件中,使用action元素来配置Action
action元素的常用属性:
属性 | 含义 |
---|---|
name | 必须,指定与Action对应的URL请求 |
class | 可选,指定与Action对应的Action实体类,需要配置java类的全路径 |
method | 可选,指定请求方法,如果不指定此属性,则执行默认的名称为execute的方法 |
converter | 可选,指定类型转换器的实体类 |
1.3 Struts2常量的配置
开发者可以通过配置Struts2常量灵活的选择Struts2中的一些功能。Struts2中的常量都在Struts2的默认配置文件default.properties中进行了配置,开发者进行的重新配置会覆盖默认配置。
Struts2常量的配置的配置方式有3种:1)在struts.xml文件中使用constant元素配置。2)在struts.properties文件中配置。3)在web.xml文件中通过init-param元素配置
1.在struts.xml文件中配置
在struts.xml文件中使用constant元素配置常量,constant有两个属性,name和value,分别用来指定常量的名称和常量的值。例:
<struts>
<constant name="struts.devMode" value="false" />
<constant name="struts.objectFactory" value="spring"/>
</struts>
2.在struts.properties文件中配置
struts.properties是一个properties格式的文件,按照key-value的方式配置常量,key即常量名,value即常量值。例:
struts.devMode=false
struts.objectFactory=spring
3.在web.xml文件中配置
在核心过滤器StrutsPrepareAndExecuteFilter的配置中可以添加init-param元素来配置常量。例:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>struts.devMode</param-name>
<param-value>false</param-value>
</init-param>
</filter>