在Web應用體系中,我們知道,容器控制Servlet的生命周期,負責封裝用戶請求給特定的Servlet。Servlet的具體職能如下:
HTTP中的各種方法對應HttpServlet方法使用HttpServletRequest接口獲取請求首部使用HttpServletResponse接口設置相應首部、設置響應內容類型、使用流、URL重定向擁有生命周期Servlet的一生: 尋找類->加載類->構造對象->init()變成真正的Servlet
Servlet生命中的三大重要時刻:
| 方法 | 何時調用 | 作用 | 是否可覆蓋 |
|---|---|---|---|
| init() | Servlet實例創建以后,提供服務前 | 初始化Servlet,只運行一次 | 可以 |
| service() | 第一個客戶請求到達時 | 確定調用何種方法,有自己的棧 | 不可以 |
| doGet()/doPost() | service()判斷以后 | 處理客戶端請求 | 至少要覆蓋一個 |
我們知道,Servlet主要是對請求/響應模型進行實現,因此,HttpServlet中重要的方法: 請求:
getHeader(String name)getRemotePort()…響應:
setContentType(String contentType)setHeader(String name, String value)getOutputSream()getWriter()setRedirect(String url)…我們的Servlet可以自己處理請求-響應細節,也可以把請求委托給其它中間件(服務器、Servlet)
轉發:URL不變,委托其它人(服務器內部跳轉)重定向:直接將請求定向到其它URL(讓客戶端二次請求) p.s. 不能再響應之后(已經往流里寫東西了),sendRedirect()既然我們說到URL,URL也是有相對URL和絕對URL,于是,
// 下面是使用相對URLresponse.sendRedirect("<someurl>");// 下面是使用絕對URL,從項目根尋址response.sendRedirect("/someurl");新聞熱點
疑難解答