struts.xml 文件
struts.xml 是 Struts2 最核心最常用的配置文件,下面详细介绍一下 struts.xml 中的元素和配置
package 元素
struts2 的配置文件中引入了面向对象的思想,使用了分包管理。易于管理动作类,便于模块化开发动作类
package 元素的属性
name:包的名称,必须写,并且名称唯一
extends:继承自哪个基础包,通常继承 struts-default 包
struts-default.xml 中定义着 struts-default 包
struts-default.xml 是在 struts.xml 之前加载的
abstract:把包声明为抽象包,抽象包就是用来被继承的
只要没有
namespace:命名空间。【访问路径 = 命名空间 + 动作名称】
namespace 详解
namespace 的默认取值是一个“”,不需要写 /
1 | <package name="p2" extends="struts-default" namespace="/user"> |
如果有两层命名空间,查找规则是从后向前查找
action 元素
配置动作,处理请求路径
action 元素的属性
name:动作名称,同一个命名空间下要求名称唯一
class:动作类全路径名
method:动作类中的方法名,默认是 public String execute()
方法的要求:
1.public 的
2.返回值必须是 String
3.没有参数
动作类 Action 的写法
####动作类的第一种写法
直接写一个 Action 类,不需要继承任何类,然后在 struts.xml 中配置
Action 类:
1 | package com.web.action; |
struts.xml:
1 | <package name="p1" extends="struts-default" namespace="/a"> |
####动作类的第二种写法
写一个实现 Action 接口的动作类,然后实现 execute 方法
Action 类:
1 | package com.web.action; |
struts.xml:
1 | <package name="p1" extends="struts-default" namespace="/a"> |
Action 接口中有一些静态常量:SUCCESS,NONE,ERROR,INPUT,LOGIN,可以直接在返回值中使用
动作类的第三种写法(推荐)
写一个继承 ActionSupport 类的 Action 类
ActionSupport 是实现 Action 接口定的类
Action:
1 | package com.web.action; |
struts.xml:
1 |
|
默认动作类
struts-default.xml 中定义了默认动作类和方法
默认的动作类就是 com.opensymphony.xwork2.ActionSupport 这个类
struts.xml
1 | <default-class-ref class="com.web.action.HelloAction"></default-class-ref> |
result 元素
为动作指定结果试图
result 元素的属性
name:逻辑视图的名称,对应着动作方法的返回值,默认值是 success
type:结果类型,指的就是用什么方式转到定义的页面,默认是 dispather 转发
dispatcher:使用请求转发,转向一个页面
redirect:使用重定向,转向一个页面
chain:转发到另一个相同或不同命名空间的动作
redirectAction:重定向到相同或不同命名空间的动作
result 元素中的 param 子元素
在转发或者重定向到不同包下的动作时,都要用到 result 元素的子元素 param
param 元素的作用:依赖注入
通过 struts-default.xml 中的 resultTypes 元素中配置可以看出,每个结果试图都是靠一个类来实现的
param 元素就是将配置参数注入到该类中
调用的事i对应类的 setter 方法进行注入
1 | <package name="p5" extends="struts-default" namespace="/demo"> |