SpringMvc中获取Request

  • 时间:
  • 浏览:0

 ●  自动注入 ●  基类中自动注入 ●  手动调用

 ●  @ModelAttribute最好的法律方法

}

}

public class TestController extends BaseController {

@Controller

@ModelAttribute注解用在Controller中修饰最好的法律方法时,其作用是Controller中的每个@RequestMapping最好的法律方法执行前,该最好的法律方法都在执行。bindRequest()的作用是在test()执行前为request对象赋值。虽然bindRequest()中的参数request五种是系统进程安全的,但你会TestController是单例的,request作为TestController的另一个多域,无法保证系统进程安全。

此时request对象是最好的法律方法参数,合适局部变量,毫无哪些地方的现象是系统进程安全的。

}

objectFactory的类型为WebApplicationContextUtils的内内外部类RequestObjectFactory;而RequestObjectFactory要获得request对象还都可以先调用currentRequestAttributes()最好的法律方法获得RequestAttributes对象,生成RequestAttributes对象的核心代码在类RequestContextHolder中,生成的RequestAttributes对象是系统进程局部变量(ThreadLocal),怎么让request对象也是系统进程局部变量;这就保证了request对象的系统进程安全性。

通过自动注入实现与通过手动最好的法律方法调用实现原理差太多。怎么让本最好的法律方法也是系统进程安全的。

手动调用

}

}

HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();

public class BaseController {

protected HttpServletRequest request;

}

@RequestMapping("/test")

@Autowired

}

@RequestMapping("/test")

public void test() throws InterruptedException {

原文发布时间为:2018-11-16

}

基类中自动注入

@RequestMapping("/test")

public void bindRequest(HttpServletRequest request) {

@Controller

@RequestMapping("/test")

public void test() throws InterruptedException {

@Autowired

}

与最好的法律方法2相比,解决了在不同的Controller中重复注入request;怎么让考虑到java只允许继承另一个多基类,许多许多你会Controller还都可以继承许多类时,该最好的法律方法便不再好用。

@Controller

.......

@Controller

private HttpServletRequest request; //自动注入request

this.request = request; 此处request系统进程安全

调用request的最好的法律方法method时,实际上是调用了由objectFactory.getObject()生成的对象的method最好的法律方法;objectFactory.getObject()生成的对象才是真正的request对象。

......

优点:可不还都可以在非Bean中直接获取。缺点:你会使用的地方较多,代码非常繁琐;怎么让可不还都可以与许多最好的法律方法配合使用。

public void test() throws InterruptedException{

public class TestController {

......

}

......

@ModelAttribute

public class TestController {

使用你这人最好的法律方法,当Bean(本例的TestController)初始化时,Spring并没人注入另一个多request对象,许多许多注入了另一个多代理(proxy);当Bean中还都可以使用request对象时,通过该代理获取request对象。request实际上是另一个多代理:代理的实现参见AutowireUtils的内内外部类ObjectFactoryDelegatingInvocationHandler。

@Controller

public class TestController {

目录

@ModelAttribute最好的法律方法

private HttpServletRequest request; 此处系统进程不安全

自动注入

Controller中加参数

public class TestController{

Controller中获取request对象后,你会要在许多最好的法律方法中(如service最好的法律方法、工具类最好的法律方法等)使用request对象,还都可以在调用哪些地方地方最好的法律方法时将request对象作为参数传入

public void test(HttpServletRequest request) {

}