Struts2环境配置
- 导入Struts2所需要的jar包
- 在WEB-INF/classes(src)目录下创建struts.xml文件
- 在web.xml文件中添加Struts过滤器信息
常用配置文件
- struts.xml:用于存放Action映射关系、设置Struts配置信息
- web.xml:用于配置容器的Struts过滤器,一般配置如下:
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
- struts-default.xml:Struts2的默认配置信息,一般不建议修改
- default.properties:Struts2的默认设置信息,同样不建议修改
Struts2的核心功能,一般由两部分组成:struts.xml的Action映射和使用Java编写的Action实体类。在struts.xml中通常使用<action>、<result>、<package>等一系列标签完成Action的映射,它们的属性分别有:
- package
属性
是否必须
描述
name
是
包名,作为其它包应用本包的标记
extends
否
设置本包继承其它包
namespace
否
设置包的命名空间
abstact
否
设置为抽象包
- action
属性
是否必须
描述
name
是
请求的Action名称
class
否
Action处理类对应具体路径
method
否
指定Action中的方法名
converter
否
指定Action使用的类型转换器
- result
属性
是否必须
描述
name
否
Action返回视图名称,默认为success
type
否
返回结果类型,默认为dispatcher
<package name="admin" extends="struts-default">
<action name="welcome" class="struts.action.WelcomeAction">
<result>/welcome.jsp</result>
</action>
</package>
Action实体类需要继承ActionSupport类并且重写他的execute的方法(或者其他的方法,无参返回String类型并且与action标签中method属性对应即可),并且返回与result标签name属性对应的字符串。与上面配置对应的实体类为:
public class WelcomeAction extends ActionSupport {
public String execute() {
return SUCCESS;
}
}
动态方法调用(DMI)
一个Action中仅能配置一个method在实际应用中十分不方便,Struts2支持在url中指定调用Action类的不同方法,格式为"Action名!方法名"。在使用此功能前需要在struts.xml中添加如下代码开启DMI:
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
之后在Action类中添加返回值为String类型的对应方法即可轻松调用。
通配符(wildcard)
Struts2支持通配符操作,使得在需要配置大量action时通过约定格式减少工作量,它的用法是使用"*"代替容易变换的单词,然后用{n}取出,n代表第n个通配符。例如一个程序需要有4个Action,名称分别为DogAction、CatAction、BirdAction和FishAction。如果按照之前的方法则需要配置4个action映射关系,但是使用通配符后只需要下面一个action即可:
<action name="buy*" class="struts.action.{1}Action">
<result>/pay.jsp</result>
</action>
通配符的作用域非常广,通过action的name可以改变method、class和result的结果等。经常使用可以节约许多时间,但是需要事先约定好格式。