struts2-02Servlet

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>转发到actionchain

<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>重定向到actionredirectAction

<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']

猜你喜欢

转载自blog.csdn.net/langao_q/article/details/82193993
今日推荐