一、Struts2的配置文件类型
struts-default.xml----位于struts2-core-2.1.8.文件的org.apache.struts2包中
struts-plugin.xml-----位于struts2提供的各个插件的包中
struts.xml------------Web应用默认的Struts配置文件
struts.properties-----Struts框架中属性配置文件
web.xml---------------此文件是web应用的web.xml文件中,在此文件中也可以放置Struts2框架的一些信息
二、Struts的包配置
<struts>
<!--声明包-->
<package name="user" extends="struts-default" namespace="/user">
...
</package>
</struts>
name:声明包的名称,以方便在其他处引用此包,此属性是必需的
extends:用于声明继承的包,也就是它的“父”包
namespace:指定名称空间,也就是访问此包下的Action需要访问的路径
abstract:将包声明为抽象类型(包中不定义action)
三、名称空间配置
在配置文件struts.xml的包声明中,使用“namespace”属性进行声明。指定名称空间值需要以“/”开头,否则找不到Action对象的地址。
四、Action相关配置
<action name="userAction" class="com.lyq.action.userAction" method="save">
<result>success.jsp</result>
</action>
配置文件中的<action>元素用于建立Action对象的映射,通过<action>元素可以指定Action请求地址及处理后的映射页面
name:用于配置Action对象被请求的URL映射
class:指定Action对象的类名
method:设置请求Action对象时,调用Action对象的哪一个方法
converter:指定Action对象类型转换器的类
UserAction.java
public class UserAction extends ActionSupport {
private static final long serialVersionUID = 1L;
// 添加用户信息
public String save() throws Exception{
return SUCCESS;
}
// 更新用户信息
public String update() throws Exception{
return SUCCESS;
}
public String delete() throws Exception{
return SUCCESS;
}
public String find() throws Exception{
return SUCCESS;
}
}
调用一个Action对象,默认情况下,它执行的是execute()方法,如果需要请求指定的方法,可以通过<action>元素的method属性进行配置。
struts.xml
<!--添加用户-->
<action name="userAction" class="com.lyq.UserAction" method="save">
<result>success.jsp</result>
</action>
<!--w修改用户-->
<action name="userAction" class="com.lyq.UserAction" method="update">
<result>success.jsp</result>
</action>
<!--删除用户-->
<action name="userAction" class="com.lyq.UserAction" method="delete">
<result>success.jsp</result>
</action>
<!--查询用户-->
<action name="userAction" class="com.lyq.UserAction" method="find">
<result>success.jsp</result>
</action>
五、通配符实现简化配置
在Struts2的配置文件struts.xml中,常用的通配符主要有两个-----------通配符“*”与通配符“/”。
通配符“*”匹配0或多个字符
通配符“/”是一个转义字符,如果匹配“/”,则使用“/”进行匹配
<struts>
<package name="myPackage" extends="struts-default" namespace="/">
<action name="add" class="com.lyq.action{1}AddAction">
<result name="success">/success.jsp</result>
<result name="input">/input.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
六、返回结果的配置
(1)浏览器请求Action
(2)Action执行execute()
(3)Action查找视图(根据struts.xml)
(4)struts.xml返回视图给Action
(5)Action回应浏览器
<action>
<!--结果映射-->
<result>/user/Result.jsp</result>
<!--结果映射-->
<result name="error">/user/Error.jsp</result>
<!--结果映射-->
<result name="input">/user/Input.jsp</result>
</action>
<result>元素有两个属性,分别为name属性、type属性。其中。name属性用于指定Result的逻辑名称,它与Action对象中方法返回值相对应,
如execute()方法返回值为“input”,那么就将<result>元素的name属性配置为“input”对应Action对象返回值。<result>元素的type属性用于设置返回结果的类型,如请求转发、重定向等。
如果不设置<result>元素的name属性,默认情况下,它的值为“success”