struts2的action中获得request response session 对象

在struts2中有两种方式可以得到这些对象

1、非IoC方式

要获得上述对象,关键Struts 2中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前Action的上下文对象。有了这个对象我们想获得其他几个对象就好办了

ActionContext ctx = ActionContext.getContext(); 
Map session = ctx.getSession(); 
细心的朋友可以发现这里的session是个map对象在Struts2中底层的session都被封装成了Map类型我们可以直接操作这个map 进行对session的写入和读取操作而不用去直接操作HttpSession对象

另外,org.apache.struts2.ServletActionContext作为辅助类(Helper Class),可以帮助您快捷地获得这几个对象。

HttpServletRequest request = ServletActionContext.getRequest(); 
HttpServletResponse response = ServletActionContext.getResponse(); 
HttpSession session = request.getSession(); 
如果你只是想访问session的属性(Attribute),你也可以通过ActionContext.getContext().getSession()获取或添加session范围(Scoped)的对象。

2、IoC方式(这种方式在tapestry中也是这样实现的)
要使用IoC方式,我们首先要告诉IoC容器(Container)想取得某个对象的意愿,通过实现相应的接口做到这点。具体实现

publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
private String message; 
private Map att; 
private HttpServletRequest request; 
private HttpServletResponse response;

public String getMessage() {
return message; 
}

publicvoid setSession(Map att) {
this.att = att; 
}

publicvoid setServletRequest(HttpServletRequest request) {
this.request = request; 
}

publicvoid setServletResponse(HttpServletResponse response) {
this.response = response; 
}

@Override
public String execute() { 
att.put("msg", "Hello World from Session!");

HttpSession session = request.getSession();

StringBuffer sb =new StringBuffer("Message from request: "); 
sb.append(request.getParameter("msg")); 
sb.append("
Response Buffer Size: "); 
sb.append(response.getBufferSize()); 
sb.append("
Session ID: "); 
sb.append(session.getId());

message = sb.toString(); 
return SUCCESS; 
}
}

在struts.xml的action中配置拦截器

<interceptor-ref name="servletConfig"></interceptor-ref>

时间: 2024-12-07 21:39:45

struts2的action中获得request response session 对象的相关文章

在Struts2的Action中获得request response session几种方法

转载自~ 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式.分别为servlet 不相关的 非IoC 取得Request等对象的方式servlet 不相关的 IoC 取得Request等对象的方式servlet 相关的 非IoC 取得Request等对象的方式servlet 相关的 IoC 取得Request等对象的方式以下分别叙述.首先请看struts.xml文件文

struts2在action中获取request、session、application,并传递数据

如果只是通过request.session.application传递数据,则不需要获取相应的对象也可以传递数据,代码如下: ScopeAction.java: package com.itheima.action; import com.opensymphony.xwork2.ActionContext; public class ScopeAction { public String execute() { /* * 我们这里不通过字段(添加setXXX.getXXX方法)传递数据,我们想着

Action中取得request,session的四种方式

在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式.分别为servlet 不相关的 非IoC 取得Request等对象的方式servlet 不相关的 IoC 取得Request等对象的方式servlet 相关的 非IoC 取得Request等对象的方式servlet 相关的 IoC 取得Request等对象的方式以下分别叙述. 首先请看struts.xml文件文件内容:

关于在Struts2的action中直接使用response的异步问题

如果我们项目中使用了struts2,在使用ajax和后端程序进行通讯时,我们常常为了简单采用以下的方法: ActionContext ac = ActionContext.getContext(); HttpServletResponse response = (HttpSevletResponse)ac.get(StrutsStatics.HTTP_RESPONSE); response.setContentType("text/html;charset=utf-8"); try {

在struts2的action中操作域对象(request、session)

在struts2的Action中,操作域对象一共有三种方式: 1.ActionContext(与servelt API无关联): 1 //相当于request 2 ActionContext.getContext().put("userName", user.getUserName()); 3 //相当于session 4 ActionContext.getContext().getSession().put("userName", user.getUserName

【JAVA学习】struts2的action中使用session的方法

尊重版权:http://hi.baidu.com/dillisbest/item/0bdc35c0b477b853ad00efac 在Struts2里,如果需要在Action中使用session,可以通过下面两种方式得到1.通过ActionContext class中的方法getSession得到2.Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作 下面先看一个采用第一种方式,在action中得到sessi

9.Struts2在Action中获取request-session-application对象

为避免与Servlet API耦合在一起,方便Action类做单元测试. Struts2对HttpServletRequest.HttpSession.ServletContext进行了封装,构造了三个Map对象来替代这三种对象. 注意,这三个对象与Servlet API中的三个对象是相同的. 即,在Action中放入Session中信息,在JSP页面中是可以读出来的. 方式一:通过使用ActionContext类获取 在Struts2框架中,通过Action的执行上下文类ActionConte

在Struts2的Action中取得请求参数值的几种方法

把参数放到作用域里面去. 如:action 中: request.setAttribute("参数名","值");   页面上:  request.getAttribute("参数名"); request.getParameter()方法完全可以获得URL参数,检查下是否参数名写错 你使用的是不是BaseAction.如果就是server.getRequest().getParameter() 看看你的控件是不是 name 属性!如果id的话就获

Struts2 的Action中取得请求参数值的几种方法

Struts2 的Action中取得请求参数值的几种方法 先看GetRequestParameterAction类代码: Java代码 public class GetRequestParameterAction extends ActionSupport { private String bookName; private String bookPrice; public String getBookName() { return bookName; } public void setBook