java的aop获取request_spring aop 获取request、response对象

在网上看到有不少人说如下方式获取:

1.在web.xml中添加监听

org.springframework.web.context.request.RequestContextListener

2.在aop类中有以下两种方式获取

@Autowired

HttpServletRequest request; //这里可以获取到request

或者

HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();

但是我试后,发现都获取不到。

既然这样那就要用其他方式获取了。

1. 新建一个存储request、response对象的类

importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;public classSysContent {private static ThreadLocal requestLocal = new ThreadLocal();private static ThreadLocal responseLocal = new ThreadLocal();public staticHttpServletRequest getRequest() {return(HttpServletRequest) requestLocal.get();

}public static void setRequest(HttpServletRequest request) {

requestLocal.set(request);

}

public static HttpServletResponse getResponse() {

return (HttpServletResponse) responseLocal.get();

}

public static void setResponse(HttpServletResponse response) {

responseLocal.set(response);

}public staticHttpSession getSession() {return(HttpSession) ((HttpServletRequest) requestLocal.get()).getSession();

}

}

2. 新建一个filter,并在web.xml中添加filter配置

importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;public class InitContent implementsFilter {

@Overridepublic voiddoFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)throwsIOException, ServletException {

SysContent.setRequest((HttpServletRequest) arg0);

SysContent.setResponse((HttpServletResponse) arg1);

arg2.doFilter(arg0, arg1);

}

@Overridepublic void init(FilterConfig arg0) throwsServletException {

}

@Overridepublic voiddestroy() {

}

}

web.xml

InitContent

com.*.filter.InitContent

InitContent

/*

这样一来,每次请求的request、response都存在了ThreadLocal中,每次需要的时候从里面获取即可

HttpServletRequest request = SysContent.getRequest();

HttpServletResponse response = SysContent.getResponse();

HttpSession session = SysContent.getSession();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值