在前面對HTTP請求的相關信息和Servlet是如何對HTTP請求進行處理的,接下來學習HTTPhtml
響應,以及Servlet對HTTP響應的處理。以後掌握Servlet對錶單的處理,以一個簡單的登陸驗證java
來學習。apache
一樣的先看看病了解下HTTP響應的格式。與HTTP請求相似HTTP響應也由3個部分組成:瀏覽器
一、協議狀態版本代碼描述服務器
二、響應頭jsp
三、響應正文ide
下面就是一個HTTP響應的實例:post
HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112學習
協議狀態代碼描述相似於HTTP請求的第一行,它描述了通訊所用的協議的版本,服務器對HTTPspa
請求處理的結果狀態, 200表示成功。
響應頭:和請求頭相似,其中包含了許多有用的信息,例如服務器類型、日期時間等。
響應正文:響應正文就是服務器返回的內容,通常狀況下是HTML靜態頁面。
值得一提是在協議狀態版本代碼描述中包含了HTTP狀態碼的信息例如200,它反映了服務器處理
HTTP請求的狀態,瞭解一些常見的狀態碼,是有一些好處的。
200 表示一切ok
404 表示請求資源not found
500 表示服務器內部錯誤
.................................
至於更詳細的東西,讀者能夠參考下面一篇文章:
http://www.360doc.com/content/10/0902/16/691214_50674867.shtml
Servlet對響應的處理一樣是經過HttpServletResponse進行封裝的,就此反射一下,看看實際的
實現類是什麼。
class org.apache.catalina.connector.ResponseFacade反射出來是Tomcat catalina裏面的類,這裏先無論,直接看Servlet源碼中HttpResponse提供的
一些比較重要的方法。
addCookie()添加Cookie
setHeader()設置響應頭
getWriter():獲得PrintWriter對象用於向客戶端傳送普通文本。
getOutputStream():獲得OutputStream對象用於向客戶端傳送二進制文本。
sendRedirect():請求重定向,吧請求定位到另外一個URL上,注意和請求轉發的區別。
這裏需找個時間作個總結。
看例子程序:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(response.getClass()); response.sendRedirect("index.jsp"); }當程序請求此Servlet,該Servlet會將請求重定向到index.jsp,最後將index.jsp裏面的內容
返回給瀏覽器。
咱們知道瀏覽器顯示的html靜態網頁,那麼客戶端和服務器是如何進行信息交互的呢?
換句話說客戶端的數據時如何提交到服務器的呢?這就要使用表單了,使用表單提交數據。
下面經過一個登錄驗證來實現表單數據的提交和驗證,順便將上一篇Servlet對HTTP請求的
處理和響應的處理結合起來。
首先完成一個簡單的登陸界面,login.jsp這裏
<form action="LoginCheck" method="post"> 姓名:<input type="text" name ="username"/></br> 密碼:<input type="password" name="password"/> </br> <input type="submit" value="登陸"/> </form>
在LoginCheck中進行簡單的登陸驗證
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Tomcat將表單信息封裝到請求正文中 //經過request對象獲得表單信息 String name = request.getParameter("username"); String password = request.getParameter("password"); //驗證 if(name.equals("kiritor")&&password.equals("kiritor")) { //跳轉到首頁,請求轉發方式 request.getRequestDispatcher("index.jsp").forward(request, response); } else { //跳轉錯誤信息頁面,請求重定向方式 response.sendRedirect("error.jsp"); } }至於登陸成功與失敗的兩種狀況,這裏就不貼圖了。
能夠看見的是上述表單的提交筆者使用的post方法,咱們知道表單的提交方式還有get的
方式,兩種到底有什麼區別呢?後續總結。
還有驗證成功與驗證失敗的跳轉方式也不同,一種是請求轉發、一種是重定向,二者
具體的用法和區別後續討論之。over!