Servlet生命週期和處理Http請求與響應
- servlet的生命週期:
1.容器開啟並載入servlet;
2.呼叫init()方法對servlet進行初始化;
3.當請求到來呼叫service()方法處理請求,傳送響應;
4.呼叫destory()方法銷燬servlet;
- servlet處理Http響應
來看看http的響應資訊結構包括:狀態行、響應頭、空行、訊息體;
狀態行中各個狀態碼代表的意思:
100-199:訊息;
200-299:響應成功;
300-399:頁面重定向;
400-499:客戶端發生錯誤;
500-599:伺服器端發生錯誤;
我們也可以手動來設定狀態碼:response.setError(狀態碼);
設定響應頭:response.setHeader(鍵,值);
設定訊息體(常用):
1.傳輸文字:response.getWriter();
2.傳輸二進位制檔案:response.getOutputStream();
請求的重定向:response.sendRedirect();
重定向原理:當一個請求到來時如果要進行重定向,伺服器會在狀態行傳送一個302的狀態碼,把傳送一個location的響應頭,客戶端獲得一個302的狀態碼後會將位址列修改為響應頭的location,然後再次傳送一個請求,在整個過程中客戶端傳送了兩次請求;
- servlet處理Http請求
來看看http的請求資訊結構包括:請求行、請求頭、空行、訊息體;
獲取屬性方法:request.getParemeter(name); request.getParemeterValues(name);
內部轉發:
RequestDispather dis = request.getRequestDispather("轉發地址");
dis.include(request,response);
dis.forward(request,response);
修正亂碼方法2:例:String name=request.getParemeter("name");
byte[] bt = name.getBytes("ISO8859-1");
name = new String(bt,"gbk");