struts2获得servlet对象的2种方式

前言: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;
 }
}

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值