在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 ...
随机推荐
- pat天梯赛练习集合 L3-007 天梯地图
加了一些花的最短路,点的个数为500不需要堆优化,改一下dij的判断条件就可以了. 上代码: #include <iostream> #include <cstring> #i ...
- pfSense QoS IDS
pfSense QoS IDS 来源 https://blanboom.org/2018/pfsense-setup/ 之前我使用的无线路由器是 RT1900ac,其内置了 QoS 和 IDS/IPS ...
- solr的命令
Start the Server If you didn’t start Solr after installing it, you can start it by running bin/solr ...
- Python中函数的知识点
1.函数的定义与调用 2.函数的参数 3.函数的返回值 1. 1.1.函数的定义: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 1.2.定义一个函数: 规则: 函数代码块以 ...
- rsync 进行本地拷贝
带杠还是不带杠 带杠表示拷贝目录里面的内容不包括目录本身 重要的是源路径带不带杠,目标路径没关系 rsync -az /root/test/src/ /root/test/dest/ rsync -a ...
- Android笔记(二十七) Android中的动态广播和静态广播
广播接收器注册一共有两种形式 : 静态注册和动态注册. 两者及其接收广播的区别: 1.动态注册的广播 永远要快于 静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低>\ ...
- IP地址的总结
目前所使用的是IPV4,它是一个32位的整数,一般表示为 W.X.Y.Z格式,分为2部分,网络号和主机号,正是有了这种分层的结构,才支持了组播了淡泊,他是internet最终地址. 举例:192.16 ...
- Zabbix监控平台-----深入理解zabbix
一,Zabbix Web操作深入 (1)创建一个模版,所有的功能几乎都是在模版中定义的 点进新创建的模版查看,模版里几乎可以设定我们需要的所有功能 (2)在模版里创建应用集,应用集的作用就是将众多的监 ...
- MySQL进阶10--DML数据操纵预言: insert/delete/update --多表连接修改/.多表连接删除/多表连接查询-- truncate 和 delete的区别
/* DML -- 数据操纵预言: insert/delete/update */ #一: 插入语句 /* 语法1: insert into 表名(列名,..,列名....) values(值1,值2 ...
- 大数据之路week07--day04 (Linux 中查看文件内容的关键字处)
Linux如何对文件内容中的关键字进行查找 如果是用vi打开文件后,在命令行下输入“/关键字” 如果是在没有打开文件的前提就用"cat 文件名 | grep "关键字" ...