Struts2中访问HttpServletRequest和HttpSession

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

关键字: struts2 httpservletrequest httpsession

      在没有使用Struts2之前,都习惯使用HttpServletRequest和HttpSession对象来操作相关参数,下面介绍一下在Struts2中访问隐藏的HttpServletRequest和HttpSession的两种方法:

1.非Ioc方式

这种方式主要是利用了com.opensymphony.xwork2.ActionContext类以及ora.apache.struts2.ServletActionContext类,具体的方法如下所示。

获得request对象:

1)HttpServletRequest request = ServletActionContext.getRequest ();

2).ActionContext ct= ActionContext.getContext();



   HttpServletRequest request=

(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);

获得session对象:

在Struts2中底层的session都被封装成了Map类型,我们称之为SessionMap,而平常我们所说的session则是指HttpSession对象,具体的获得方法如下所示。

1).Map session=ActionContext.getSession();

2).Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);

得到这个SessionMap之后我们就可以对session进行读写了,如果我们想得到原始的HttpSession可以首先得到HttpServletRequest对象,然后通过request.getSession()来取得原始的HttpSession对象。一般情况下SessionMap已经可以完成所有的工作,我们不必再去强行使用底层的session了。

2.IoC方式

这种方式相对来说变化就比较少了,下面给出代码大家自己看吧:

import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
import javax.servlet.http.HttpSession;   import org.apache.struts2.interceptor.ServletRequestAware;   
import org.apache.struts2.interceptor.ServletResponseAware;   
import org.apache.struts2.interceptor.SessionAware;   import com.opensymphony.xwork2.ActionContext;   
import com.opensymphony.xwork2.ActionSupport;   publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {   private String message;   private Map att;   private HttpServletRequest request;   private HttpServletResponse response;       public String getMessage() {   return message;           }   publicvoid setSession(Map att) {   this.att = att;   }   publicvoid setServletRequest(HttpServletRequest request) {   this.request = request;   }   publicvoid setServletResponse(HttpServletResponse response) {   this.response = response;   }   @Override  public String execute() {           att.put("msg", "Hello World from Session!");   HttpSession session = request.getSession();   StringBuffer sb =new StringBuffer("Message from request: ");   sb.append(request.getParameter("msg"));   sb.append("<br>Response Buffer Size: ");   sb.append(response.getBufferSize());   sb.append("<br>Session ID: ");   sb.append(session.getId());   message = sb.toString();   return SUCCESS;   }   
}

 

import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import javax.servlet.http.HttpSession;  import org.apache.struts2.interceptor.ServletRequestAware;  
import org.apache.struts2.interceptor.ServletResponseAware;  
import org.apache.struts2.interceptor.SessionAware;  import com.opensymphony.xwork2.ActionContext;  
import com.opensymphony.xwork2.ActionSupport;  publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {  private String message;  private Map att;  private HttpServletRequest request;  private HttpServletResponse response;      public String getMessage() {  return message;          }  publicvoid setSession(Map att) {  this.att = att;  }  publicvoid setServletRequest(HttpServletRequest request) {  this.request = request;  }  publicvoid setServletResponse(HttpServletResponse response) {  this.response = response;  }  @Override  public String execute() {          att.put("msg", "Hello World from Session!");  HttpSession session = request.getSession();  StringBuffer sb =new StringBuffer("Message from request: ");  sb.append(request.getParameter("msg"));  sb.append("<br>Response Buffer Size: ");  sb.append(response.getBufferSize());  sb.append("<br>Session ID: ");  sb.append(session.getId());  message = sb.toString();  return SUCCESS;  }  
}


转载于:https://my.oschina.net/u/1462795/blog/305094

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web前端长度单位详解(px、em、rem、%、vw/vh、vmin/vmax、vm、calc())

基础理论1&#xff09;简介2&#xff09;绝对长度3&#xff09;相对长度4&#xff09;经验之谈1&#xff09;简介 在前端开发中&#xff0c;会遇到各种不同类型的长度单位&#xff0c;比如px,em,rem等。 而整体的长度单位分为两大类&#xff1a;相对长度 和 绝对长度。 2&…

PWA(Progressive Web App)入门系列:Fetch Request Headers Response Body

前言 在 WEB 中&#xff0c;对于网络请求一直使用的是 XMLHttpRequest API 来处理&#xff0c;XMLHttpRequest 也很强大&#xff0c;传统的 Ajax 也是基于此 API 的。那么为什么 W3C 标准中又加入了类似功能的 Fetch API 呢&#xff1f;他有何优势。 Fetch 什么是 Fetch Fet…

CSS3开发总结(圆角、盒阴影、边界图片)

CSS3开发总结&#xff08;圆角&#xff09; 12/100 发布文章 qq_41913971 CSS31&#xff09;圆角 border-radius2&#xff09;盒阴影 box-shadow3&#xff09;边界图片 border-image-source1&#xff09;圆角 border-radius border-radius属性&#xff0c;复合属性。一个最多可…

深入理解Android的startservice和bindservice

一、首先&#xff0c;让我们确认下什么是service&#xff1f; service就是android系统中的服务&#xff0c;它有这么几个特点&#xff1a;它无法与用户直接进行交互、它必须由用户或者其他程序显式的启动、它的优先级比较高&#xff0c; 它比处于前台的应用优先级低&am…

PWA(Progressive Web App)入门系列:Notification

前言 在很多场景下&#xff0c;需要一种通知的交互方式来提醒用户&#xff0c;传统方式下可以在页面实现一个 Dialog&#xff0c;或通过修改网页的 title 来实现消息的通知。然而传统的实现存在着一定的不足&#xff0c;在网页最小化的情况下&#xff0c;无法查看任何通知&…

