Servlet之HTTP響應處理、表單處理

           前言

                        在前面對HTTP請求的相關信息和Servlet是如何對HTTP請求進行處理的,接下來學習HTTP

                    響應,以及Servlet對HTTP響應的處理。之後掌握Servlet對錶單的處理,以一個簡單的登錄驗證

                    來學習。

           HTTP響應

                       同樣的先看看病了解下HTTP響應的格式。與HTTP請求類似HTTP響應也由3個部分組成:

                              1、協議狀態版本代碼描述

                              2、響應頭

                              3、響應正文

                       下面就是一個HTTP響應的實例:

                             HTTP/1.1 200 OK
                             Server:Apache Tomcat/5.0.12
                             Date:Mon,6Oct2003 13:23:42 GMT
                             Content-Length:112

                       協議狀態代碼描述類似於HTTP請求的第一行,它描述了通信所用的協議的版本,服務器對HTTP

                    請求處理的結果狀態, 200表示成功。

                       響應頭:和請求頭類似,其中包含了許多有用的信息,例如服務器類型、日期時間等。

                       響應正文:響應正文就是服務器返回的內容,一般情況下是HTML靜態頁面。

                      值得一提是在協議狀態版本代碼描述中包含了HTTP狀態碼的信息例如200,它反映了服務器處理

                      HTTP請求的狀態,瞭解一些常見的狀態碼,是有一些好處的。

                            200  表示一切ok

                            404  表示請求資源not found

                            500 表示服務器內部錯誤

                            .................................

                     至於更詳細的東西,讀者可以參考下面一篇文章:

                        http://www.360doc.com/content/10/0902/16/691214_50674867.shtml

              Servet對HTTP響應的處理

                            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!


                          

                    

          

                          

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章