struts.xml:
<action name="user_addInput"
class="org.zttc.struts01.action.UserAction"
method="addInput">
<result name="success">/WEB-INF/user/addInput.jsp</result>
</action>
<action name="user_add"
class="org.zttc.struts01.action.UserAction"
method="add">
<result name="success">/WEB-INF/user/add.jsp</result>
</action>
<action name="user_list"
class="org.zttc.struts01.action.UserAction"
method="list">
<result name="success">/WEB-INF/user/list.jsp</result>
</action>
<!-- 可以为一个Action写多个方法进行对应,这样可以减少Action的数量,但是无法减少配置的数量 -->
java:
package org.zttc.struts01.action;
/**import导包省略*/
public class UserAction {
private String username;
private String password;
public String execute(){
System.out.println("Hello Struts2!");
return "success";
}
public String addInput(){
System.out.println("UserAction addInput()");
return "success";//基于通配符
}
public String add(){
return "success";//基于通配符
}
public String list(){
System.out.println("UserAction list()");
return "success";//最简单配置
}
/**getter和setter方法省略*/
}
方案2:
struts.xml
<!-- 以下方式可以仅仅写一个Action,之后通过在调用的时候确定方法
例如: http://localhost:8080/Java8_struts2/user?method:add配置有问题
http://localhost:8080/Java8_struts2/user!add不支持
这种方法虽然减少了Action的配置,但是依然增加了大量的result-->
<action name="user"
class="org.zttc.struts01.action.UserAction">
<result name="addInput">/WEB-INF/User/addInput.jsp</result>
<result name="add">/WEB-INF/User/add.jsp</result>
<result name="list">/WEB-INF/User/list.jsp</result>
</action>
方案3:
struts.xml
<!-- 下面这种还不足以应对所有的类,即通用性不高
访问方法:http://localhost:8080/Java8_struts2/user_add.action
http://localhost:8080/Java8_struts2/user_add-->
<action name="user_*"
class="org.zttc.struts01.action.UserAction"
method="{1}">
<result name="addInput">/WEB-INF/User/addInput.jsp</result>
<result name="add">/WEB-INF/User/add.jsp</result>
<result name="list">/WEB-INF/User/list.jsp</result>
</action>
方案4:struts.xml
<!-- 基于通配符,提高通用性,第一个*为第一个参数(类的名称),第二个*为方法
访问方法:http://localhost:8080/Java8_struts2/User_add.action
http://localhost:8080/Java8_struts2/User_add -->
<action name="*_*"
class="org.zttc.struts01.action.{1}Action"
method="{2}">
<result>/WEB-INF/{1}/{2}.jsp</result>
</action>
方案5:有时候控制器想要临时跳转到一个随便的地址
java:
public String login(){
if(username.equals("admin")){
ActionContext.getContext().getSession().put("isAdmin",true);
}
ActionContext.getContext().getSession().put("loginUser",username);
System.out.println("LoginAction login() username="+username);
//基于Action转发
ActionContext.getContext().getSession().put("url","/user_Article_add.action");
return "redirect";
}
struts.xml:
<!-- 基于通配符,提高通用性,第一个*为第一个参数(类的名称),第二个*为方法
访问方法:http://localhost:8080/Java8_struts2/User_add.action
http://localhost:8080/Java8_struts2/User_add -->
<action name="*_*"
class="org.zttc.struts01.action.{1}Action"
method="{2}">
<result name="redirect">${ur}</result>
</action>