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;  
        }  
    }  
  
}  

猜你喜欢

转载自www.cnblogs.com/zuochanzi/p/9572274.html