`

springmvc中获取request对象,加载biz(service)的方法

 
阅读更多

获取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>  

 

 

分享到:
评论

相关推荐

    如何在springMVC的controller中获取request

    在 SpringMVC 中获取 Request 对象 在 SpringMVC 框架中,获取 Request 对象是一个非常重要的操作。很多时候,我们需要在 Controller 中获取 Request 对象以便实现某些功能,例如身份验证、Cookie 操作等。那么,在...

    SpringMVC接收多个对象的4种方法

    本文将详细讲解四种不同的方法来接收并处理多个对象,以满足后端控制器从前端表单获取多名乘客信息的需求。 1. **表单提交,以字段数组接收** 这是最基础的方法,通过在HTML表单中定义相同名称的输入字段,但通过...

    SpringMVC 传递 和 返回对象实例 以及 zTree例子

    在SpringMVC框架中,开发人员经常需要处理对象实例的传递和返回,这涉及到模型绑定、数据转换和服务层之间的交互。本示例将探讨如何在SpringMVC中有效地完成这一任务,并结合zTree这一前端组件展示如何进行数据交互...

    springmvc框架已做service注入

    总结一下,"springmvc框架已做service注入"是指在 Spring MVC 项目中,Controller 类通过 Spring 的依赖注入机制,自动获得了 Service 类的实例,从而实现了业务逻辑和控制逻辑的分离。这一设计遵循了面向对象设计...

    SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(下)

    在这个例子中,`createUser` 方法使用 `@RequestBody` 从请求体中获取JSON数据并转换为 `CreateUserRequest` 对象。而 `getUser` 方法返回一个 `User` 对象,通过 `@ResponseBody` 将其转换为JSON并返回给客户端。 ...

    SpringMVC中RequestContextHolder获取请求信息的方法

    在Spring MVC框架中,RequestContextHolder是一个非常实用的工具类,它允许我们在Service层以及其它非Controller层获取到当前HTTP请求的相关信息,如HttpServletRequest对象、HttpServletResponse对象等。...

    SpringMvc中获取 PathVariable的值的方式.docx

    以下是关于在Spring MVC中获取`PathVariable`的值的详细方法: ### 一、URL模板与`@PathVariable` 在URL模板中,大括号 `{}` 用于定义变量,例如 `/del/{id}`。这里的 `{id}` 是一个变量,它会在请求匹配到该路径...

    Springmvc获取URL

    java SpringMVC获取URLjava SpringMVC获取URLjava SpringMVC获取URLjava SpringMVC获取URL

    springMVC整合xStream实现对象和xml转换

    6. **返回响应**:最后,从Controller方法中返回ModelAndView,SpringMVC会自动检测到视图名"empty",并以XML格式返回`xml`对象的内容。 在实际应用中,你可能还需要考虑一些其他因素,例如错误处理、性能优化、...

    springMVC基本配置(Controller+Service+Dao)

    当浏览器访问`http://localhost:8080/yourApp/hello`时,SpringMVC会调用`HelloController`中的`hello()`方法,并显示对应的视图。 以上就是SpringMVC的基本配置,通过控制层、业务逻辑层和持久层的分离,我们可以...

    springmvc获取并保存base64编码的图片的方法

    ajax post 上传图片springmvc获取并保存base64编码的图片的方法

    springmvc所有方法url映射获取

    通过重写dispatcherservlet的一个doservice方法把springmvc的url对应方法打印出来。 所需要做的是: 1,使用本文件作为原先springmvc的xml文件的dispatcherservlet。 2,启动项目,随意发送一个请求,可以在控制台...

    基于MAVEN的SpringMVC+Mybatis整合及dao、service强封装

    SpringMVC+Mybatis整合及dao、service强封装:一、SPringMVC与Mybatis框架整合,其中SpringMVC主要采用注解方式实现,Mybatis采用xml为主,对数据库开发、测试、部署环境进行分离配置;二、在封装上针对Mybatis进行...

    springmvc+extjs4实例树

    在SpringMVC和ExtJS4的结合中,SpringMVC可能负责处理后端数据的获取和更新,而ExtJS4则负责在前端呈现这些数据为可交互的树形视图。 **实现步骤** 1. **配置SpringMVC**:首先,需要在SpringMVC的配置文件中定义...

    SpringMVC传递和返回对象实例以及zTree例子

    在SpringMVC框架中,处理数据的传递和...通过上述步骤,你可以在SpringMVC应用中顺利地处理对象实例的传递和返回,并结合zTree展示层级数据。这在构建Web应用时非常有用,特别是在处理表单提交、展示树状结构数据时。

    springMVC解决中文乱码

    解决 SpringMVC 中的中文乱码问题可以通过多种方法来实现,包括在 web.xml 文件中配置字符编码、使用注解配置字符编码、使用 CharacterEncodingFilter 或者自定义 Filter 等。这些方法都可以有效地解决中文乱码问题...

    SpringMVC 中xml文件的读取与显示

    控制器可以通过`ModelAndView`对象或者直接在`@RequestMapping`方法中返回逻辑视图名来指定JSP页面。 例如,一个简单的控制器可能是这样的: ```java @Controller public class HelloWorldController { @...

    SpringMVC中文教程

    ### SpringMVC中文教程知识点概览 #### 一、SpringMVC简介 SpringMVC是Spring框架的一个模块,专门用于简化Web应用程序...希望本文档能为读者提供足够的基础知识和实践经验,以便能够在实际项目中成功应用SpringMVC。

    SpringMVC中一个Controller多个方法

    在实际项目中,我们还可以使用`@PathVariable`捕获URL路径中的动态参数,`@RequestParam`获取请求参数,`@RequestBody`读取请求体中的JSON或XML数据,以及`@ResponseBody`将方法返回值直接写入响应体。 另外,`@...

Global site tag (gtag.js) - Google Analytics