Strtus2通常情况下使用以下两种方式来访问上述三种对象,即Servlet API解藕和耦合的访问方式。
1.Servlet API解藕方式:
Struts2分别对Request、Session和Application三个对象封装成了三个Map对象,直接使用封装好的Map对象来读取和保存数据。可以通过com.opensymphony.xwork2.ActionContext类来得到这三个对象。
ActionContext是Action执行的上下文,保存了很多对象如parameters、request、session、 application和locale等。通过ActionContext类获取Map对象的方法为:
ActionContext context=ActionContext.getContext(); --得到Action执行的上下文
Map request=(Map)context.get("request");--得到HttpServletRequest的Map对象
Map session=context.getSession();--得到HttpSession的Map对象
Map application=context.getApplication();--得到ServletContext的Map对象
除了利用ActionContext来获取request、session和application对象这种方式外,Action类还可以实现某些特定的接口,让Struts 2框架在运行时向Action实例注入 request、session和application对象。这种方式也就是IOC方式,与之对应的三个接口和它们的方法如下所示:
public class SampleAction implements Action,
RequestAware, SessionAware, ApplicationAware
{
private Map request;
private Map session;
private Map application;
@Override
public void setRequest(Map request)
{this.request = request;}
@Override
public void setSession(Map session)
{this.session = session;}
@Override
public void setApplication(Map application)
{this.application = application;}
}
2.Servlet API耦合方式:
直接访问Servlet API将使你的Action与Servlet环境耦合在一起,要直接获取HttpServletRequest和ServletContext对象,可以使用org.apache.struts2.ServletActionContext类,该类是ActionContext的子类。通过 ServletActionContext类获取三个对象的方法为:
HttpServletRequest request = ServletActionContext.getRequest();--得到HttpServletRequest对象
HttpSession session = request.getSession();--得到HttpSession对象
ServletContext context = ServletActionContext.getServletContext();--得到ServletContext对象
除了上述的方法调用得到HttpServletRequest和ServletContext对象外,还可以调用ActionContext对象的 get()方法,传递ServletActionContext.HTTP_REQUEST和 ServletActionContext.SERVLET_CONTEXT键值来得到HttpServletRequest和 ServletContext对象,如下所示:
ActionContext ctx= ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
HttpSession session = request.getSession();
ServletContext context = (ServletContext)ctx.get(ServletActionContext.SERVLET_CONTEXT);
转载自:http://zzyths.iteye.com/blog/660415
分享到:
相关推荐
在Struts2中,有四种主要的方式可以用来操作request、session和application上下文中的数据。这篇内容将深入探讨这四种方法,并结合源码和实用工具来帮助理解。 1. **ActionContext**: Struts2的核心组件...
在Struts2中,访问request、session和application对象是进行数据共享和传递的重要手段。这篇学习笔记主要探讨了如何在Struts2框架下有效地利用这三种域对象。 首先,request对象代表一次HTTP请求,它存储的数据仅...
在 Struts2 中,处理用户请求时经常需要使用到 Servlet 的内置对象,比如 Request、Session 和 Application,这些对象可以帮助开发者存储和获取数据。然而,在实际应用中,为了避免代码与 Servlet API 过度耦合,...
在Struts2框架中,理解并正确使用request、response、session和application范围对于有效地管理数据和状态至关重要。这些范围帮助我们在Web应用程序中实现逻辑和数据流的分离,提高代码的可维护性和可扩展性。通过...
在Struts2中,访问Web资源,如application、session和request,是常见的操作,这有助于实现数据共享和传递。本示例代码将帮助开发者更好地理解和运用这些功能。 一、Application域对象 Application域对象在所有用户...
总结来说,Struts2提供了多种途径来让Action访问request、response和session,开发者可以根据实际需求和偏好选择合适的方法。无论是通过ActionContext、依赖注入还是拦截器,都能够在Action中灵活地操作这些关键的...
在Struts2中,ActionContext不仅仅是获取request和response的工具,它还包含了其他有用的上下文信息,如session、application等。例如,你可以通过ActionContext获取session中的数据: ```java Map, Object> ...
`AttributeMap`是一个特殊的类,它可以用来获取所有作用域内的值,包括`request`、`session`和`application`范围内的数据。 #### 三、接口实现 为了能够访问这些作用域,Struts2提供了几个接口,开发者可以根据...
通过对Struts2中不同作用域下的对象操作的学习,我们可以更好地管理应用程序的数据流和状态。合理地利用请求范围、会话范围以及应用程序范围可以极大地提高Web应用的性能和用户体验。希望以上内容能帮助大家更好地...
4. 命名对象:包括在Servlet作用范围内的对象信息,如Request、Session、Application等。 在实际开发中,开发者可以通过OGNL表达式访问值栈中的Action属性、对象和其他信息。例如,使用标签可以输出Action中的属性...
本文总结了Struts2的常用方法和经验,涵盖了配置问题、EL表达式、Struts2的架构和Namespace等方面的知识点。 一、配置问题 Struts2的最新版本为GA 2.2.1,需要以下几个类库: 1.commons-fileupload-1.2.1.jar 2....
它有内置对象如request、response、session、application等,方便处理HTTP请求和响应。 - **EL(Expression Language)**:EL简化了在JSP中获取和设置属性值的方式,无需编写Java脚本,使得JSP更加简洁。 - **JSTL...
2.修改题目1,将提交的“用户名信息”保存到request中,“密码信息”保存到session中,而“用户是否已经注册的判定信息”保存在application中,并在显示页面中,分别从request、session和application中获取数据并...
ValueStack是Struts2框架中的核心概念,它是一个对象栈,包含了Action对象、模型对象以及不同作用域的固定名称对象(如#application、#session、#request等)。值栈使得标签库可以直接访问对象,而不需要在视图层和...
该类可以模拟获取 request、session 和 application 的 Map 对象。常用的方法包括: * static ActionContext getContext() : 静态方法,获取 ActionContext 实例 * Object get(Object key) : 类似于 request....
总的来说,ActionContext是Struts2框架处理请求上下文的核心,而OGNL则提供了灵活的数据访问和操作能力,两者结合使得Struts2能够高效地处理请求,实现模型和视图的解耦,提高Web应用的可维护性和可扩展性。
在这个“Struts2五种数据封装Demo”中,我们将深入探讨Struts2的数据封装机制,以及如何通过配置文件来操作Servlet的三大核心对象——Request、Session和Application。同时,我们还将了解如何从表单中获取数据并进行...
2. **ServletActionContext类**:这是ActionContext的一个扩展,提供了更方便的访问Servlet相关对象的方法,如`ServletActionContext.getRequest()`和`ServletActionContext.getResponse()`分别用于获取...
在Struts2中,通常会将Action对象设置为根对象(root),而其他Web域对象(如request, session, application)则作为非根对象进行管理。 - **根对象(root)与非根对象**:根对象在获取数据时不需要加上`#`符号,而非根...