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 ;