Struts2配置
Struts2加载顺序
- default.properties
- struts-default.xml
- struts-plugin.xml
- struts.xml
- struts.properties
- web.xml
- 后配置常量的值会覆盖先配置常量的值
package :“包” 为了更好的管理action的配置
属性:
- name:包的名称,只要在一个项目中不重复即可
- extends:设置继承哪个包,通常设置为Struts-default(默认),Struts-default中定义很多结果类型和很多拦截器,继承这些之后,action才有这些功能。
- namespace:name(在action的属性中)+namespace共同决定了访问的路径,不设置的话,在地址中间添加任意值都可访问到本地址。
- abstract:抽象的,专用于其他包的继承,如果设置这个属性则该包无法被访问。
action
属性:
- name:与namespace共同决定访问路径
- class: Action类全路径
- method:执行Action中对应方法的方法名,默认为execute方法
- converter:用作自定义类型转换器,一般不设置,内部提供的转换器已经够用
常量配置
- 在Struts2中的default.properties中提供了很多的常量
- struts.i18n.encoding= UTF-8-----------Post请求中文乱码不用处理
- struts.action.extension = action[,(两个逗号)] ----------扩展名可.action或者不写
- 修改常量的值(struts.xml)
在<pacgage></package>中加入<constant></constant>:
常量在default-properties中可以找到
<package>
<constant name="" value=""></constant>
</package>
include
- 在一个配置文件中引入其他配置文件
<include file="配置文件全路径"/>
附
- 将资源配置单独放到一个文件中的方法(之前一直都是将资源配置文件放在src文件目录下的):
- 1).在工程中新建名为resource的文件夹
- 2).右键选择:Mark Directory as —>Resources Root(这步骤操作很重要)
Action访问执行
Action类的写法
- 1.Action类是pojo的类(写一个普通的类实现execute方法)
- 2.创建一个类实现Action的接口
例子:
public class ChildrenAction implements Action{
public class execute(){
//执行的操作
return “XXXX”;
}
}
- 3.Action类继承ActionSupport类(最常用)
ActionSupport当中提供了很多功能,数据校验,国际化的操作等一系列操作方法
代码示例:
public Action extends ActionSupport{
public string execute(){
//执行的操作
return " XXX";
}
}
ACtoin类的方法
method访问(示例):
- 1.编写jsp文件
<a href="xxx.action">xxx</a>
- 2.在配置文件中添加(或者新建一个配置文件,然后在使用引入)
<action name="xxxx" class="访问的方法的全路径" method="执行类中的方法名"></action>
- 3.创建类并添加上面所设置的方法
- 以上方法存在的问题是,如果有多个发送请求(a标签中的action,对应不同的方法时)就会写多个在struts.xml的package中。
通配符
解决method方法繁杂的问题
- 示例:
- jsp
<a href="xxx_add.action">添加</a>
<a href="xxx_delete.action">删除</a>
<a href="xxx_update.action">修改</a>
<a href="xxx_find.action">查找</a>
- struts.xml
<package name="method2" extends="struts-default">
<!--将所要添加的方法名拿出来设置为全局变量,这样所有的action就都能访问的到了-->
<global-allowed-methods>add,delete,update,find</global-allowed-methods>
<!--通过统配符设置 {1}代表第一个*-->
<action name="xxx_*" class="com.helong.struts2.MethodAction" method="{1}">
<!--设置允许的方法 如果其他的action也要使用的话就可以设置为全局变量-->
<allowed-methods>add,delete,update,find</allowed-methods>
</action>
</package>
动态访问的方法示例
- 1.设置jsp文件
<a href="xxx!add.action">添加</a>
<a href="xxx!delete.action">删除</a>
<a href="xxx!update.action">修改</a>
<a href="xxx!find.action">查找</a>
- 2.struts2.xml或外部文件用include引入
<struts>
<!--默认情况不支持动态方法访问 -->
<!--做常量的修改struts.enable.DynamicMethodInvocation = false 为false 的时候不支持动态访问-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<package name="method3" extends="struts-default">
<action name="xxx" class="com.helong.struts2.MethodAction">
<!--如果其他的action要使用的话,就可以将方法设置为全局变量-->
<allowed-methods>add,delete,update,find</allowed-methods>
</action>
</package>
</struts>