springmvc中获取request对象,加载biz(service)的方法
获取request对象:
首先配置web.xml文件-->
- <listener>
- <listener-class>
- org.springframework.web.context.request.RequestContextListener
- </listener-class>
- </listener>
然后在程序中获取:
代码:
- HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
在Controller中获取biz很简单,注解配置都行,一般用注解,@Autowired就搞定了,可是有时在普通java类中想获取到biz很麻烦,所以可以用下面的方式加载。
在普通类中加载biz,用SpringApplicationContext.getBean(xx.class);
代码:
- IKeyCodeBiz keyCodeBiz = SpringApplicationContext.getBean(IKeyCodeBiz.class);
版本二
利用Spring随时随地获得Request和Session
一、准备工作:
在web.xml中添加
<listener> <listener-class> org.springframework.web.context.request.RequestContextListener</listener-class> </listener>
二、使用方法:
1、方法一:通过代码实现
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
2、方法二:通过注解实现:
@Autowired private HttpServletRequest request;
Request作用域
<bean id="loginAction" class="com.foo.LoginAction" scope="request"/>
针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例,且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态,而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。当处理请求结束,request作用域的bean实例将被销毁。
Session作用域
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
针对某个HTTP Session,Spring容器会根据userPreferences bean定义创建一个全新的userPreferences bean实例,且该userPreferences bean仅在当前HTTP Session内有效。与request作用域一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userPreferences创建的实例,将不会看到这些特定于某个HTTP Session的状态变化。当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。
global session作用域
<bean id="userPreferences" class="com.foo.UserPreferences" scope="globalSession"/>
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。
请注意,假如你在编写一个标准的基于Servlet的web应用,并且定义了一个或多个具有global session作用域的bean,系统会使用标准的HTTP Session作用域,并且不会引起任何错误
二、为什么需要额外的配置RequestContextFilter
也许会有一个疑问,已经通过ContextLoaderListener(或ContextLoaderServlet)将Web容器与Spring容器整合,为什么这里还要用额外的RequestContextListener以支持Bean的另外3个作用域,原因是ContextLoaderListener实现ServletContextListener监听器接口,而ServletContextListener只负责监听Web容器的启动和关闭的事件。RequestContextFilter实现ServletRequestListener监听器接口,该监听器监听HTTP请求事件,Web服务器接收的每次请求都会通知该监听器。通过配置RequestContextFilter,Spring容器与Web容器结合的更加密切。
三、作用域依赖问题
如果将Web相关作用域的Bean注入到singleton或prototype的Bean中,这种情况下,需要Spring AOP
<bean name="car" class="com.demo.Car" scope="request">
<aop:scoped-proxy/>
</bean>
<bean id="boss" class="com.demo.Boss" >
<properrty name="car" ref="car" />
</bean>
转载于:https://www.cnblogs.com/Jeely/p/10811949.html
springmvc中获取request对象,加载biz(service)的方法相关推荐
- springMVC中获取request 对象
1.最简单的方式(注解法) @Autowired private HttpServletRequest request; 2.最麻烦 a. 在web.xml中配置一个监听 <listener&g ...
- java定时器任务中获取request对象 @Scheduled 获取request 对象 quartz中获取request对象
java定时器任务中获取request对象 @Scheduled 获取request 对象 quartz中获取request对象 一.问题描述 1.在java定时任务中,使用 @Scheduled 注 ...
- spring aspect通知中获取request对象
注:aop = aspect = 切面 在aspect 中一般是做: 事务控制.日志.权限控制 等等,这些场景. 在aop切面类中,直接使用ServletActionContext.getReques ...
- excel2007无法加载mysql_Excel2007中进行无法安装加载项的解决方法
最近在学数学模型,用规划求解来计算.以前用Excel XP,知道在工具中加载相关的宏,然后很顺利地就能求解.但是用Excel 2007就找不到北了,今天,学习啦小编就教大家在Excel2007中进行无 ...
- php怎么取request,PHP-如何在Guzzle中获取Request对象?
我需要使用Guzzle检查数据库中的很多项目.例如,项目数量为2000-5000.将其全部加载到单个数组中太多了,因此我想将其分成多个块:SELECT * FROM items LIMIT100.当最 ...
- SpringCloud工作笔记039---spring cloud、javaweb中获取request对象的几种方法
JAVA技术交流QQ群:170933152 这里我用的第二种,记录一下, 现在项目中,是微服务架构,做权限架构设计时,我通过request.getParemeter获取一个systype,来区分不同的 ...
- java获取当前request_java如何在一个普通的类中获取request对象
展开全部 你是指你的 web 项目中使用到一个工具性的类,它的形参中没有 HttpRequest 或 HttpSession 参数62616964757a686964616fe4b893e5b19e3 ...
- Spring获取request对象的几种方式
参考文章: 在SpringMVC中获取request对象的几种方式 Springboot获取request和response 使用Springboot,我们很多时候直接使用@PathVariable. ...
- java自定义上下文对象_Java框架_Spring应用上下文对象加载配置
我们都知道IOC是spring框架的核心,主要作用是控制反转,把我们需要的对象从容器中提供给我们,但是IOC是如何加载我们所需要的对象的? Spring容器是IOC容器的一种,它通过Applicati ...
最新文章
- 使用Suhosin保护PHP应用系统(禁用eval)
- 【DIY】RGB光立方
- matlab用lism求零输入响应,信号与系统matlab课后作业_北京交通大学讲解.docx
- java base64 编码 类_java base64编码和解码的三种方式 | 学步园
- 面向领域驱动的应用开发框架Apworks 2.5发布
- 美国智能家居止步不前 原因是产品过于碎片化
- java安全编码指南之:拒绝Denial of Service
- 与reCAPTCHA的Spring集成
- Python爬虫入门五URLError异常处理
- [Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.
- 个人自学ccna的资料+工大瑞普模拟器
- Python的安装部署
- Mysql Docker 主从配置
- python3.3 urllib.error.HTTPError: HTTP Error 403: Forbidden
- Github Atom汉化方式
- 航空三字代码表_航空运输三字代码表
- 关于pthread_cancel()的运用,取消点的理解
- 计算机应用研究 增刊,计算机应用研究增刊是核心吗_计算机研究应用_计算机应用...
- 破立之间:金融科技时代的普惠新机会、新挑战
- Linux·工作队列
热门文章
- 130. Surrounded Regions 被围绕的区域
- 2020\Simulation_1\5.数位递增的数
- 中国大学MOOC 编译原理 第6讲测验
- 征战蓝桥 —— 2016年第七届 —— C/C++A组第10题——最大比例
- ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车超声波避障实验(有舵机)
- 【C/C++11】天气APP:txt/xml文件处理入库(psurfdata.cpp,_shqx.h),数据结构设计(PowerDesigner)
- 【Java24】健康项目:环境搭建,预约管理(检查项和检查组管理)
- Jeson nano + 思岚激光雷达rplidar_s1 + ubuntu18.04
- 关于uint8_t/uint16_t/uint32_t/uint_fast16_t
- 【cJson】 JSON格式详解