Action類中獲取servlet api

一 經過ActionContext類獲取

下面獲取的request和session都是map對象java

ActionContext actionContext = ActionContext.getContext();
Map<String, Object> request = actionContext.getContextMap();
Map<String, Object> session = actionContext.getSession();

或者還有一種方式apache

HttpServletRequest request = (HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
HttpSession session = request.getSession();

該類提供了以下幾種方法:api

Object get(Object key)

等同於調用HttpServletRequest的getAttribute(String name)方法session

Map getApplication()

返回一個Map對象,該對象模擬了該應用的ServletContext實例。app

static ActionContext getContext()

這是個靜態方法 獲取系統的ActionContext實例ide

Map getParameters()

獲取全部的請求參數,相似於調用HttpServletRequest對象的getParameterMap()方法this

Map getSession()

返回一個Map對象,該對象模擬了HttpSession 實例spa

void setApplication(Map application)

傳入一個Map實例,將Map實例的key-value轉換成application的屬性名-值。code

void setSession(Map session)

傳入一個Map實例,將Map實例的key-value轉換成application的屬性名-值。對象

 

二 經過ServletActionContext類獲取

HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();

該類提供了以下幾種方法:

static PageContext getPageContext()

獲取PageContext對象。

static HttpServletRequest getRequest()

獲取HttpServletRequest對象。

static HttpServletResponse getResponse()

獲取HttpServletResponse對象。

static ServletContext getServletContext()

獲取ServletContext對象。

 

三 經過實現相應接口獲取

Struts2提供了以下幾個接口用於獲取Servlet API:

ServletContextAware

實現該接口的Action能夠直接訪問Web應用的ServletContext實例。

ServletRequestAware

實現該接口的Action能夠直接訪問Web應用的ServletRequest實例。

ServletResponseAware

實現該接口的Action能夠直接訪問Web應用的ServletRsponse實例。

SessionAware,RequestAware,ApplicationAware

獲取的session、request、application都是map對象。

package cn.iborder.action;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
import cn.iborder.entity.User;


public class UserAction2 extends ActionSupport implements ServletRequestAware{
	private User user;
	//獲取servlet api
	private HttpServletRequest request;
    private HttpSession session;
    private ServletContext application;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String login() {
		System.out.println("用戶:"+user.getUserName());
		System.out.println("密碼:"+user.getPassword());
		session.setAttribute("userName", user.getUserName());
		return "success";
	}
	
	public String logout() {
		System.out.println(session.getAttribute("userName")+"成功註銷");
		session.removeAttribute("userName");
		return "logout";
	}

	@Override
	public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request=request;
        this.session=request.getSession();
        this.application=session.getServletContext();
	}
}

或者

package cn.iborder.action;

import java.util.Map;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

import cn.iborder.entity.User;

/**
 * Struts2提供了以下幾個接口使Action能夠直接訪問到Servlet API:
 * 1:ServletContextAware:實現該接口的Action能夠直接訪問Web應用的ServletContext實例
 * 2:ServletRequestAware:實現該接口的Action能夠直接訪問Web應用的ServletRequest實例.
 * 3:ServletResponseAware:實現該接口的Action能夠直接訪問Web應用的ServletRsponse實例.
 */
public class UserAction4 extends ActionSupport implements  SessionAware,RequestAware,ApplicationAware{
	private User user;
	//獲取servlet api
	private Map<String, Object> request;
    private Map<String, Object> session;
    private Map<String, Object> application;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String login() {
		System.out.println(this.getClass().getSimpleName());
		System.out.println("用戶:"+user.getUserName());
		System.out.println("密碼:"+user.getPassword());
		session.put("userName", user.getUserName());
		return "success";
	}
	
	public String logout() {
		System.out.println(session.get("userName")+"成功註銷");
		session.remove("userName");
		return "logout";
	}

	@Override
	public void setApplication(Map<String, Object> applicate) {
		// TODO Auto-generated method stub
		this.application = applicate;
	}

	@Override
	public void setRequest(Map<String, Object> request) {
		// TODO Auto-generated method stub
		this.request = request;
	}

	@Override
	public void setSession(Map<String, Object> session) {
		// TODO Auto-generated method stub
		this.session = session;
	}
}
相關文章
相關標籤/搜索