1.通过拦截器来实现
需要实现org.apache.struts2.interceptor包下的RequestAware 、sessionAware和applicationAware接口
2.使用ActionContext类
这种方法比较简单,我们可以通过org.apache.struts2.ActionContext类的get方法获得相应的对象。
3.使用ServletActionContext类
Struts2为我们提供了一种最简单的方法获得HttpServletReqeust及其他对象。这就是 org.apache.struts2.ServletActionContext类。我们可以直接使用ServletActionContext类的方法来获得Servlet对象。这是最简单的一种方法。
总结:为了避免代码的重复性,可以写一个基本的action父类,用于给其他Action继承,该父类继承ActionSupport实现ApplicationAware、SessionAware,ServletRequestAware, ServletResponseAware 接口,具体代码如下:
import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; public class BaseAction extends ActionSupport implements SessionAware,ApplicationAware, ServletRequestAware, ServletResponseAware { public Map<String, Object>session; public Map<String, Object>application; public HttpServletRequest request; public HttpServletResponse response; public void setServletResponse(HttpServletResponse response) { this.response = response; } public void setServletRequest(HttpServletRequest request) { this.request = request; } public void setSession(Map<String, Object> session) { this.session = session; } public void setApplication(Map<String, Object> application) { this.application = application; } }
其他的Action继承该类,可以直接使用request、response等来操作。
相关推荐
在Struts2框架中,我们有时需要直接与Servlet API交互,例如处理HTTP请求、响应,或者使用Session、Cookie等。本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求...
然而,在Struts2中,我们通常不直接与Servlet API交互,而是通过Action类和Struts拦截器来处理请求。直接访问Servlet API可能涉及使用`HttpServletRequest`、`HttpServletResponse`和`ServletConfig`等对象,这可能...
在"Struts2 part 3:在Action中使用ServletAPI"这一主题中,我们将深入探讨如何在Struts2的动作类(Action)中集成和利用Servlet API来增强应用的功能。 Servlet API是Java Servlet规范的一部分,它提供了一系列...
6. **Struts2与Servlet API的结合**:尽管Struts2提供了丰富的功能,但有时候直接使用Servlet API可能是必要的,例如,当需要进行低级的HTTP操作时。在这种情况下,开发者可以在Action类或自定义拦截器中集成Servlet...
MVC(Model-View-Controller)框架如Spring MVC、Struts等,虽然提供了更高级别的抽象,但底层仍然基于Servlet API处理请求和响应。 综上所述,Servlet API是构建Java Web应用的基础,提供了处理HTTP请求的核心...
综上所述,Struts2提供了多种方式来与Servlet API交互,同时通过适当的过滤器配置,可以确保在Struts2框架下,直接编写的Servlet也能正常工作。理解和掌握这些配置技巧对于开发和维护Struts2应用至关重要。
本案例聚焦于使用Struts2和Servlet两种不同的技术来实现这一功能。这两个技术都是Java Servlet的重要扩展,用于增强Web应用程序的功能和用户体验。 首先,让我们深入理解Struts2框架。Struts2是一个基于MVC(Model-...
Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action。但如何访问? Web应用中通常需要访问的Servlet API就是...
本案例“Struts2之Servlet文件上传详解”将聚焦于如何使用Struts2框架配合Servlet实现文件上传功能。在Web应用中,文件上传是一个常见的需求,例如用户可能需要上传头像、附件等。 首先,我们来理解文件上传的基本...
Struts和Servlet是Java Web开发中的两个重要组件,它们在构建动态、交互式的Web应用程序时起着关键作用。Struts是一种基于MVC(Model-View-Controller)设计模式的开源框架,而Servlet则是Java标准库中用于处理HTTP...
这些插件使得Struts2能更好地与各种技术集成,如JSON数据交互、模板引擎使用等。 4. **标签库(Tags)**:Struts2提供了一套丰富的JSP标签,简化了视图层的开发。例如s:form、s:textfield、s:submit等,它们对应于...
与Struts1和Struts2结合使用时,JQuery可以用来增强前端的交互性,与服务器端进行异步通信。 **Ajax** Ajax(Asynchronous JavaScript and XML)并非一种单一的技术,而是一种使用现有Web技术(JavaScript、XML、...
通过深入理解Struts1的API,开发者可以更有效地实现业务逻辑,处理用户请求,构建出高效、可维护的Web应用程序。对于初学者,了解每个组件的作用以及它们之间的交互方式至关重要,这有助于提高开发效率和代码质量。...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
- **Struts2**的Action类并不直接依赖Servlet API,而是通过中间层(如拦截器)间接与Servlet API交互,这样的设计使得**Struts2**的Action更加独立,也更容易进行单元测试。 #### 请求处理流程 - **Struts1**执行...
综上所述,servlet-api.jar对于理解Java Web开发至关重要,它构成了Web应用与服务器之间通信的基础,同时也是许多Web框架如Spring MVC、Struts、JSF等工作的核心。熟悉并掌握Servlet API,能帮助开发者更高效地构建...
而Struts2与JSON的集成则进一步增强了其功能,使得数据交换更为简洁,特别是在AJAX和移动应用中。 在标题和描述中提到的"struts2所需的包和Struts2_json所需包",主要是指为了实现Struts2框架与JSON数据交互所需要...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...