SpringMVC Http请求工具代码类

时间:2023-03-09 19:12:03
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;
}
} }

相关文章