Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,从而能更轻松的测试该Action。
但对于Web应用的控制器而言,不访问Servlet API几乎是不可能的,例如跟踪HTTP Session状态等。Struts2框架提供了一种更轻松的方式来访问Servlet API。Web应用中通常需要访问的Servlet API就是HttpServletRequest,HttpSession和ServletContext,这三个类分别代表JSP内置对象中的request,session和appliaction。通过Action访问Servlet API有以下三种方法:
Struts2提供了一个ActionContext类,Struts2的Action可以通过该类来访问Servlet API。下面是ActionContext类中包含的几个常用方法:
Object get(Object key):该方法类似于调用HttpServletRequest的getAttribute(String name)方法。
Map getApplication():返回一个Map对象,该对象模拟了该应用的ServletContext实例。
static ActionContext getContext():静态方法,获取系统的ActionContext实例。
Map getParameters():获取所有的请求参数。类似于调用HttpServletRequest对象的getParameterMap方法。
Map getSession():返回一个Map对象,该Map对象模拟了HttpSession实例。
void setApplication(Map application):直接传入一个Map实例,将该Map实例里的key-value对转换成application的属性名、属性值。
void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value对转换成session的属性名、属性值。
虽然Struts2提供了ActionContext来访问ServletAPI,但是并不能直接获得ServletAPI的实例。但是Struts2提供了以下接口,
ServletContextAware:实现该接口的Action可以直接访问ServletContext实例。
ServletRequestAware:实现该接口的Action可以直接访问HttpServletRequest实例。
ServletResponseAware:实现该接口的Action可以直接访问HttpServletResponse实例。
除此之外,为了能直接访问Servlet API,Struts2还提供了一个ServletActionContext,其静态方法有:getPageContext(),getRequest(),getResponse(),getServletContext()
上面三种方法的区别,方法一取得的实例是经过Struts2包装过后的,而后两种方法取得的实例是原生态的。但都有异曲同工之妙。
分享到:
相关推荐
在本文中,我们将详细介绍 Struts2 访问 Servlet API 的几种方法。 一、使用 ActionContext 类 ActionContext 类是 Struts2 框架中一个重要的类,它提供了多种方法来访问 Servlet API。该类可以模拟获取 request、...
详解Struts2中Action访问Servlet API的几种方法 在通常的web开发中Request和Response对象比较常见,但在Struts2框架中由于Action能与JSP页面进行数据交互,所以通常都不会用到这两个对象。如果想在Struts2程序中用到...
本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求到达服务器时,Struts2的过滤器(通常名为`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`)会捕获这个...
在Struts2框架中,直接和间接访问Servlet API以及动态方法调用是两个关键概念,它们对理解和优化应用性能至关重要。 首先,让我们深入理解直接访问Servlet API。在传统的MVC模式中,Servlet扮演着控制器的角色,...
在“Struts2直接访问Servlet API(二十五)”这个主题中,我们可能探讨的是如何在Struts2框架下直接利用Servlet API来实现某些特定功能或者优化性能。Servlet API是Java Web开发的基础,它提供了处理HTTP请求和响应...
在"Struts2 part 3:在Action中使用ServletAPI"这一主题中,我们将深入探讨如何在Struts2的动作类(Action)中集成和利用Servlet API来增强应用的功能。 Servlet API是Java Servlet规范的一部分,它提供了一系列...
通过这三个资源的学习,开发者不仅可以掌握Struts2框架,还可以深入了解Servlet API,从而在Java Web开发中游刃有余。无论是初学者还是经验丰富的开发者,这些教程和API文档都是宝贵的参考资料,能够提升技能并解决...
Struts2中的`ActionServlet`就是对Servlet API的一种扩展,它作为整个框架的调度中心,负责接收请求、调用Action并返回相应的结果。 在Struts2中,Servlet API主要体现在以下几点: 1. **过滤器(Filter)**:...
当你在Action类中实现这些接口后,Struts2会自动注入对应的请求和响应对象,使得你可以像在Servlet中那样直接操作它们,进行响应的处理和请求的数据获取。 2. **使用ActionContext访问Servlet API**: `...
这个压缩包“strut2 servletapi”显然包含了使用Struts2框架访问Servlet API的示例代码。Servlet API是Java Servlet规范的一部分,提供了一系列接口和类,允许开发者处理HTTP请求、响应以及与Web服务器交互。 在...
3. **动态生成Action的代理**:在Struts2中,Action是业务逻辑的载体,通过动态代理,Struts2可以在调用实际Action方法之前/之后执行一些额外的操作。在Servlet中,我们可以使用Java的反射API来创建Action的代理类。...
这样,无需在Action类中直接引用ServletAPI,降低了耦合度,提高了代码的可测试性。 接下来,我们探讨Struts2的动态方法调用(Dynamic Method Invoked,DMI): 动态方法调用是Struts2的一种强大功能,它允许根据...
标题提到的“Struts1的中文和英文API”是指Struts1框架提供的开发人员接口文档,API文档是程序员在使用框架时的重要参考,它详细描述了框架中各个类、方法、接口的功能、参数和返回值,有助于开发者快速理解和使用...
在Struts2中,我们通常会在Action类中处理这个逻辑,而在Servlet中,这将在doGet或doPost方法内完成。 现在,我们来看案例中的两个DEMO——JqUploadTest和CosUpload。JqUploadTest可能是指使用jQuery的Upload插件...
因此,Struts2 提供了三种方式来访问 Servlet API,这三种方式分别是实现特定接口、通过 ServletActionContext 类和通过 ActionContext 类。 第一种方式:实现特定接口 这种方式需要 Action 实现特定的接口,如 ...
Struts2 框架提供了访问 Servlet API 的功能,允许在 Action 中访问 Servlet 的各种对象。 Struts2 框架提供了一个灵活、可扩展的解决方案来构建企业级 web 应用程序,它具有强大的功能和灵活的配置方式。
Struts是一种基于MVC(Model-View-Controller)设计模式的开源框架,而Servlet则是Java标准库中用于处理HTTP请求的API。 Servlet是Java EE平台的核心组成部分,它提供了一种服务器端编程模型,可以接收和响应来自...