PWA(Progressive Web App)入门系列:Push

前言 很多时候&#xff0c;原生应用会通过一些消息推送来唤起用户的关注&#xff0c;增加驻留率。网页该怎么做呢&#xff1f;有没有类似原生应用的推送机制&#xff1f;推送功能又能玩出什么花样呢&#xff1f; Push API Push API 给与了 Web 应用程序接收从服务器发出的推送…

Dom学习笔记

DOM document object model 文档 对象 模型 文档&#xff1a;html页面 文档对象&#xff1a;页面中的元素 文档对象模型: 文档对象模型是w3c 为了能够让js去操作页面中的元素&#xff0c;定义的一套标准 DOM会把当前文档看作一棵树 树种的每一个元素就是文档树 的一个节点 同…

PWA(Progressive Web App)入门系列:消息通讯

前言 serviceWorker 的能力决定它要处理的事情&#xff0c;网站页面的部分逻辑处理会转移到 serviceWorker 层进行处理&#xff0c;这里就要页面层和 serviceWorker 层进行交互来实现消息通讯。 下面就说一下两个环境下的消息通讯。 窗口向 serviceWorker 通讯 这里列举出窗…

查看Linux上程序或进程用到的库

为什么80%的码农都做不了架构师&#xff1f;>>> ldd /path/to/program 要找出某个特定可执行依赖的库&#xff0c;可以使用ldd命令。这个命令调用动态链接器去找到程序的库文件依赖关系。 objdump -p /path/to/program | grep NEEDED 注意&#xff01;并不推荐为任…

超方便的 IndexDB 库

前言 做为 Web 浏览器层的本地存储&#xff0c;IndexDB 做为一个很好的选择&#xff0c;几乎可以存储任意类型的数据&#xff0c;且是异步的。但是正常使用方式下需要在监听各种事件来处理结果&#xff0c;不是很方便&#xff0c;下面就对这一层进行了包装&#xff0c;使用方便…

BP网络识别26个英文字母matlab

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;字母识别 获取完整源码源工程文件 一、 设计思想 字符识别在现代日常生活的应用越来越广泛&#xff0c;比如车辆牌照自动识别系统&#xff0c;手写识别系统&#xff0c;办公自动化等等。本文采用BP网络对26个英文字母进行…

PWA(Progressive Web App)入门系列:Sync 后台同步

前言 当我们在一些地下停车场&#xff0c;或者在火车上、电梯等无法避免的信号不稳定的场所&#xff0c;使用网站应用处理一些表单操作或者上传数据的操作时&#xff0c;面临的将是网络连接错误的响应&#xff0c;使用户的操作白费。 而此刻 PWA 的 Sync API 就很好的解决了这…

PWA(Progressive Web App)入门系列:安装 Web 应用

前言 在传统的 Web 应用中&#xff0c;通常只能通过在浏览器的地址栏里输入相应的网址才能进行访问&#xff0c;或者把网页地址创建到桌面上通过点击&#xff0c;然后在浏览器里打开。 传统模式下&#xff0c;图标、启动画面、主题色、视图模式、屏幕方向等等都无法去自定义和…

「工具」IndexDB 版备忘录

前言 工作日常需要做一些备忘录&#xff0c;记录一些要做的事。在 Mac 上有使用系统的备忘录&#xff0c;但功能偏弱且文本格式调整不方便。再就是使用浏览器找专门的备忘录网站&#xff0c;功能是满足了&#xff0c;但是链路长&#xff0c;没有桌面软件直接。 所以最后干脆自…

「工具」PWA Manifest图标及 favicon.ico 生成工具

PWA 其中有一个能力就是把网站安装到系统桌面&#xff0c;以原生应用的体验来运行网站&#xff0c;使用户无需再找开浏览器输入网址进入网站&#xff0c;而是可以直接点击安装好的应用直接运行&#xff0c;给使网站访问缩短路径及增加网站的曝光度。 其中有一个问题就是需要生…

各种浏览器缓存浅析

前言 目前浏览器的缓存类型众多&#xff0c;HTTP Cache、Disk Cache、Memory Cache、ServiceWorker Cache、Push Cache 等等&#xff0c;这些缓存是如何产生的&#xff1f;命中优先级是怎么样&#xff1f;又该如何去使用它们&#xff1f; Disk Cache、Memory Cache Disk Cac…

[工具]TS 视频合并工具

简介 当下载 m3u8 资源时&#xff0c;通常产生的是多个 ts 视频文件&#xff0c;所以需要借助某些工具来将这些 ts 视频片段整合为一个视频文件。 本软件主要解决的就是这个问题&#xff0c;底层基于ffmpeg&#xff0c;可正常运行在 Windows 和 Mac 平台。不仅可以合并 ts 为单…

[会议分享]2020全球软件大会分享-PWA在项目中的最佳实践

大会地址&#xff1a;https://www.bagevent.com/event/1233659# PPT下载&#xff1a;https://download.csdn.net/download/lecepin/12871373

「浏览器插件」非常好用的JSON-View

Chrome 商店&#xff1a;地址 下载地址&#xff1a;地址 Github&#xff1a;https://github.com/lecepin/lp-json-view 查看/格式化 二合一。 功能 自动识别 JSON 内容&#xff0c;并在页面右下角创建切换按钮。支持展开/折叠节点。支持全部展开、全部折叠、展开一二三层节点…

Github Action 快速构建 Electron 应用

前言 在开发 Electron 应用时&#xff0c;比较耗时的部分应该是构建打包的过程&#xff0c;像用 electron-builder 这种打包工具来说&#xff0c;它会根据你要打包的系统来下载应用的系统镜像打包工具&#xff0c;由于这些镜像的源文件托管在 Github 上&#xff0c;且 nodejs …