Struts2访问Servlet的三种方式
package com.pc.web.action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;import com.opensymphony.xwork2.ActionSupport;/*** 使用特定接口访问Servlet对象* @author Switch** org.apache.struts2.dispatcher.StrutsRequestWrapper@461aa2* org.apache.catalina.connector.ResponseFacade@7e83df* org.apache.catalina.core.ApplicationContextFacade@3b102* org.apache.catalina.session.StandardSessionFacade@5a214b* 是由一个名称为servletConfig的拦截器为我们封装的*/
public class ActionTest7 extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware {private HttpServletRequest request;private HttpServletResponse response;private ServletContext application;/*** @return*/public String demo(){System.out.println(request);System.out.println(response);System.out.println(application);System.out.println(request.getSession());return SUCCESS;}@Overridepublic void setServletRequest(HttpServletRequest request) {this.request = request;}@Overridepublic void setServletResponse(HttpServletResponse response) {this.response = response;}@Overridepublic void setServletContext(ServletContext application) {this.application = application;}
}
package com.pc.struts2.web.action;import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;
/*** 访问ServletAPI的方式** 使用Struts2框架提供了一个工具类:* ServletActionContext* 它里面提供了对应的静态方法,可以直接获取ServletAPI** 有一个需要注意的问题:* org.apache.struts2.dispatcher.StrutsRequestWrapper@4637b3* org.apache.catalina.connector.ResponseFacade@1f2f2f7* org.apache.catalina.session.StandardSessionFacade@12d77c1* org.apache.catalina.core.ApplicationContextFacade@1133ff** requet对象已经不是原来tomcat提供的了,而是被struts2框架包装过了。* 包装使用的是装饰者模式。* 装饰者模式的作用是对方法进行增强。** @author Switch*/
public class ActionAPITest extends ActionSupport {/*** 在Struts2框架中使用ServletAPI* @return*/public String useServletAPI() {HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();HttpSession session = request.getSession();ServletContext application = ServletActionContext.getServletContext();System.out.println(request);System.out.println(response);System.out.println(session);System.out.println(application);return "success";}
}
package com.pc.web.action;import java.util.Map;import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsStatics;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;/*** ActionContext类介绍* 它是Struts2框架为我们提供的一个工具类。* 该类可以通过方法直接获取request,response,servletContext对象* @author Switch* * context.getParameters(); == request.getParameterMap(); 获取的是请求参数*/
public class ActionTest8 extends ActionSupport implements StrutsStatics {private HttpServletRequest request;private HttpServletResponse response;private ServletContext application;/*** 使用ActionContext访问ServletAPI* @return*/public String demo(){ActionContext context = ActionContext.getContext();request = (HttpServletRequest) context.get(HTTP_REQUEST);response = (HttpServletResponse) context.get(HTTP_RESPONSE);application = (ServletContext) context.get(SERVLET_CONTEXT);System.out.println(request);System.out.println(response);System.out.println(application);System.out.println(request.getSession());/*org.apache.struts2.dispatcher.StrutsRequestWrapper@112e422org.apache.catalina.connector.ResponseFacade@13f8b4corg.apache.catalina.core.ApplicationContextFacade@d244ddorg.apache.catalina.session.StandardSessionFacade@a711cb*/return SUCCESS;}/*** 使用原始ServletAPI对象,往session域和application域中存入数据* session域中存入 key=sessionAttr value=hello session attr* application域中存入 key=applicationAttr value=hello application attr* @return*/public String demo2(){//1.获取session对象HttpSession session = ServletActionContext.getRequest().getSession();//存入数据session.setAttribute("sessionAttr", "hello session attr");session.getId();//2.获取ServletContextServletContext application = ServletActionContext.getServletContext();application.getRealPath("/WEB-INF/uploads");//存入数据application.setAttribute("applicationAttr", "hello application attr");return SUCCESS;}/*** 使用ActionContext类中的getSession()和getApplication()获取到的map来往map中存入数据* sessionMap中存入 key=sessionAttr value=hello session map* applicationMap中存入 key=applicationAttr value=hello application map* @return*/public String demo3(){//1.获取ActionContext对象ActionContext context = ActionContext.getContext();//2.获取sessionMapMap<String,Object> sessionMap = context.getSession();sessionMap.put("sessionAttr", "hello session map");//3.获取applicationMapMap<String,Object> applicationMap = context.getApplication();applicationMap.put("applicationAttr", "hello application map");return SUCCESS;}}
方法声明
|
功能描述
|
void put(String key, Object value)
|
将 key-value键值对放入ActionContext 中,模拟Servlet API中的HttpServletRequest的setAttributeO方法。
|
Object get(String key)
|
通过参数key来查找当前ActionContext中的值。
|
Map<String, Object> getApplication()
|
返回一个Application级的Map对象。
|
static ActionContext getContext()
|
获取当前线程的ActionContext对象。
|
Map<String, Object> getParameters()
|
返回一个包含所有HttpServletRequest参数信息的Map对象。
|
Map<String, Object> getSession()
|
返回一个Map类型的HttpSession对象。
|
void setApplication(Map<String, Object> application)
|
设置Application上下文。
|
void setSession(Map<String, Object> session)
|
设置一个Map类型的Session值 。
|
Struts2访问Servlet的三种方式相关推荐
- 访问Servlet的几种方式
文章目录 访问Servlet的几种方式 1.servlet直接转发到另一个servlet 2.使用a标签跳转到servlet 3.表单提交 4.Ajax请求Servlet ①.通过URL调用(以GET ...
- 【OpenCV】OpenCV访问像素点的三种方式
环境配置 VS2013+OpenCV3.0+Win7(X64) 前言 OpenCV是图像处理最常用的库之一.它提供了许多常用的图像处理算法相关的函数,极大地方便了图像处理方法的开发,而图 ...
- bash shell脚本访问PostgreSQL的三种方式
bash脚本里有三种方式访问PostgreSQL数据库 但前提是要设置密码文件.当然对于有系统对应账户的数据库角色可以绕过密码登录环节,如 1 $ sudo -u postgres psql 或 1 ...
- COS中访问文件的三种方式
1.通过FID来访问文件(比如EF,DF) 2.通过SFI来访问文件(有些COS命令可以通过SFI来快速访问文件,而不需要事先选中文件) 3.通过文件名来访问文件(只能是DF文件) 转载于:https ...
- 安装web服务器访问站点的三种方式,Web服务器配置方法
您可能感兴趣的话题: 服务器配置 核心提示:本教程为大家介绍web服务器的配置方法. Web服务器概述 Web服务器又称为WWW服务器,它是放置一般网站的服务器.一台Web服务器上可以建立多个网站,各 ...
- android获取自定义属性,android 自定义控件中获取属性的三种方式(转)
第一种方法,直接设置属性值,通过attrs.getAttributeResourceValue拿到这个属性值. (1)在xml文件中设置属性值 android:layout_width="f ...
- 实现内网映射的三种方式:
实现内网映射的三种方式: 1.ngrok. 1)下载ngrok 下载地址:https://ngrok.com/download 选择合适的版本下载,我下载的是win64为的是这样: 2)解压下载下 ...
- 【小家Spring】SpringBoot中使用Servlet、Filter、Listener三大组件的三种方式以及原理剖析
每篇一句 要么就安逸的穷,要么就拼命的干 前提概要 web开发使用Controller基本能解决大部分的需求,但是有时候我们也需要使用Servlet,因为相对于拦截和监听来说,有时候原生的还是比较好用 ...
- Servlet 的三种创建方式
Servlet 创建有三种方式. 1.实现 Servlet 接口 因为是实现 Servlet 接口,所以我们需要实现接口里的方法. 下面我们也说明了 Servlet 的执行过程,也就是 Servlet ...
最新文章
- linux 瞬间文件数没了,关于linux:如何快速汇总文件中的所有数字?
- matplotlib安装
- 回调函数function的test
- .NET体系中的源程序安全问题
- com.mysql.jdbc.NotUpdatable: Result Set not updatable (references no primary keys).(解决方法)
- console和windows子系统
- 朴素贝叶斯与贝叶斯网络
- css遮罩层从下往上_CSS:图片自带3px下边距的bug修复
- 使用rem进行页面适配
- Nutch-1.6在Hadoop环境下的安装配置
- RJ45和RJ11的线序以及用途
- 2017年总结与展望
- 一些文字游戏....
- 无人驾驶失败案例汇总
- 一、pytorch环境配置
- windows服务器如何搭建网站,Windows系列服务器网站搭建详细过程
- 海域重力场与垂直基准产品构建及质量评估系统
- 东北大学计算机硬件题库,东北大学20春学期《计算机硬件技术基础》在线平时作业123答案100...
- MPSK通信系统的Monte Carl仿真(matlab实现,附源码)
- 免费电子书 工具 开发工具包 各类资源 下载 .
热门文章
- Linux中Tomcat 服务的搭建
- css里的符号含义【串联选择器】和【后代选择器】
- 【Liunx】Linux 文件基本属性
- GitHub+jsDelivr+PicGo+Visual Studio Code 打造稳定、快速、高效、免费图床
- C#LeetCode刷题之#367-有效的完全平方数(Valid Perfect Square)
- there are so many javascript library
- 如何使用Docker Volumes在基于Docker的应用程序上启用实时重新加载
- freecodecamp_我在1个月内完成了整个freeCodeCamp课程(并记录了所有内容)
- 这是可用于下一个项目的React Native工具列表
- dagger2 注入_如何使用Dagger 2在您的应用程序中实现依赖注入