zoukankan      html  css  js  c++  java
  • WebApplicationContextUtils源码

    package org.springframework.web.context.support;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletRequest;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import org.springframework.beans.factory.ObjectFactory;
    import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
    import org.springframework.util.Assert;
    import org.springframework.web.context.WebApplicationContext;
    import org.springframework.web.context.request.RequestAttributes;
    import org.springframework.web.context.request.RequestContextHolder;
    import org.springframework.web.context.request.RequestScope;
    import org.springframework.web.context.request.ServletRequestAttributes;
    import org.springframework.web.context.request.SessionScope;
    
    public abstract class WebApplicationContextUtils
    {
      public static WebApplicationContext getRequiredWebApplicationContext(ServletContext sc)
        throws IllegalStateException
      {
        WebApplicationContext wac = getWebApplicationContext(sc);
        if (wac == null) {
          throw new IllegalStateException("No WebApplicationContext found: no ContextLoaderListener registered?");
        }
        return wac;
      }
    
      public static WebApplicationContext getWebApplicationContext(ServletContext sc)
      {
        return getWebApplicationContext(sc, WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
      }
    
      public static WebApplicationContext getWebApplicationContext(ServletContext sc, String attrName)
      {
        Assert.notNull(sc, "ServletContext must not be null");
        Object attr = sc.getAttribute(attrName);
        if (attr == null) {
          return null;
        }
        if ((attr instanceof RuntimeException)) {
          throw ((RuntimeException)attr);
        }
        if ((attr instanceof Error)) {
          throw ((Error)attr);
        }
        if ((attr instanceof Exception)) {
          IllegalStateException ex = new IllegalStateException();
          ex.initCause((Exception)attr);
          throw ex;
        }
        if (!(attr instanceof WebApplicationContext)) {
          throw new IllegalStateException("Context attribute is not of type WebApplicationContext: " + attr);
        }
        return (WebApplicationContext)attr;
      }
    
      public static void registerWebApplicationScopes(ConfigurableListableBeanFactory beanFactory)
      {
        beanFactory.registerScope("request", new RequestScope());
        beanFactory.registerScope("session", new SessionScope(false));
        beanFactory.registerScope("globalSession", new SessionScope(true));
    
        beanFactory.registerResolvableDependency(ServletRequest.class, new ObjectFactory() {
          public Object getObject() {
            RequestAttributes requestAttr = RequestContextHolder.currentRequestAttributes();
            if (!(requestAttr instanceof ServletRequestAttributes)) {
              throw new IllegalStateException("Current request is not a servlet request");
            }
            return ((ServletRequestAttributes)requestAttr).getRequest();
          }
        });
        beanFactory.registerResolvableDependency(HttpSession.class, new ObjectFactory() {
          public Object getObject() {
            RequestAttributes requestAttr = RequestContextHolder.currentRequestAttributes();
            if (!(requestAttr instanceof ServletRequestAttributes)) {
              throw new IllegalStateException("Current request is not a servlet request");
            }
            return ((ServletRequestAttributes)requestAttr).getRequest().getSession();
          }
        });
      }
    }
  • 相关阅读:
    移动端输入框的那些事
    HTML的各个标签的默认样式
    window.location.Reload()和window.location.href 区别
    JavaScript惰性函数定义
    JavaScript将具有父子关系的原始数据格式化成树形结构数据(id,pid)
    jQuery验证控件jquery.validate.js使用说明+中文API
    统计网页浏览次数
    vue 组件开发 props 验证
    vue过滤器在v2.0版本用法
    JQ中get()与eq()的区别
  • 原文地址:https://www.cnblogs.com/shaohz2014/p/3682780.html
Copyright © 2011-2022 走看看