1.package配置
name属性: 定义一个包的名称,它必须唯一。
namespace属性: 与action标签的name属性联合使用来确定一个action的访问路径
extends属性: 指定继承自哪个包,一般值是struts-default, struts-default包是在struts-default.xml文件中声明的。
abstract属性:它代表当前包是一个抽象的,主要是用于被继承.
2.action配置
name属性: 与package的namespace联合使用来确定一个action的访问路径
class属性: 用于指示当前访问的action类
method属性: 用于指示当前的action类中的哪个方法执行
注: 如果action配置中的class及method未找到,就会执行ActionSupport类中的execute方法,这个方法的默认返回值是"success" . 同理,如果class指向的action类继承了ActionSupport类并重写了execute方法,则method默认会执行对应action类中的execute方法.
3.result配置
name属性: 与action类的method方法的返回值进行匹配,来确定跳转路径
type属性: 用于指定跳转方式,
dispatcher请求转发(默认值).针对jsp页面
redirect请求重定向.针对jsp页面
chain,类似于请求转发,但它针对于action跳转
redirectAction, 类似于重定向,但针对于action
4.简单示例:
<package name="p1" extends="struts-default">
<action name="" class="" method="">
<result name="">/ </result>
<result name="" type="">/</result>
</action>
</package>
5.一些补充
(1)使用*通配符简化action配置
适用于相同action类下的不同method的action配置问题,原则上不建议使用过多的*号,它带来程序阅读障碍,不便于理解.
示例:
<action name="product_*" class="com.web.action.ProductAction" method="{1}"></action>
method后面的{1}会获取到第一个*号传来的值.
在浏览器输入http://localhost:8080/项目名/product_add ,调用的就是add方法.
在浏览器输入http://localhost:8080/项目名/product_del ,调用的就是del方法.
在浏览器输入http://localhost:8080/项目名/product_find ,调用的就是find方法.
(2)在<package>下创建全局result,全局result面向当前package下的所有action配置
当action类的方法返回值在action配置中匹配不到result的时候,,就会去package下找全局result.
(3)在struts.xml文件中常见的定义常量
<constant name="struts.i18n.encoding" value="UTF-8"/> 可以帮助我们解决post请求乱码问题
<constant name="struts.action.extension" value="action"/> 指定访问struts2框架路径的扩展名
<constant name="struts.devMode" value="true">配置这项后,它会提供更加详细报错信息,以及在struts.xml文件修改后不在需要重启服务器