Get和Post請求和如何在Servlet中獲取請求資訊
阿新 • • 發佈:2019-02-17
1.Get請求和Post請求
1).使用GET方式傳遞引數:
①.在瀏覽器位址列中輸入某個URL地址或單擊網頁上的一個超連結時,瀏覽器發出的HTTP請求訊息的請求方式GET。
②.如果網頁中的<form>表單元素的method屬性被設定為了“GET”。瀏覽器提交這個FORM表單時生成的Http請求訊息的請求方式也為GET。
③.使用GET請求方式給WEB伺服器傳遞引數的格式:http://www.zzz.com/counter.jsp?name=1&password=111
④.使用GET方式傳送的資料量一般限制在1KB以下。
2).使用POST方式傳遞引數:
①. POST 請求方式主要用於向WEB伺服器端程式提交form表單中的資料:form 表單的method 置為POST
②.POST 方式將各個表單欄位元素及其資料作為Http訊息的實體內容傳送給WEB伺服器,傳送的資料量要比使用GET方式傳送的資料量大得多。
2.如何在Servlet中獲取請求資訊:
1).servlet的service()方法用於應答請求:因為每次請求都會呼叫service()方法
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {}
ServletRequest:封裝了請求資訊, 可以從中獲取到任何的請求資訊。
ServletResponse:封裝了響應資訊,如果想給使用者什麼響應,具體可以使用該介面的方法實現
這兩個介面的實現類都是伺服器給予實現的,並在伺服器呼叫service方法時傳入。
2).ServletRequest:
①.獲取請求引數
-->String getParameter(String name): 根據請求引數的名字,返回引數值。若請求的引數有多個值(如CheckBox),該方法只能獲取到第一個提交的值。
程式碼:
程式碼:
類似於ServletConfig(或ServletContext)的getInitParameterNames()方法
程式碼:
程式碼:
3).HttpServletRequest:是ServletRequest的子介面。
針對於HTTP請求所定義。裡邊包含了大量獲取HTTP 請求相關的方法。
4).ServletResponse:封裝了響應資訊,如果想給使用者什麼響應,具體可以使用該介面的方法實現
①.!!getWriter():返回PrintWriter物件,呼叫該物件的print()方法, 將把print()中的引數直接列印到客戶的瀏覽器上
PrintWriter out= response.getWriter();
out.println("helloworld...");
②.設定響應的內容型別:response.setContentType("application/msword");
③.void sendRedirect(String location):請求的重定向。(此方法為HttpServletResponse 中定義)。
1).使用GET方式傳遞引數:
①.在瀏覽器位址列中輸入某個URL地址或單擊網頁上的一個超連結時,瀏覽器發出的HTTP請求訊息的請求方式GET。
②.如果網頁中的<form>表單元素的method屬性被設定為了“GET”。瀏覽器提交這個FORM表單時生成的Http請求訊息的請求方式也為GET。
③.使用GET請求方式給WEB伺服器傳遞引數的格式:http://www.zzz.com/counter.jsp?name=1&password=111
④.使用GET方式傳送的資料量一般限制在1KB以下。
http://localhost:8080/Servlet/hello.jsp?user=1&password=1
①. POST 請求方式主要用於向WEB伺服器端程式提交form表單中的資料:form 表單的method 置為POST
②.POST 方式將各個表單欄位元素及其資料作為Http訊息的實體內容傳送給WEB伺服器,傳送的資料量要比使用GET方式傳送的資料量大得多。
username=zhangsan&password=123 --請求體中傳送引數POST /Example04/index.jsp HTTP/1.1 Referer: http://localhost:8080/Example04/form.html Content-Type: application/x-www-form-urlencoded Host: localhost:8080 Content-Length: 30
2.如何在Servlet中獲取請求資訊:
1).servlet的service()方法用於應答請求:因為每次請求都會呼叫service()方法
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {}
ServletRequest:封裝了請求資訊, 可以從中獲取到任何的請求資訊。
ServletResponse:封裝了響應資訊,如果想給使用者什麼響應,具體可以使用該介面的方法實現
這兩個介面的實現類都是伺服器給予實現的,並在伺服器呼叫service方法時傳入。
2).ServletRequest:
①.獲取請求引數
-->String getParameter(String name): 根據請求引數的名字,返回引數值。若請求的引數有多個值(如CheckBox),該方法只能獲取到第一個提交的值。
程式碼:
-->String[] getParameterValues(String name)根據請求引數的名字,返回請求引數對應的字串陣列String user = request.getParameter("user"); String password = request.getParameter("password"); System.out.println(" user:"+user+" password:"+password); //執行結果: // user:111 password:111
程式碼:
String[] interestings = request.getParameterValues("interesting");
for(String interest:interestings){
System.out.println("--"+interest);
//--foot
//--game
//--shopping
-->Enumeration getParameterNames() 返回引數名對應的Enumeration 物件,類似於ServletConfig(或ServletContext)的getInitParameterNames()方法
程式碼:
Enumeration<String> names=request.getParameterNames();
while(names.hasMoreElements()){
String name=names.nextElement();
String value=request.getParameter(name);
System.out.println("--"+name+":"+value);
}
//--user:111
//--password:111
//--interesting:foot
-->Map getParameterMap() 返回請求引數的鍵值對: key:引數名 value:引數值. String 陣列型別。程式碼:
Map<String, String[]> map = request.getParameterMap();
for(Map.Entry<String,String[]> entry:map.entrySet()){
System.out.println("**"+entry.getKey()+":"+Arrays.asList(entry.getValue()));
}
//**user:[111]
//**password:[111]
//**interesting:[foot, game, shopping]
②.獲取請求的URIMap<String, String[]> map = request.getParameterMap();
for(Map.Entry<String,String[]> entry:map.entrySet()){
System.out.println("**"+entry.getKey()+":"+Arrays.asList(entry.getValue()));
}
//**user:[111]
//**password:[111]
//**interesting:[foot, game, shopping]
③.獲取請求方式: String requestMethod=httpServletRequest.getMethod();
System.out.println(requestMethod); // GET
④.獲取GET的查詢字串: String query= httpServletRequest.getQueryString();
System.out.println(query);
// user=111&password=111&interesting=foot&interesting=game&interesting=shopping
⑤.和attribute相關的幾個方法3).HttpServletRequest:是ServletRequest的子介面。
針對於HTTP請求所定義。裡邊包含了大量獲取HTTP 請求相關的方法。
4).ServletResponse:封裝了響應資訊,如果想給使用者什麼響應,具體可以使用該介面的方法實現
①.!!getWriter():返回PrintWriter物件,呼叫該物件的print()方法, 將把print()中的引數直接列印到客戶的瀏覽器上
PrintWriter out= response.getWriter();
out.println("helloworld...");
②.設定響應的內容型別:response.setContentType("application/msword");
③.void sendRedirect(String location):請求的重定向。(此方法為HttpServletResponse 中定義)。