在struts1中,获得到系统的request或者session对象非常方便,都是按照形参传递的,但是在struts2中,request和session等都被隐藏了
主要使用的类:RequestMap,SessionMap,ApplicationMap, AttributeMap(可以获得所有作用域值),
接口:requestAware,ServletRequestAware,SessionAware,ApplicationAware分别实现不同的接口就可以得到上边相应类的对象,需要强转,还有ServletResponseAware接口获得响应对象,ParameterAware获得所有请求参数
struts提供两种方式访问session和request,其中比较常用的是利用SPRING里面所说的IOC即控制反转
IOC方式:
action类实现ServletRequestAware接口,并新建一个HttpServletRequest request
public class UserLoginAction extends ActionSupport implements ServletRequestAware{
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
然后可以生成的request得到对象,如request.getRemoteAddr()
action类实现SessionAware接口,并创建一个MAP对象session
public class UserLoginAction extends ActionSupport implements ServletRequestAware,SessionAware{
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
public void setSession(Map session) {
this.session=session;
}
非IOC方式
非Ioc方式
这种方式主要是利用了com.opensymphony.xwork2.ActionContext类以及org.apache.struts2.ServletActionContext类,具体的方法如下所示。
获得request对象:
A . HttpServletRequest request = ServletActionContext.getRequest ();
B.ActionContext ct= ActionContext.getContext()
HttpServletRequest request=
(HttpServletRequest)ct.get(ServletActionContext. HTTP_REQUEST );
C. ActionContext.getContext().put(HTTP_REQUEST, request);
or
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)context.get(StrutsStatics.HTTP_REQUEST);
获得session对象:
在Struts2中底层的session都被封装成了Map类型,我们称之为SessionMap,而平常我们所说的session则是指HttpSession对象,具体的获得方法如下所示。
A.Map session=ActionContext.getSession();
B.Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);
C.可以先获得请求,然后通过请求获得HttpSession
得到这个SessionMap之后我们就可以对session进行读写了,如果我们想得到原始的HttpSession可以首先得到HttpServletRequest对象,然后通过request.getSession()来取得原始的HttpSession对象。一般情况下SessionMap已经可以完成所有的工作,我们不必再去碰底层的session了。
注销:
if (session instanceof org.apache.struts2.dispatcher.SessionMap) {
try {
((org.apache.struts2.dispatcher.SessionMap) session).invalidate();
} catch (IllegalStateException e) {
logger.error(msg, e);
}
}
获得响应方式:
A. 通过Ioc方式,实现ServletResponseAware接口
B. ServletActionContext.getResponse();
C. (HttpServletResponse)ServletActionContext.get(ServletActionContext.HTTP_RESPONSE)
使用常量Key进行获取可以得到所有作用域对象及parameter,response对象。利用的就是Serv letActionServlet实现的接口:StrutsStatics和父类ActionContext中的常量key.
获得请求参数:
A. 通过Ioc方式:实ParameterAware接口。
Action中:private Map map
//重写接口方法
Public void setParameters(Map<String,String[]> parameters)
{
This.map= parameters;
}
B. Map parameters = ActionContext.getContext().getParameters();
C. ActionContext.getContext().get(ActionContext. pARAMETERS);
获得application
a. 通过Ioc方式:实ApplicationAware接口。
Action中:private ApplicationMap map
//重写接口方法
Public void setApplication(Map<String,Object> application)
{
This.map= application;
}
b.ActionContext.getContext().getApplication();
c.(ApplicationMap)ActionContext.getContext().get(ActionContext. APPLICATION);
d.通过前边的获得request,在通过request获得Application
pdf文件下载地址:
http://www.shaccp.com/images/student/STRUTS2获得作用域及参数响应对象及三种符号说明.pdf
分享到:
相关推荐
### STRUTS2获得作用域、参数响应对象及三种符号说明 #### 一、概述 在Struts2框架中,为了更好地管理Web应用程序中的请求、会话和应用范围的数据,Struts2提供了一系列的工具和机制。这包括了对`RequestMap`、`...
- **访问四大作用域中的数据:** Struts2提供了内置的标签库,结合OGNL可以让开发者方便地访问应用中的各种数据。 - **ValueStack与ActionContext:** - **ValueStack存在于Action上下文中:** 每次处理请求时,...
2. `HttpServletResponse`: HTTP servlet响应对象,可以设置响应状态码、头信息、输出内容等。 3. `ServletContext`: Servlet上下文信息,可以获取应用级别的配置和共享数据。 4. `ServletConfig`: Servlet配置对象...
标签在Struts2配置文件中起到了划分和组织Action的作用,类似于Java中的包(package)。它允许我们将具有相同功能或关联的Action归类在一起,解决Action命名冲突的问题。例如,我们可以为前端和后端分别创建名为...
- 当Struts2接收到请求后,会创建`ActionContext`、`ValueStack`以及`Action`对象,并将`Action`对象存入`ValueStack`,使得Action中的实例变量可以通过OGNL访问。 - `ValueStack`是多实例的,每个请求都有自己的`...
以下是对Struts2关键知识点的详细说明: **一、Struts2的作用** Struts2的主要目的是简化Java Servlet和JSP的开发,通过提供一套MVC设计模式的实现,使得开发者可以更专注于业务逻辑,而不是处理HTTP请求和响应的...
Struts2的核心是拦截器(Interceptor)机制,通过一系列可配置的拦截器来处理请求和响应。Struts2提供了丰富的内置拦截器,这些拦截器可以单独使用,也可以组合使用,以满足不同的业务需求。接下来将详细介绍Struts2...
一、Struts2的作用: Struts2的主要目的是简化Web应用的开发,通过提供一个可扩展的架构,帮助开发者组织和管理应用程序的业务逻辑、数据流和用户界面。它通过分离关注点,使得代码更加模块化,提高了可维护性和测试...
在IT行业中,Web开发是至关重要的领域,而Spring、Struts2和Hibernate是Java Web开发中的三大主流框架,常被组合使用以实现高效且灵活的业务逻辑处理。本篇文章将详细探讨这三大框架如何协同工作,实现数据的增删改...
### Struts2学习笔记知识点概览 #### 一、Struts的作用 - **核心功能**:Struts2框架的核心功能之一就是将业务逻辑与展示层分离,实现MVC(Model-View-Controller)架构模式。这有助于提高代码的可维护性、可扩展...
与`<jsp:include>`不同的是,资源的响应被存储到一个页作用域的bean中,而不是直接写入输出流。 **`<bean:include>`标记属性**: - **id**: 脚本变量和要定义的页作用域属性的名称。 - **page**: 内部资源。 - **...
Struts2是一个强大的MVC(Model-View-Controller)框架,它被广泛应用于Java Web开发中,以提高开发效率和代码可维护性。本笔记将深入探讨Struts2的核心概念、配置方法以及如何通过Action类与视图进行交互。 1. **...
2. **域模型(Domain Model)** - Domain Model是业务对象的实例,通常与数据库表相对应。Action中的成员变量可以直接引用Domain Model,方便数据的传递和持久化。 总的来说,Struts2.0提供了一套强大且灵活的机制来...
9. **Value Stack**:Value Stack中的值存储在request作用域中,Action中的变量默认由Struts2存入request,因此通常无需直接操作request和application。 10. **模块包含**:可以使用`<include>`标签将各个开发者...
数据在Web应用中存在四种作用域:page、request、session和application。Page作用域只在当前JSP页面内有效,request作用域覆盖一次HTTP请求的所有组件,session作用域在整个HTTP会话期间有效,application作用域在...
- **scope**:源Bean的作用域,默认从页作用域到应用程序作用域。 - **toScope**:目标Bean的作用域,默认为页作用域。 示例: ```jsp <!-- 定义一个Bean --> <!-- 复制源Bean到请求作用域 --> ``` ##### ...
### servlet与Struts2知识点梳理 #### 一、Servlet基础概念及实现方式 - **Servlet定义**:Servlet是一种运行在服务器端的小程序,用于处理客户端发送的HTTP请求,并生成相应的HTTP响应。它属于动态资源,可以被多...
Struts框架的核心配置文件`struts-default.xml`包含了框架的基本配置项,如别名(alias)、自动装配(autowiring)、链式调用(chain)、转换错误(conversionError)、会话创建(createSession)...-driven)、作用域(scope)等...