1.结果跳转方式
(1)转发
<action name ="Demo1Action" class ="cn.itheima.a_result.Demo1Action" method ="execute" >
<result name ="success" type ="dispatcher" > /hello.jsp</result >
</action >
(2)重定向
<action name ="Demo2Action" class ="cn.itheima.a_result.Demo2Action" method ="execute" >
<result name ="success" type ="redirect" > /hello.jsp</result >
</action >
(3)转发到Action
<action name ="Demo3Action" class ="cn.itheima.a_result.Demo3Action" method ="execute" >
<result name ="success" type ="chain" >
<param name ="actionName" > Demo2Action</param >
<param name ="namespace" > /</param >
</result >
</action >
(4)重定向到Action
<action name ="Demo4Action" class ="cn.itheima.a_result.Demo4Action" method ="execute" >
<result name ="success" type ="redirectAction" >
<param name ="actionName" > Demo1Action</param >
<param name ="namespace" > /</param >
</result >
</action >
2.访问ServletAPI方式
(1)原理
(2)通过ActionContext
public class Demo5Action extends ActionSupport {
public String execute () throws Exception {
ActionContext.getContext().put("name" , "requestTom" );
Map<String, Object> sessionScope = ActionContext.getContext().getSession();
sessionScope.put("name" ,"sessionTom" );
Map<String, Object> applicationScope = ActionContext.getContext().getApplication();
applicationScope.put("name" , "applicationTom" );
return "success" ;
}
}
(3)通过ServletActionContext
public class Demo6Action extends ActionSupport {
public String execute () throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
ServletContext servletContext = ServletActionContext.getServletContext();
return "success" ;
}
}
(4)通过实现接口方式
public class Demo7Action extends ActionSupport implements ServletRequestAware {
private HttpServletRequest request;
public String execute () throws Exception {
System.out.println("原生Request:" +request);
return "success" ;
}
public void setServletRequest (HttpServletRequest request ) {
this .request = request;
}
}
3.如何获得参数
(1)扩展
1.strutsMVC
2.Action生命周期
每次请求到来时,都会创建一个新的Action实例
Action是线程安全的.可以使用成员变量接收参数
(2)属性驱动获得参数
<form action ="${pageContext.request.contextPath }/Demo8Action" >
姓名:<input type ="text" name ="name" /> <br >
年龄:<input type ="text" name ="age" /> <br >
生日:<input type ="text" name ="birthday" /> <br >
<input type ="submit" value ="提交" >
</form >
public class Demo8Action extends ActionSupport {
private String name;
private Integer age;
private Date birthday;
public Demo8Action () {
System.out.println("Demo8Action被创建" );
}
public String execute () throws Exception {
System.out.println("name的属性值:" +name+",age的参数值" +age+",生日" +birthday);
return "success" ;
}
(3)对象驱动
<form action ="${pageContext.request.contextPath }/Demo8Action" >
姓名:<input type ="text" name ="name" /> <br >
年龄:<input type ="text" name ="age" /> <br >
生日:<input type ="text" name ="birthday" /> <br >
<input type ="submit" value ="提交" >
</form >
package cn.itheima.c_param;
import com.opensymphony.xwork2.ActionSupport;
public class Demo9Action extends ActionSupport {
private User user;
public String execute () throws Exception {
System.out.println(user);
return "success" ;
}
public User getUser () {
return user;
}
public void setUser (User user) {
this .user = user;
}
}
(4)模型驱动
<form action ="${pageContext.request.contextPath }/Demo8Action" >
姓名:<input type ="text" name ="name" /> <br >
年龄:<input type ="text" name ="age" /> <br >
生日:<input type ="text" name ="birthday" /> <br >
<input type ="submit" value ="提交" >
</form >
package cn.itheima.c_param;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class Demo10Action extends ActionSupport implements ModelDriven <User >{
private User user = new User();
public String execute() throws Exception {
System.out.println(user);
return "success" ;
}
public User getModel() {
return user;
}
}
4.集合类型参数封装
(1)list
<form action="${pageContext.request.contextPath }/Demo11Action" >
list :<input type ="text" name="list" /><br>
list :<input type ="text" name="list[3]" /><br>
<input type ="submit" value ="提交" >
</form>
private List < String > list ;
(2)map
map:<input type ="text" name="map['lijisheng']" /><br>
private Map < String ,String > map ;