Struts2访问Servlet的三种方式
Struts2 访问 Servlet 的三种方式 Struts2 框架中,Action 并没有直接和 Servlet API 耦合,这使得 Action 可以更好地进行单元测试。然而,在实现业务逻辑时,经常需要访问 Servlet 中的对象,如 request、session 和 application 等。因此,Struts2 提供了三种方式来访问 Servlet API,这三种方式分别是实现特定接口、通过 ServletActionContext 类和通过 ActionContext 类。 第一种方式:实现特定接口 这种方式需要 Action 实现特定的接口,如 ServletRequestAware、ServletResponseAware 和 ServletContextAware 等。这些接口提供了访问 Servlet 对象的方法,如 setServletRequest、setServletResponse 和 setServletContext 等。通过实现这些接口,Action 可以获取 Servlet 对象并进行操作。 例如,在下面的代码中,ActionTest7 类实现了 ServletRequestAware、ServletResponseAware 和 ServletContextAware 接口,通过这些接口,可以访问 request、response 和 application 对象。 ```java public class ActionTest7 extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware { private HttpServletRequest request; private HttpServletResponse response; private ServletContext application; @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } @Override public void setServletResponse(HttpServletResponse response) { this.response = response; } @Override public void setServletContext(ServletContext application) { this.application = application; } public String demo(){ System.out.println(request); System.out.println(response); System.out.println(application); System.out.println(request.getSession()); return SUCCESS; } } ``` 第二种方式:通过 ServletActionContext 类 ServletActionContext 类提供了访问 Servlet 对象的方法,如 getRequest、getResponse 和 getServletContext 等。通过这个类,Action 可以获取 Servlet 对象并进行操作。 例如,在下面的代码中,ActionTest8 类使用 ServletActionContext 类来访问 request、response 和 application 对象。 ```java public class ActionTest8 extends ActionSupport { public String demo(){ HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); ServletContext application = ServletActionContext.getServletContext(); System.out.println(request); System.out.println(response); System.out.println(application); System.out.println(request.getSession()); return SUCCESS; } } ``` 第三种方式:通过 ActionContext 类 ActionContext 类提供了访问 Servlet 对象的方法,如 getContext、getRequest 和 getResponse 等。通过这个类,Action 可以获取 Servlet 对象并进行操作。 例如,在下面的代码中,ActionTest9 类使用 ActionContext 类来访问 request、response 和 application 对象。 ```java public class ActionTest9 extends ActionSupport { public String demo(){ ActionContext context = ActionContext.getContext(); HttpServletRequest request = (HttpServletRequest) context.getHttpServletRequest(); HttpServletResponse response = (HttpServletResponse) context.getHttpServletResponse(); ServletContext application = context.getServletContext(); System.out.println(request); System.out.println(response); System.out.println(application); System.out.println(request.getSession()); return SUCCESS; } } ``` Struts2 提供了三种方式来访问 Servlet API,这三种方式分别是实现特定接口、通过 ServletActionContext 类和通过 ActionContext 类。每种方式都有其优缺,开发者可以根据实际情况选择合适的方式。























- 粉丝: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 5种ceemdan组合时间序列预测模型Python代码(包括ceemdan-lstm、ceemdan-cnn-lstm等)
- 江苏移动通信有限责任公司员工绩效考核实施细则精.doc
- 最新国家开放大学电大《优秀广告作品评析答案》网络核心课形考网考作业.docx
- 工程项目管理计划书.doc
- 基于PLC双轴位置控制.docx
- 基于复矢量PI控制器的模型参考自适应三相永磁同步电机高速低载波比无速度传感器控制仿真研究 - MATLAB 宝典
- 第8章-网络营销的策略组合.ppt
- (源码)基于NodeMCU的可视化通知提醒系统.zip
- 系统集成测试(SIT)报告.docx
- 基于MATLAB的GMSK系统的设计仿真.doc
- 离心风机辐射噪声仿真分析:从结构模态到声源辐射噪声的全流程解析 · 辐射噪声 深度版
- 专题讲座资料(2021-2022年)大工秋Java程序设计在线作业.docx
- (源码)基于Arduino的EDeliveryRobot.zip
- Comsol光子晶体仿真技术:拓扑荷、偏振态、三维能带及Q因子计算
- 基于非支配排序的多目标鱼鹰优化算法求解柔性作业车间调度问题的MATLAB实现
- (源码)基于多种编程语言和框架的物联网服务器与客户端.zip


