接口javax.servlet.ServletRequest声明了相当多的方法。其中值得关注的方法有:
一对set/getAttribute方法以及removeAttribute
getContentType方法
getParameter方法
getRequestDipatcher方法
getServletContext方法
子接口HttpServletRequest额外新声明了很多方法,其中值得关注的方法有:
getCookies方法
getHeader方法
getQueryString方法
getSession方法
getPart方法
和ServletConfig一样,HttpServletRequest及ServletRequest的实现类是由Servlet容器自己决定生成。但是为了便于其他另外的框架改写(Http)ServletRequest实现类,又提供了对应的包装类:(Http)ServletRequestWrapper。
ServletRequestWrapper实例域有一成员变量,类型为ServletRequest。它仅有一个构造函数。
ServletRequestWrapper也实现接口ServletRequest,但它的实现方法内部均是通过内部持有的servletRequest调用。如:
ServletRequestWrapper真正意义在于其他任何框架都可以通过它再包装,从而与任何Servlet容器解耦。当然,其他框架也可以仿照ServletRequestWrapper,自己提供一个包装类实现ServletRequest接口,而不是继承ServletRequestWrapper,但是继承ServletRequestWrapper的好处在于ServletRequestWrapper是一个实现类,框架开发者只需重写自己感兴趣的方法。尽管这里讨论的是ServletRequest,但HttpServletRequest也是如此。