Strtus2——request、response等内置对象的获取方式

【注意】:我们需要知道后两种方法得到的是Map<String,Object>,而后两种方式得到的才是真正的request等对象。而Map就是把request对象中的属性取出做成了键值对而已。

方法一:使用ServletActionContext获取——servlet 相关的 非IoC 取得Request等对象的方式——这种方法可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息

public class StudentAction extends ActionSupport implements ModelDriven<Student> {
	private Student student;
	private HttpServletRequest request;
	private HttpServletResponse response;
	private ServletContext application;
	private HttpSession session;
	public StudentAction(){
		request=ServletActionContext.getRequest();
		response=ServletActionContext.getResponse();
		session=request.getSession();
		application=session.getServletContext();
	}
	public String execute(){
		request.setAttribute("student", student);
		session.setAttribute("student", student);
		application.setAttribute("student", student);
		return Action.SUCCESS;
		
	}
	@Override
	public Student getModel() {
		student=new Student();
		return student;
	}
}


方法二:实现ServletRequestAware,ServletResponseAware接口——servlet 相关的 IoC 取得Request等对象的方式——这种方法也可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。
但是取出方法是通过接口进行实现,也就是由struts2的container来设定

public class StudentAction2 extends ActionSupport implements ModelDriven<Student>,ServletRequestAware,ServletResponseAware {
	private Student student;
	private HttpServletRequest request;
	private HttpServletResponse response;
	private ServletContext application;
	private HttpSession session;
	public String execute(){
		request.setAttribute("student", student);
		session.setAttribute("student", student);
		application.setAttribute("student", student);
		return Action.SUCCESS;
	}
	@Override
	public Student getModel() {
		student=new Student();
		return student;
	}
	@Override
	public void setServletResponse(HttpServletResponse arg0) {
		this.response=arg0;
	}

	@Override
	public void setServletRequest(HttpServletRequest arg0) {
		this.request=arg0;
		session=this.request.getSession();
		application=session.getServletContext();
	}
}

方法三:Map键值对方式,通过ActionContext获得——servlet 不相关的 非IoC 取得Request等对象的方式——这种方法先取得ActionContext,然后获取Map类型的request等对象

public class StudentAction3 extends ActionSupport implements ModelDriven<Student> {
	private Student student;
	private Map<String,Object> request;
	private Map<String,Object> session;
	private Map<String,Object> application;

	public StudentAction3(){
		request=(Map<String, Object>) ActionContext.getContext().get("request");
		session=ActionContext.getContext().getSession();
		application=ActionContext.getContext().getApplication();
	}
	public String execute(){
		request.put("student", student);
		session.put("student", student);
		application.put("student", student);
		return Action.SUCCESS;
	}
	@Override
	public Student getModel() {
		student=new Student();
		return student;
	}
}

方法四:继承RequestAware,SessionAware,ApplicationAware接口——servlet 不相关的 IoC 取得Request等对象的方式——这种方法,是实现特定的接口,由container来设定request等对象

public class StudentAction4 extends ActionSupport implements ModelDriven<Student>,RequestAware,SessionAware,ApplicationAware {
	private Student student;
	private Map<String,Object> request;
	private Map<String,Object> session;
	private Map<String,Object> application;
	public String execute(){
		request.put("student", student);
		session.put("student", student);
		application.put("student", student);
		return Action.SUCCESS;
		
	}
	@Override
	public Student getModel() {
		student=new Student();
		return student;
	}
	@Override
	public void setApplication(Map<String, Object> arg0) {
		application=arg0;
	}

	@Override
	public void setSession(Map<String, Object> arg0) {
		session=arg0;
	}

	@Override
	public void setRequest(Map<String, Object> arg0) {
		request=arg0;
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值