1.为action创建多个方法进行对应,可以减少Action类的数量,不能减少配置的数量
<!-- action可以配置多个方法,减少了action类的数量,不能减少配置的数量-->
<action name="user_add" class="org.sgcc.meng.action.UserAction" method="add">
<result name="success">/WEB-INF/User/add.jsp</result>
</action>
<action name="user_addInput" class="org.sgcc.meng.action.UserAction" method="addInput">
<result name="success">/WEB-INF/User/addInput.jsp</result>
</action>
<action name="user_list" class="org.sgcc.meng.action.UserAction" method="list">
<result name="success">/WEB-INF/User/list.jsp</result>
</action>
2.可以写一个action,之后通过调用的时候判断调用哪个方法
调用方式:在url后边增加”!method” 或者“?method:methodName”
user|add
user?method:list
<!-- 设置action,通过调用时确定是哪个方法 -->
<action name="user" class="org.sgcc.meng.action.UserAction">
<result name="add">/WEB-INF/User/add.jsp</result>
<result name="addInput">/WEB-INF/User/addInput.jsp</result>
<result name="list">/WEB-INF/User/list.jsp</result>
</action>
此方法减少了action的配置,但是依然增加了大量通配符的配置
3.基于通配符的配置
开发中一般使用通配符的方式进行访问
访问的时候
User_add.action
<!-- 基于通配符的配置开发中常用 -->
<action name="*_*" class="org.sgcc.meng.action.{1}Action" method="{2}">
<result name="success">/WEB-INF/{1}/{2}.jsp</result>
</action>
二、常量的配置
可以通过标签来设置一些常量的配置,这些常量可以通过struts的jar包来查询
通常配置访问路径
<!-- 访问后缀为action,do -->
<constant name="struts.action.extension" value="action,do"></constant>
<!-- 修改struts文件不用重新启动 -->
<constant name="struts.configuration.xml.reload" value="true"></constant>
三、全局结果集配置
<package name="default" namespace="/" extends="struts-default">
<global-results>
<result name="error">/error.jsp</result>
</global-results>
四、参数传递
1.通过在action中添加属性,实现get和set方法
private String userName;
private String password;
public String add(){
return "success";
}
public String addInput(){
return "r_list";
}
public String list(){
this.password="123";
this.userName="张三";
return "success";
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
2.通过ActionContext.getContext().put(),完成值的传递
注意:在页面使用s:property访问数据的时候需要加#,在2.3之后如果ActionContext中的数据类型为String时不用加#
ActionContext.getContext().put("aaa", 1234567);
ActionContext.getContext().put("bbb", 1234);
//页面取值
// <s:property value="#aaa"/>--------<s:property //value="#bbb"/>
3.使用servlet的Api来传值
ServletActionContext.getRequest().setAttribute("name", "张三");
//<s:property value="#request.name"/>