struts2框架中的IoC

学习三大框架,对spring中的IoC和DI并不陌生,但是对struts2中的IoC你又知道多少呢!

现将学习过程的一点小结拿来与大家分享!

在struts2的Action中如何取得request ,session,application呢!

(一)取得Map类型的request,session,application

    实现RequestAware,SessionAware,Application接口,通过IoC取得Map类型。示例如下:

package com.bjsxt.action;

import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction1 extends ActionSupport implements RequestAware,
		SessionAware, ApplicationAware {
	// 声明username属性
	private String username;
	// 声明request属性
	private Map<String, Object> request;
	// 声明session属性
	private Map<String, Object> session;
	// 声明 application属性
	private Map<String, Object> application;

	// 重写execute方法,这里并没有使用ServletActionContext.getRequest()来获得request对象,这是因为实现了ServletRequestAware
	public String execute() throws Exception {
		request.put("req", "i am request arrt!!");
		session.put("session", "i am session attr");
		application.put("application", "i am application");
		return SUCCESS;
	}

	// Username的get方法
	public String getUsername() {
		return username;
	}

	// Username的set方法
	public void setUsername(String username) {
		this.username = username;
	}

	// 重写 RequestAware中的方法
	@Override
	public void setRequest(Map<String, Object> request) {
		// TODO Auto-generated method stub
		this.request = request;

	}

	// 重写 SessionAware中的方法
	@Override
	public void setSession(Map<String, Object> session) {
		// TODO Auto-generated method stub
		this.session = session;

	}

	// 重写 ApplicationAware中的方法
	@Override
	public void setApplication(Map<String, Object> application) {
		// TODO Auto-generated method stub
		this.application = application;
	}

}

   

(二)取得真实类型的HttpServletRequest,HttpSession,ServletContext

    实现ServletRequestAware,ServletContextAware接口,通过IoC取得真实类型。示例如下:

package com.bjsxt.action;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction1 extends ActionSupport implements ServletRequestAware,ServletContextAware {
	//声明username属性
	private String username;
	//声明request属性
	HttpServletRequest request;
	//声明session属性
	HttpSession session;
	//声明 application属性
	ServletContext application;

	// 重写execute方法,这里并没有使用ServletActionContext.getRequest()来获得request对象,这是因为实现了ServletRequestAware
	public String execute() throws Exception {
		request.setAttribute("req", "i am request arrt!!");
		request.getSession().setAttribute("session", "i am session attr");
		application.setAttribute("application", "i am application");
		return SUCCESS;
	}
	//Username的get方法
	public String getUsername() {
		return username;
	}
	//Username的set方法
	public void setUsername(String username) {
		this.username = username;
	}
	//重写ServletContext中的方法
	@Override
	public void setServletContext(ServletContext application) {
		// TODO Auto-generated method stub
		this.application = application;
	}
	//重写ServletRequest中的方法
	@Override
	public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request = request;
	}

}

 

你可能感兴趣的:(struts2框架中的IoC)