SpringMVC 使用aop 调用 HttpServletRequest

 

请看org.springframework.web.context.request.ServletRequestAttributes源代码

方式一: 

ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();  

          HttpServletRequest request =attributes.getRequest();  

方式二:自己封装工具类

1.

package com.user.sessionFilter;  
  
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.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
import org.springframework.beans.factory.NoSuchBeanDefinitionException;  
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.stereotype.Component;
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;  
/**
 *  
 *Project:my
 *Description: 
 *@author Krystal
 * 2018年5月16日上午10:20:33
 */
@Aspect
@Component
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 (NoSuchBeanDefinitionException e) {  
            LOGGER.warn(e.getMessage());  
            return null;  
        }  
    }  
  

} 

2.

springMVC 配置   WebContextHolder在com.user 路径下

 <context:component-scan base-package="com.user" >
</context:component-scan>
<aop:aspectj-autoproxy proxy-target-class="true">  

</aop:aspectj-autoproxy>  

3. 调用 HttpServletRequest request = webContextHolder.getRequest();  之后就可以直接使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值