zoukankan      html  css  js  c++  java
  • SpringMVC Http请求工具代码类

    在SpringMVC的源代码中也提供了一个封装过的ThreadLocal,其中保存了每次请求的HttpServletRequest对象,(详细请看org.springframework.web.context.request.ServletRequestAttributes的源代码) 。
    
    这样我们就可以进行简单封装一下写一个工具进行使用:
    
    *当然必不可少的一点一定记得,在web.xml里必须要有相应的配置来支持 
    
    
    <listener>  
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>  
    </listener>  
    
    
    工具类代码:
    
    
    package samples.utils;  
      
    import java.util.Arrays;  
    import java.util.Collection;  
    import java.util.Locale;  
      
    import javax.servlet.ServletContext;  
    import javax.servlet.http.HttpServletRequest;  
    import javax.servlet.http.HttpSession;  
    import javax.sql.DataSource;  
      
    import org.slf4j.Logger;  
    import org.slf4j.LoggerFactory;  
    import org.springframework.beans.factory.NoSuchBeanDefinitionException;  
    import org.springframework.beans.factory.NoUniqueBeanDefinitionException;  
    import org.springframework.context.ApplicationContext;  
    import org.springframework.context.ApplicationEventPublisher;  
    import org.springframework.context.MessageSource;  
    import org.springframework.core.convert.ConversionService;  
    import org.springframework.core.io.ResourceLoader;  
    import org.springframework.core.io.support.ResourcePatternResolver;  
    import org.springframework.ui.context.Theme;  
    import org.springframework.util.ClassUtils;  
    import org.springframework.web.context.request.RequestContextHolder;  
    import org.springframework.web.context.request.ServletRequestAttributes;  
    import org.springframework.web.context.support.WebApplicationContextUtils;  
    import org.springframework.web.servlet.LocaleResolver;  
    import org.springframework.web.servlet.ThemeResolver;  
    import org.springframework.web.servlet.support.RequestContextUtils;  
      
      
    /** 
     * SpringMVC通用工具 
     * @author 
     */  
    public final class WebContextHolder {  
          
        private static final Logger LOGGER = LoggerFactory.getLogger(WebContextHolder.class);       
        private static final WebContextHolder INSTANCE = new WebContextHolder();  
          
        public WebContextHolder get() {  
            return INSTANCE;  
        }  
      
        private WebContextHolder() {  
            super();  
        }  
          
        // --------------------------------------------------------------------------------------------------------------  
          
        public HttpServletRequest getRequest() {  
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
            return attributes.getRequest();  
        }  
          
        public HttpSession getSession() {  
            return getSession(true);  
        }  
          
        public HttpSession getSession(boolean create) {  
            return getRequest().getSession(create);  
        }  
          
        public String getSessionId() {  
            return getSession().getId();  
        }  
          
        public ServletContext getServletContext() {  
            return getSession().getServletContext();    // servlet2.3  
        }  
          
        public Locale getLocale() {  
            return RequestContextUtils.getLocale(getRequest());  
        }  
          
        public Theme getTheme() {  
            return RequestContextUtils.getTheme(getRequest());  
        }  
      
        public ApplicationContext getApplicationContext() {  
            return WebApplicationContextUtils.getWebApplicationContext(getServletContext());  
        }  
          
        public ApplicationEventPublisher getApplicationEventPublisher() {  
            return (ApplicationEventPublisher) getApplicationContext();  
        }  
          
        public LocaleResolver getLocaleResolver() {  
            return RequestContextUtils.getLocaleResolver(getRequest());  
        }  
          
        public ThemeResolver getThemeResolver() {  
            return RequestContextUtils.getThemeResolver(getRequest());  
        }  
          
        public ResourceLoader getResourceLoader() {  
            return (ResourceLoader) getApplicationContext();  
        }  
          
        public ResourcePatternResolver getResourcePatternResolver() {  
            return (ResourcePatternResolver) getApplicationContext();  
        }  
      
        public MessageSource getMessageSource() {  
            return (MessageSource) getApplicationContext();  
        }  
          
        public ConversionService getConversionService() {  
            return getBeanFromApplicationContext(ConversionService.class);  
        }  
      
        public DataSource getDataSource() {  
            return getBeanFromApplicationContext(DataSource.class);  
        }  
      
        public Collection<String> getActiveProfiles() {  
            return Arrays.asList(getApplicationContext().getEnvironment().getActiveProfiles());  
        }  
          
        public ClassLoader getBeanClassLoader() {  
            return ClassUtils.getDefaultClassLoader();  
        }  
      
        private <T> T getBeanFromApplicationContext(Class<T> requiredType) {  
            try {  
                return getApplicationContext().getBean(requiredType);  
            } catch (NoUniqueBeanDefinitionException e) {  
                LOGGER.error(e.getMessage(), e);  
                throw e;  
            } catch (NoSuchBeanDefinitionException e) {  
                LOGGER.warn(e.getMessage());  
                return null;  
            }  
        }  
      
    }  
  • 相关阅读:
    Django xadmin
    Linux 目录
    服务器的组件
    C# 判断数字的小方法
    Eclipse快捷键
    安卓资源与ID不对应的问题
    Java中Runnable和Thread的区别
    View的setOnClickListener的添加方法
    如何实现消息框风格的Activity
    安卓开发的在线调试
  • 原文地址:https://www.cnblogs.com/zuochanzi/p/9572274.html
Copyright © 2011-2022 走看看