获取request对象:

首先配置web.xml文件-->

[html] view plaincopy
  1. <listener>
  2. <listener-class>
  3. org.springframework.web.context.request.RequestContextListener
  4. </listener-class>
  5. </listener>

然后在程序中获取:

代码:

[java] view plaincopy
  1. HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();

在Controller中获取biz很简单,注解配置都行,一般用注解,@Autowired就搞定了,可是有时在普通java类中想获取到biz很麻烦,所以可以用下面的方式加载。

在普通类中加载biz,用SpringApplicationContext.getBean(xx.class);

代码:

[java] view plaincopy
  1. 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;

三、关于RequestContextListener的背景知识:
基于LocalThread将HTTP request对象绑定到为该请求提供服务的线程上。这使得具有request和session作用域的bean能够在后面的调用链中被访问到。

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)的方法相关推荐

  1. springMVC中获取request 对象

    1.最简单的方式(注解法) @Autowired private HttpServletRequest request; 2.最麻烦 a. 在web.xml中配置一个监听 <listener&g ...

  2. java定时器任务中获取request对象 @Scheduled 获取request 对象 quartz中获取request对象

    java定时器任务中获取request对象 @Scheduled 获取request 对象 quartz中获取request对象 一.问题描述 1.在java定时任务中,使用 @Scheduled 注 ...

  3. spring aspect通知中获取request对象

    注:aop = aspect = 切面 在aspect 中一般是做: 事务控制.日志.权限控制 等等,这些场景. 在aop切面类中,直接使用ServletActionContext.getReques ...

  4. excel2007无法加载mysql_Excel2007中进行无法安装加载项的解决方法

    最近在学数学模型,用规划求解来计算.以前用Excel XP,知道在工具中加载相关的宏,然后很顺利地就能求解.但是用Excel 2007就找不到北了,今天,学习啦小编就教大家在Excel2007中进行无 ...

  5. php怎么取request,PHP-如何在Guzzle中获取Request对象?

    我需要使用Guzzle检查数据库中的很多项目.例如,项目数量为2000-5000.将其全部加载到单个数组中太多了,因此我想将其分成多个块:SELECT * FROM items LIMIT100.当最 ...

  6. SpringCloud工作笔记039---spring cloud、javaweb中获取request对象的几种方法

    JAVA技术交流QQ群:170933152 这里我用的第二种,记录一下, 现在项目中,是微服务架构,做权限架构设计时,我通过request.getParemeter获取一个systype,来区分不同的 ...

  7. java获取当前request_java如何在一个普通的类中获取request对象

    展开全部 你是指你的 web 项目中使用到一个工具性的类,它的形参中没有 HttpRequest 或 HttpSession 参数62616964757a686964616fe4b893e5b19e3 ...

  8. Spring获取request对象的几种方式

    参考文章: 在SpringMVC中获取request对象的几种方式 Springboot获取request和response 使用Springboot,我们很多时候直接使用@PathVariable. ...

  9. java自定义上下文对象_Java框架_Spring应用上下文对象加载配置

    我们都知道IOC是spring框架的核心,主要作用是控制反转,把我们需要的对象从容器中提供给我们,但是IOC是如何加载我们所需要的对象的? Spring容器是IOC容器的一种,它通过Applicati ...

最新文章

  1. 使用Suhosin保护PHP应用系统(禁用eval)
  2. 【DIY】RGB光立方
  3. matlab用lism求零输入响应,信号与系统matlab课后作业_北京交通大学讲解.docx
  4. java base64 编码 类_java base64编码和解码的三种方式 | 学步园
  5. 面向领域驱动的应用开发框架Apworks 2.5发布
  6. 美国智能家居止步不前 原因是产品过于碎片化
  7. java安全编码指南之:拒绝Denial of Service
  8. 与reCAPTCHA的Spring集成
  9. Python爬虫入门五URLError异常处理
  10. [Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.
  11. 个人自学ccna的资料+工大瑞普模拟器
  12. Python的安装部署
  13. Mysql Docker 主从配置
  14. python3.3 urllib.error.HTTPError: HTTP Error 403: Forbidden
  15. Github Atom汉化方式
  16. 航空三字代码表_航空运输三字代码表
  17. 关于pthread_cancel()的运用,取消点的理解
  18. 计算机应用研究 增刊,计算机应用研究增刊是核心吗_计算机研究应用_计算机应用...
  19. 破立之间:金融科技时代的普惠新机会、新挑战
  20. Linux·工作队列

热门文章

  1. 130. Surrounded Regions 被围绕的区域
  2. 2020\Simulation_1\5.数位递增的数
  3. 中国大学MOOC 编译原理 第6讲测验
  4. 征战蓝桥 —— 2016年第七届 —— C/C++A组第10题——最大比例
  5. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车超声波避障实验(有舵机)
  6. 【C/C++11】天气APP:txt/xml文件处理入库(psurfdata.cpp,_shqx.h),数据结构设计(PowerDesigner)
  7. 【Java24】健康项目:环境搭建,预约管理(检查项和检查组管理)
  8. Jeson nano + 思岚激光雷达rplidar_s1 + ubuntu18.04
  9. 关于uint8_t/uint16_t/uint32_t/uint_fast16_t
  10. 【cJson】 JSON格式详解