//ServletRequestAttributes may be null, check it first.
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
这样试试

解决方案 »

  1.   

    @defondes
    我是想要response啊
    不是request...
    我想回写cookie...
      

  2.   

    sorry,看看这个
    @Aspect
    public class MyAspect {    private Logger logger = LoggerFactory.getLogger(this.getClass());    @Pointcut("execution(public * com..controller.*Controller.*(..)) &&" +
                "!execution(public * com..NotThisController.*(..))") 
        private void pointCut(){} 
        
        @Before("pointCut()")
    public void beforeInit() throws Throwable {
         ServletWebRequest servletContainer = (ServletWebRequest)RequestContextHolder.getRequestAttributes();
         HttpServletRequest request = servletContainer.getRequest();
         HttpServletResponse response = servletContainer.getResponse();
    //do something
    }
        @After("pointCut()")
    public void afterInit() throws Throwable {
         ServletWebRequest servletContainer = (ServletWebRequest)RequestContextHolder.getRequestAttributes();
         HttpServletRequest request = servletContainer.getRequest();
         HttpServletResponse response = servletContainer.getResponse();
                 //do something
    }
    }
      

  3.   

    ServletWebRequest servletContainer = (ServletWebRequest)RequestContextHolder.getRequestAttributes();
    这个会抛异常:
    error is java.lang.ClassCastException: org.springframework.web.context.request.ServletRequestAttributes cannot be cast to org.springframework.web.context.request.ServletWebRequest
    我开题的时候已经说明了...
    我的springMVC版本是 3.0.5.RELEASE
      

  4.   

    这样试试HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    ServletWebRequest servletWebRequest=new ServletWebRequest(request);
    HttpServletResponse response=servletWebRequest.getResponse();
      

  5.   

    就没人在aop里写cookie吗
    除了参数注入或者ThreadLocal就没别的办法?
      

  6.   

    你可以写一个Filter  然后把Response 放在Reqeuest-Scoped的Bean里面