1. 程式人生 > >jsp中doGet和doPost的區別

jsp中doGet和doPost的區別

Serlvet介面只定義了一個服務方法就是service,而HttpServlet類實現了該方法並且要求呼叫下列的方法之一:
doget:處理GET請求
doPost:處理POST請求

當發出客戶端請求的時候,呼叫service 方法並傳遞一個請求和響應物件。Servlet首先判斷該請求是GET 操作還是POST 操作。然後它呼叫下面的一個方法:doget或 doPost。如果請求是GET就呼叫doget方法,如果請求是POST就呼叫doPost方法。 doget和doPost都接受請求(HttpServletRequest)和響應(HttpServletResponse)。

1.doGet
GET 呼叫用於獲取伺服器資訊,並將其做為響應返回給客戶端。當經由Web瀏覽器或通過HTML、JSP直接訪問Servlet的URL時,一般用GET呼叫。 GET呼叫在URL裡顯示正傳送給SERVLET的資料,這在系統的安全方面可能帶來一些問題,比如使用者登入,表單裡的使用者名稱和密碼需要傳送到伺服器端, 若使用Get呼叫,就會在瀏覽器的URL中顯示使用者名稱和密碼。
例:
jsp頁程式碼:
<form action="/doGet_servlet" name=”form1” method="get">
………
<input type="text" name="username">
………
</form>
servlet程式碼:
public class doGet_servlet extends HttpServlet {
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
      request.setCaracterEncoding(“UTF-8”);//漢字轉碼
      String username = request.getParameter("username");

request.setAttribute("username",username);

       request.getRequestDispatcher("/out.jsp").forward(request, response);//跳轉到out.jsp頁面

  }
}

out.jsp頁面

<html>

``````

<%=request.getAttribute("username")%>//在頁面上輸出username的資訊

</html>
這樣提交表單後,引數會自動新增到瀏覽器位址列中,帶來安全性問題。

2.doPost
它用於客戶端把資料傳送到伺服器端,也會有副作用。但好處是可以隱藏傳送給伺服器的任何資料。Post適合傳送大量的資料。
例:
jsp頁程式碼:
<form action="/doPostt_servlet" name=”form2” method="post">
………
<textarea name="name2" cols="50" rows="10"></textarea>
………
</form>
servlet程式碼:
public class doPostt_servlet extends HttpServlet {
  public void doPost(HttpServletRequest request,HttpServletResponse esponse) throws IOException,ServletException {
      request.setCaracterEncoding(“UTF-8”);//漢字轉碼
      PrintWriter out = response.getWriter();
      out.println("The Parameter are :"+request.getParameter("name2"));
  }
}
最好用上面在doGet中提到的輸出方式進行輸出