`
hulunberbus
  • 浏览: 894101 次
文章分类
社区版块
存档分类
最新评论

Struts 2读书笔记-----Action访问Servlet API

 
阅读更多

Action访问Servlet API

Struts2中的Action并没有和任何Servlet API耦合,这样框架更具灵活性,更易测试。

对于Web应用的控制器而言,不访问ServletAPI是几乎不可能的。Web应用中通常需要访问的ServletAPI就是HttpServletRequest、HttpSession和ServletContext,这三个接口分别代表JSP中内置对象中的request、session、application。

Struts 2提供了一个ActionContext类,Struts 2的action可以通过该类来访问Servlet API

ActionContext类提供了一个静态方法getContext(),该方法返回一个ActionContext的实例。该实例提供了一些访问Servlet API的方法。

方法名

功能描述

getContext()

静态方法,获取系统的ActionContext实例

getSession()

返回一个Map对象,该对象存入HttpSession实例。

setSession(Map session)

直接传入一个Map实例,将该map实例总得key、value对应转换成session的属性名、属性值

getApplication()

返回一个Map对象,该对象存入ServletContext实例

setApplication()

直接传入一个Map实例,将实例中的key、value对应转换成application的属性名、属性值

getParameters()

获得所有请求参数。类似于调用HttpServletRequest对象的getParameterMap方法

ActionContext将在Action类中通过ActionContext访问Servlet API,该Action中示范了向request、session、application范围设置属性值。

struts 2即可以彻底与Servlet API 分离,从而可以允许该脱离Web容器运行,也就可以脱离Web容器来测试Action;又允许用简单的方式来操作request、session、application范围的属性。

Action 直接访问Servlet API

虽然Struts 2 提供了ActionContext来访问Servlet API,但这种访问毕竟不是直接获得Servlet API的实例。Struts 2 提供了几种接口,Action可以直接访问Servlet API

实现接口名称

接口描述

ServletContextAware

实现该接口的Action可以直接访问Web应用的ServletContext实例

ServletRequestAware

实现该接口的Action可以直接访问用户请求的HttpServletRequest实例

ServletResponseAware

实现该接口的Action可以直接访问服务器响应的HttpServletResponse


通过上面可知,实现ServletResponseAware接口,只需要实现如下方法:

public void setServletResponse(HttpServletResponse response);

类似的,如果一个Action实现了ServletRequestAware,则需要实现如下方法:

public void setServletRequest(HttpServletRequest request);

类似的,如果一个Action实现了ServletContextAware,则需要实现如下方法:

public void setServletContext(ServletContext context);

即使我们在struts 2 的Action类中获得了httpServletRespose对象,也不要尝试直接在Action中对客户端生成响应。

使用ServletActionContext访问Servlet API

为了能够直接访问Servlet API,struts 2 还提供了一个ServletAction工具类,这个类包含了如下几个静态方法

返回值

方法名

功能描述

HttpServletRequest

getRequest()

获得Web应用的HttpServletRequest对象

HttpServletResponse

getResponse()

获得Web应用的HttpservletResponse对象

ServletContext

getServletContext()

获得Web应用的ServletContext对象

PageContext

getServletContext()

获得Web应用的ServletContext对象

借助于ServletActionContext工具类的帮助,Action能以更加简单的方式来访问Servlet API。

读李刚《轻量级java EE企业应用实战(第三版)—struts 2+Spring 3+Hibernate整合开发》

分享到:
评论

相关推荐

    Servlet-Struts-Hibernate笔记分享

    这份“Servlet-Struts-Hibernate笔记分享”涵盖了这三者的基础知识,旨在帮助开发者构建功能丰富的Web应用程序。 Servlet是Java提供的一种用于扩展服务器功能的接口,它允许开发者编写代码来处理HTTP请求并生成响应...

    Struts-笔记-1

    在Struts 1中,核心组件包括Action、ActionForm、Dispatcher Servlet(通常称为Struts ActionServlet)以及配置文件(struts-config.xml)。Action是处理用户请求的中心组件,它接收表单数据,执行业务逻辑,并决定下...

    servlet和struts2笔记

    ### servlet和struts2笔记 #### 一、Servlet 基础 **Servlet** 是 Java Web 开发中的一种核心技术,它被设计用于处理客户端发送到服务器的 HTTP 请求,并且能够生成响应。Servlet 可以看作是服务器端的小程序,...

    struts2综合笔记

    而 Struts2 与 Servlet API 的耦合度较低,提供了更多的灵活性。 - **发展历程**: Struts2 是在 WebWork 框架的基础上发展起来的,因此学习 Struts2 实际上也是学习 WebWork。 #### 二、Struts2 的核心组件分析 **...

    struts2 学习重点笔记

    - **原理**:Struts2 的拦截器会在 Action 执行完成后,调用 getter 方法并将结果存储到适当的范围对象中。 **3.4 请求转发与重定向** - **转发**:Action 的 execute 方法返回一个字符串,根据这个字符串找到对应...

    Struts2学习笔记

    - **Struts1.x**:基于Servlet API,使用`ActionServlet`作为核心控制器,依赖于`struts-config.xml`进行配置。其Action对象执行时调用`execute`方法,并返回一个字符串表示视图的名称。 - **WebWork**:开源框架,...

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    struts2课程笔记

    本课程笔记主要涵盖了Struts2的基础概念、核心功能及其工作流程。 首先,Struts2的处理流程是通过一系列的组件协作完成的,包括Filter Dispatcher(过滤器调度器)、Action、Interceptor(拦截器)和Result。当用户...

    struts2四天的学习笔记

    struts.xml定义了Action的映射、结果类型、拦截器等,而web.xml则配置DispatcherServlet(Struts2的前端控制器)和其他必需的Servlet和过滤器。 4. **拦截器(Interceptors)**:拦截器是Struts2的一个强大特性,它...

    struts2学习笔记

    1. **不使用Struts2进行上传**:可以使用Servlet API直接处理文件上传,但Struts2提供了更简便的API。 2. **使用Struts2进行上传**:Struts2提供`CommonsFileUploadInterceptor`来处理文件上传,可以方便地获取文件...

    struts2框架学习笔记整理

    ### Struts2框架学习笔记整理 #### 一、Struts2框架概述 ##### 1.1 Struts2框架定义 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java web应用框架,它能够帮助开发者构建可扩展且易于维护的...

    servlet AND Struts2笔记

    ### servlet与Struts2知识点梳理 #### 一、Servlet基础概念及实现方式 - **Servlet定义**:Servlet是一种运行在服务器端的小程序,用于处理客户端发送的HTTP请求,并生成相应的HTTP响应。它属于动态资源,可以被多...

    传智播客struts2全程学习笔记

    在代码示例中可以看到,`OrderListAction`类继承自`Action`而不是具体的Struts API,这意味着Struts2应用程序可以在不使用Servlet API的情况下运行。 2. **拦截器机制**:Struts2引入了拦截器(Interceptor)的概念...

    牧紫小岩的Struts2学习笔记

    在**牧紫小岩的Struts2学习笔记**中,提到了Struts1和Struts2在实例化Action上的关键差异。Struts1在启动时创建Action实例,并在整个应用程序运行期间复用该实例,这意味着所有用户请求共享同一实例,这可能导致线程...

    struts2笔记

    Struts1是Model2模式的一种实现,它通过ActionServlet作为MVC的核心,ActionForm处理表单数据,Action类处理业务逻辑。然而,Struts1过于依赖Servlet API,使得Action和ActionForm难以脱离服务器环境进行单元测试,...

    MLDN_J2EE框架_笔记--精华---(包括jsp struts hibernate spring).rar

    核心组件包括ActionForm、Action、ActionServlet和配置文件struts-config.xml。此外,Struts还支持国际化、数据验证和异常处理。 3. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用程序...

    Struts2.1学习笔记

    这些文件通常包括`struts2-core-2.x.x.jar`、`xwork-2.x.x.jar`、`ognl-2.6.x.jar`等,其中: - `struts2-core-2.x.x.jar`包含了Struts2的核心类库。 - `xwork-2.x.x.jar`是XWork的类库,Struts2在其基础上构建。 ...

Global site tag (gtag.js) - Google Analytics