1.结果跳转
1>转发:dispatcher(默认)
<action name="demo1Action" class="com.imwj.action.demo1.demo1Action" method="execute">
<result name="success" type="dispatcher">/index.jsp</result>
</action>
2>重定向:redirect
<action name="demo2Action" class="com.imwj.action.demo1.demo1Action" method="execute">
<result name="success" type="redirect">/index.jsp</result>
</action>
3>转发到action:chain
<action name="demo3Action" class="com.imwj.action.demo1.demo1Action" method="execute">
<result name="success" type="chain">
<!-- action的名称-->
<param name="actionName">demo1Action</param>
<!-- action所在的namespace-->
<param name="namespace">/</param>
</result>
</action>
4>重定向到action:redirectAction
<action name="demo4Action" class="com.imwj.action.demo1.demo1Action" method="execute">
<result name="success" type="redirectAction">
<param name="actionName">demo1Action</param>
<param name="namespace">/</param>
</result>
</action>
2.struts中获得servlet
1>通过ActionContext(基本原理,后面两种方法的底层此方法)
//获取request => Map<String, Object>
Map<String, Object> request = (Map<String, Object>) ActionContext.getContext().get("request");
request.put("name", request);
2>通过ServletActionContext
//获得原生request
HttpServletRequest request = ServletActionContext.getRequest();
//获得原生response
HttpServletResponse response = ServletActionContext.getResponse();
3>实现*Aware接口
public class demo4Action extends ActionSupport implements ServletRequestAware,ServletResponseAware{}
3.如何获得参数
strutsMVC结构示意图
struts的Action生命周期:
每次请求到来时,都会创建一个新的Action实例,Action是线程安全的.可以使用成员变量接收参数
1>属性驱动获得参数
//准备与from参数名相同的属性名,并且创建set/get方法
private String name;
set/get方法
2>对象驱动
//准备一个实体类(set/get):实体里面的属性和from表单中一样,user.name
private User user;
3>模型驱动:实现ModelDriven<T>
//new一个实体类对象,实现接口中的方法
private User user = new User();
@Override
public User getModel() {
return user;
}
4>获得集合
//与form中名字一样的属性名,list、list[3]、map['test']
private List<String> list;
private Map<String,Object> map;
总结:
1.结果集
转发
重定向
转发Action
重定向Action
2.获得原生ServletAPI
ActionContext 数据中心
|-request
|-response
....
//获得ActionContext
ActionContext.getContext();
|-requestScope
|-sessionScope
|-attrs
//获得ActionContext中原生对象的工具类
ServletActionContext
|-request
|-response
3.参数封装
属性驱动
|-Action准备与参数键同名属性
对象驱动
|-Action准备与参数键同名属性. xxx.yyy
模型驱动
|- 1.实现ModelDriven接口
|- 2.实现getModel方法.返回需要封装参数的对象
4.复杂参数封装
List集合
提交键: list
list[index]
Map结合
提交键: map['key']