zoukankan      html  css  js  c++  java
  • spring HttpServletRequest 简介

    前提:工作遇到controller中通过注解的方式注入

    @Resource
    private HttpServletRequest request;

    我们都知道spring 默认是单例,当遇到并发的时候线程不安全,但是经过测试它安全的。

    综上,确定spring肯定对它做了处理,因此打开我的探索之路.....

    上源码

    public class RequestContextListener implements ServletRequestListener {
    private static final String REQUEST_ATTRIBUTES_ATTRIBUTE = RequestContextListener.class.getName() + ".REQUEST_ATTRIBUTES";

    public RequestContextListener() {
    }

    public void requestInitialized(ServletRequestEvent requestEvent) {
    if(!(requestEvent.getServletRequest() instanceof HttpServletRequest)) {
    throw new IllegalArgumentException("Request is not an HttpServletRequest: " + requestEvent.getServletRequest());
    } else {
    HttpServletRequest request = (HttpServletRequest)requestEvent.getServletRequest();
    ServletRequestAttributes attributes = new ServletRequestAttributes(request);
    request.setAttribute(REQUEST_ATTRIBUTES_ATTRIBUTE, attributes);
    LocaleContextHolder.setLocale(request.getLocale());
            //放到这里了,RequestContextHolder下的requestAttributes让我们跟进去瞅瞅
    RequestContextHolder.setRequestAttributes(attributes);
    }
    }

    ----------------------------------------------------------------------------------------------------------------
    public abstract class RequestContextHolder {
    private static final boolean jsfPresent = ClassUtils.isPresent("javax.faces.context.FacesContext", RequestContextHolder.class.getClassLoader());
      //原来如此啊,是通过threadLocal去保证的
    private static final ThreadLocal<RequestAttributes> requestAttributesHolder = new NamedThreadLocal("Request attributes");
    private static final ThreadLocal<RequestAttributes> inheritableRequestAttributesHolder = new NamedInheritableThreadLocal("Request context");

    public RequestContextHolder() {
    }





    
    
  • 相关阅读:
    oracle安装过程中遇到的问题
    HttpContext.Current 的缺陷
    oracle 复杂语句
    .net 中 ref out params的区别
    查看修改mysql编码方式[转载]
    Oracle 中的dual是什么东西
    KindEditor问题汇总【不定时更新】
    java中import、package作用和用法
    [笔记]: 哈弗曼树(最优二叉树) 标签: 二叉树 2017-05-17 16:38 34人阅读 评论(0) 收
    [noip 2004普及组] FBI树 标签: 二叉树递归 2017-05-17 14:29 40人阅读 评论(0)
  • 原文地址:https://www.cnblogs.com/xlh91118/p/6132999.html
Copyright © 2011-2022 走看看