Struts2配置详解
1、配置文件的加载顺序
1.1、加载时机
struts2有很多配置文件,如下面的表格:
当应用被tomcat加载的时候,struts2的配置文件就已经被加载过了。
1.2、加载顺序
顺序 | 配置文件名 | 所在位置 | 说明 |
---|---|---|---|
1 | default.properties | struts2-core-2.3.33.jar\org\apache\struts2 | 无法修改 |
2 | struts-default.xml | struts2-core-2.3.33.jar | 无法修改 |
3 | struts.xml | 我们的应用中 | 可以修改 |
4 | struts.properties | 我们的应用中 | 可以修改 |
5 | web.xml | 我们的应用中 | 可以修改 |
1.3、default.properties的默认配置
配置 | 说明 |
---|---|
struts.i18n.encoding=UTF-8 | 国际化 |
struts.action.extension=action, | 默认访问的后缀名 |
struts.devMode = false | 是否是开发模式,开发模式:改了配置文件,不需要重启,建议开发阶段开启,设置为true |
1.4、修改struts2的访问后缀
有三种方式:1、在struts.xml的配置文件中添加如下代码:
<constant name="struts.action.extension" value="do"></constant>
2、在src下创建struts.properties,并添加如下代码:
struts.action.extension=do
如果使用第二种配置方式,会覆盖struts.xml中的配置。
3、在web.xml中配置,代码如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>struts.action.extension</param-name>
<param-value>do</param-value>
</init-param>
</filter>
1.5、配置struts2的开发模式
在struts.xml的配置文件中添加如下代码:
<constant name="struts.devMode" value="true"></constant>
将value值设置为true,开启了struts2的开发模式;
2、配置文件的主要元素
2.1、package元素
作用:在struts2的配置文件中引入了面向对象思想,使用了分包管理。易于管理动作类。便于模块化开发动作类。
属性:
属性名 | 说明 |
---|---|
name | 包名,唯一 |
extends | 需要继承struts-default包 |
abstract | 把包声明为抽象包,抽象包是用来被继承的,只要是没有action元素的包,就可以声明为抽象包 |
namespace | 命名空间,访问路径=命名空间+动作名称 |
namespace详解:
namespace的默认取值是一个""
注意:默认值不是/,写自定义的namespace时需要加/ ,例如:
<package name="p1" extends="struts-default" namespace="/user">
<action name="hello" class="com.fu.controller.HelloAction" method="sayHello">
<result name="success">/success.jsp</result>
</action>
</package>
访问路径为http://localhost:8080/Struts2/user/hello.do
2.2、action元素
作用:配置动作,处理请求路径
属性:
属性名 | 说明 |
---|---|
name | 动作名称,唯一 |
class | 动作类全名:包名+类名 |
method | 动作类中的方法名称,方法有三个要求:1、必须是public;2、返回值必须是String;3、方法没有参数 |
动作类的第一种写法:
(1)、写个Action类,不需要继承任何类,然后在struts.xml中配置。
//Action类
public class HelloAction {
public String sayHello(){
System.out.println("Hello World");
return "success";
}
}
Struts.xml配置文件:
<package name="p1" extends="struts-default" namespace="/user">
<action name="hello" class="com.fu.controller.HelloAction" method="sayHello">
<result name="success">/success.jsp</result>
</action>
</package>
访问路径:http://localhost:8080/Struts2/user/hello.do
2.3、result元素
作用:为动作提供结果视图
属性:
name:逻辑视图的名称,对应着动作方法的返回值。默认值是success
type:结果类型,指的就是用什么方式转到定义的页面。默认是dispatcher转发。
<package name="p1" extends="struts-default" namespace="/user">
<action name="hello" class="com.fu.controller.HelloAction" method="sayHello">
<result name="success" type="dispatcher">/success.jsp</result>
</action>
</package>
result中type类型:
dispatcher :(默认值)使用请求转发,转向一个页面。
redirect :使用重定向,转向一个页面。
chain: 转发到另一个相同名称空间的动作
redirectAction: 重定向到另一个相同名称空间的动作
redirect重定向:
chain :转发到同一个名称空间的动作
redirectAction :重定向到同一个名称空间的动作