怎么在Spring中取得Request对象

如何在Spring中取得Request对象

这里首先需要说明一点的是,下面讲的获取Request对象都是在Controller层中进行的操作。因为对于Controller来说,若要用到Request对象的话,直接在方法签名中声明一个HttpServletRequest对象就可以了。另外作为一个良好的Controller-Service-Dao架构,HttpServletRequest对象也不应该出现在Service层或Dao层中,那么其实也就是在一些通用的工具类中才会需要用到它。OK,下面开始正题:

注解

public class TestUtil {
    @Autowired  
    private HttpServletRequest request; //这里可以获取到request
}

配置Listener

web.xml中配置一个RequestContextListener

<listener>  
    <listener-class>  
        org.springframework.web.context.request.RequestContextListener  
    </listener-class>  
</listener>  

配置完成之后,在代码中就可以获取到Request对象了

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes()).getRequest();
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes()).getResponse();

如果有Struts

HttpServletRequest request = ServletActionContext.getRequest();