struts2获得servlet对象的2种方式

原创 2012年03月27日 14:16:22

前言:struts2的Action里面放弃了request  response 等servlet API,使得业务层更加独立。但是有时候需要这些servlet对象,如用request获得session,用response向cookie对象中写数据等,如下为获得这些对象的两种方式:

 

方式一,通过ServletActionContext获得:

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

 

public class LoginAction extends ActionSupport {

 

public String login() {

  // 获取 request、response
  HttpServletRequest request = ServletActionContext.getRequest();
  HttpServletResponse response = ServletActionContext.getResponse();

  // 将帐号放到 session 中
  HttpSession session = request.getSession(true);
  session.setAttribute("account", account);

  // 获取web应用根目录下 /upload 文件夹
  ServletContext context = ServletActionContext.getServletContext();
  File uploadFile = new File(context.getRealPath("upload"));

  return execute();
 }

}

方式二,利用相关的接口获得:ServletContextAware  servletRequestAware  ServletResponseAware SessionAware

import java.util.Map;

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

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;
import org.apache.struts2.util.ServletContextAware;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class ServletAwareAction extends ActionSupport implements
  ServletRequestAware, ServletResponseAware, SessionAware,
  ServletContextAware {

 private static final long serialVersionUID = -2489850710438755365L;

 private ServletContext application;
 private HttpServletRequest request;
 private HttpServletResponse response;
 private Map session;

 public void setServletRequest(HttpServletRequest request) {
  this.request = request;
 }

 public void setServletResponse(HttpServletResponse response) {
  this.response = response;
 }

 public void setSession(Map sessionValues) {
  this.session = sessionValues;
 }

 public void setServletContext(ServletContext application) {
  this.application = application;
 }

 public String execute() {

  String upload = application.getRealPath("upload");
  
  request.getRemoteAddr();
  response.getContentType();
  session.get("account");

  return Action.SUCCESS;
 }
}

 

 

 

 

 

 

 

 

 

相关文章推荐

struts中的action和Action类以及struts2中如何在Action类中获得servlet api的域对象

1.Struts2的学习中大家都会遇到action和与action对应的Action类,那么什么是action什么是action对应的Action类呢? 例如struts.xml的配置文件如下: ...

Struts2访问Servlet API的三种方式

有时我们需要用到Request, Response, Session,Page, ServletContext这些我们以前常用的对象,那么在Struts2中怎么样使用到这些对象呢,通常有三种方式。 ...

struts2的Action访问Servlet的几种方式和全局result

一.取得Map类型的request,session,application 1.属性 request:private Map request = (Map) ActionContext.getCon...

Struts2访问Servlet的三种方式

Struts2访问Servlet的三种方式 基本介绍      在Struts2中,Action并没有直接和Servlet API耦合。虽然Struts2 中的Action访问Servlet AP...

Struts2 与Servlet API解耦,耦合的访问方式

提供学习帮助,知己知彼,百战不殆
  • wazqw
  • wazqw
  • 2016年11月13日 11:38
  • 98

struts2的servlet的API的三种方式

Servlet的API的访问. Servlet的API的访问:(三种方式)1.完全解耦合的方式:(ActionContext)ActionContext的方法: * Map getParam...

Struts2中访问Servlet API的几种方式

Struts2中访问Servlet API的几种方式
  • VipMao
  • VipMao
  • 2016年04月12日 12:48
  • 1553

Struts2的Action访问Servlet API的方式

1. ActionContext 在Struts2开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话 (Session)的一...

Struts2获取Servlet API的两种方式

一、IoC方式 在Struts2中,所有请求都会被StrutsPrepareAndExecuteFilter拦截,然后去struts.xml寻找相印的action,在action执行...

Struts2引用Servlet API中的对象,request、response或session

记下来省得再忘了。在Struts1.x中通过 public ActionForward execute(ActionMapping mapping, ActionForm form,      Htt...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2获得servlet对象的2种方式
举报原因:
原因补充:

(最多只允许输入30个字)