下面獲取的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
等同於調用HttpServletRequest的getAttribute(String name)方法session
返回一個Map對象,該對象模擬了該應用的ServletContext實例。app
這是個靜態方法 獲取系統的ActionContext實例ide
獲取全部的請求參數,相似於調用HttpServletRequest對象的getParameterMap()方法this
返回一個Map對象,該對象模擬了HttpSession 實例spa
傳入一個Map實例,將Map實例的key-value轉換成application的屬性名-值。code
傳入一個Map實例,將Map實例的key-value轉換成application的屬性名-值。對象
HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession();
該類提供了以下幾種方法:
獲取PageContext對象。
獲取HttpServletRequest對象。
獲取HttpServletResponse對象。
獲取ServletContext對象。
Struts2提供了以下幾個接口用於獲取Servlet API:
實現該接口的Action能夠直接訪問Web應用的ServletContext實例。
實現該接口的Action能夠直接訪問Web應用的ServletRequest實例。
實現該接口的Action能夠直接訪問Web應用的ServletRsponse實例。
獲取的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; } }