? ? ?? 接口javax.servlet.ServletRequest聲明了相當(dāng)多的方法拆檬。其中值得關(guān)注的方法有:
????????????一對(duì)set/getAttribute方法以及removeAttribute
????????????getContentType方法
????????????getParameter方法
????????????getRequestDipatcher方法
? ? ? ? ? ? getServletContext方法
? ? ? ? 子接口HttpServletRequest額外新聲明了很多方法廷没,其中值得關(guān)注的方法有:
? ? ? ? ? ? getCookies方法
? ? ? ? ? ? getHeader方法
? ? ? ? ? ? getQueryString方法
? ? ? ? ? ? getSession方法
? ? ? ? ? ? getPart方法
? ? ? ? 和ServletConfig一樣,HttpServletRequest及ServletRequest的實(shí)現(xiàn)類(lèi)是由Servlet容器自己決定生成滥玷。但是為了便于其他另外的框架改寫(xiě)(Http)ServletRequest實(shí)現(xiàn)類(lèi),又提供了對(duì)應(yīng)的包裝類(lèi):(Http)ServletRequestWrapper。
????????ServletRequestWrapper實(shí)例域有一成員變量埃撵,類(lèi)型為ServletRequest。它僅有一個(gè)構(gòu)造函數(shù)虽另。
????????ServletRequestWrapper也實(shí)現(xiàn)接口ServletRequest暂刘,但它的實(shí)現(xiàn)方法內(nèi)部均是通過(guò)內(nèi)部持有的servletRequest調(diào)用。如:
????????ServletRequestWrapper真正意義在于其他任何框架都可以通過(guò)它再包裝捂刺,從而與任何Servlet容器解耦谣拣。當(dāng)然,其他框架也可以仿照ServletRequestWrapper族展,自己提供一個(gè)包裝類(lèi)實(shí)現(xiàn)ServletRequest接口森缠,而不是繼承ServletRequestWrapper,但是繼承ServletRequestWrapper的好處在于ServletRequestWrapper是一個(gè)實(shí)現(xiàn)類(lèi)仪缸,框架開(kāi)發(fā)者只需重寫(xiě)自己感興趣的方法贵涵。盡管這里討論的是ServletRequest,但HttpServletRequest也是如此腹殿。