在SpringMVC中操作Session、Request、Response对象
示例
@Service
public class UserServiceImpl implements UserService { @Autowired
private UserMapper userMapper; @Override
public void addOne(UserInput input) throws Exception {
Integer id = userMapper.insert(input);
setSessionAttribute("userId", id, Integer.class);
} @Override
public void rollbackAdd() throws Exception {
Integer id = getSessionAttribute("userId", Integer.class);
userMapper.remove(id);
} private <T> void setSessionAttribute(String key, T value, Class<T> valueClass) {
RequestAttributes ra = RequestContextHolder.currentRequestAttributes();
ra.setAttribute(key, value, RequestAttributes.SCOPE_SESSION);
} @SuppressWarnings("unchecked")
private <T> T getSessionAttribute(String key, Class<T> valueClass) {
RequestAttributes ra = RequestContextHolder.currentRequestAttributes();
Object value = ra.getAttribute(key, RequestAttributes.SCOPE_SESSION);
return (T) value;
} }
主要是利用到了RequestContextHolder这个类。
除此以外,还能通过RequestAttributes对象,分别获得Session、Request、Response对象
/**
* 获取HttpServletRequest对象
*/
public static HttpServletRequest instance() {
RequestAttributes ra = RequestContextHolder.currentRequestAttributes();
HttpServletRequest request = ((ServletRequestAttributes) ra).getRequest();
return request;
} /**
* 获取HttpServletResponse对象
*/
public static HttpServletResponse instance() {
RequestAttributes ra = RequestContextHolder.currentRequestAttributes();
HttpServletResponse response = ((ServletRequestAttributes) ra).getResponse();
return response;
} /**
* 获取HttpSession对象
*/
public static HttpSession instance() {
RequestAttributes ra = RequestContextHolder.currentRequestAttributes();
HttpServletRequest request = ((ServletRequestAttributes) ra).getRequest();
HttpSession session = request.getSession();
return session;
}
避免了在控制层用HttpServletRequest入参,然后将request转递到业务层已获取HttpSession的“粗暴做法”
在SpringMVC中操作Session、Request、Response对象的更多相关文章
- springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序 http://www.360doc.com/content/14/03 ...
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- 137.在Django中操作session
在Django中操作session 在django中session默认情况下是存储在服务器的数据库中的,在表中会根据sessionid来提取指定的session数据,然后再把这个sessionid放到 ...
- SpringMVC中的session用法及细节记录
前言 初学SpringMVC,最近在给公司做的系统做登录方面,需要用到session. 在网上找了不少资料,大致提了2点session保存方式: 1.javaWeb工程通用的HttpSession 2 ...
- .net core中的Session以及HttpContext对象使用小结
session用于识别用户并保持用户信息,就是一个会话 ,在浏览器不关闭的前提下,可以保存用户的信息,比如登录的保存用户信息从一个网页跳转到另一个网页,你的用户信息就可以用session. .net ...
- Server,Servlet,ServletConfig,ServletContext,Session,Request,Response
Server流程 解析URL->找到应用->找到Servlet->实例化Servlet->调用init->调用service->返回响应->调用destroy ...
- spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明: ModelAn ...
- SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题
原因分析 首先我们来看下Spring mvc 中文件上传的配置 <bean id="multipartResolver" class="org.springfram ...
- Java-Spring-获取Request,Response对象
转载自:https://www.cnblogs.com/bjlhx/p/6639542.html 第一种.参数 @RequestMapping("/test") @Response ...
随机推荐
- navigator(浏览器对象)Screen对象(屏幕)
浅谈navigator对象: 注意:不是所有浏览器都支持 .cookieEnabled 判断是否启用了cookie 在客户端硬盘持久保存用户私密数据的小文件 .plugins 浏览器安装的所有插件 ...
- Sass和Compass学习笔记系列之Sass
最近在慕课网学习Sass和Compass,学习链接地址:https://www.imooc.com/learn/364,现在整理笔记如下: 一.使用Sass和Compass的优点: a.使用Sass和 ...
- Java 之 字符流
一.字符流 当使用字节读取文本文件时,可能会有一个小问题,就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储.所以 Java 提供了一些字符类,以字符为单位读写数据, ...
- OpenStack kilo版(4) Glance部署
Glance简介 Glance-api:接受云系统镜像的构建.删除.读取请求 Glance-Registry:云系统的镜像注册服务 部署在controller节点 配置数据库 MariaDB [(no ...
- 《Python编程:从入门到实践》第三章 列表简介 习题答案
#3.1 names=['lpr','tjl','gnl','by','dqy']; print(names[0]); print(names[1]); print(names[2]); print( ...
- Nginx上传和超时时间限制 (php上传限制) - 运维笔记
现象说明:在服务器上部署了一套后台环境,使用的是nginx反向代理tomcat架构,在后台里上传一个70M的视频文件,上传到一半就失效了! 原因:nginx配置里限制了上传文件的大小 client_m ...
- HDU-5728-PowMod-求phi(i*n)前缀和+指数循环节
HDU-5728-PowMod-求phi(i*n)前缀和+指数循环节 [Problem Description] 令\(k=\sum_{i=1}^m \varphi(i\cdot n)\ mod \ ...
- -bash: zip: command not found提示解决办法
-bash: zip: command not found是因为liunx服务器上没有安装zip命令,需要安装一下即可linux安装zip命令:apt-get install zip 或yum ins ...
- 26.C# 文件系统
1.流的含义 流是一系列具有方向性的字节序列,比如水管中的水流,只不过现在管道中装的不是水,而是字节序列.当流是用于向外部目标比如磁盘输出数据时称为输出流,当流是用于把数据从外部目标读入程序称为输入流 ...
- Jquery Ajax跨域访问
一.同源策略 二.跨域的集中方法: 1.服务器端发送请求,服务器作为中继代理(此方法不理解) 2.iframe 3.script标签 通过动过动态生成script标签,并将src指向目标源的方式(im ...