1. 程式人生 > >Servlet入門(五)request和response物件

Servlet入門(五)request和response物件

前言

      本章學習servlet中的request、response物件

方法

1.概念

相信大家在之前的章節已經看到了,我用到了request物件獲取前臺傳遞過來的資料:

String username = request.getParameter("username");
String password = request.getParameter("password");

伺服器在收到瀏覽器發出的請求後,會自動建立一個request物件用來儲存本次請求的所有相關資訊~

2.常用方法

在說這個之前,還是和Java剛開始講String類的時候一樣,需要大家在網上下載相關的API,也就是JavaEE的API文件!

網址:https://www.oracle.com/technetwork/java/javaee/downloads/java-ee-sdk-downloads-3908423.html

大家把下面的這個包下載好之後,解壓縮,找到.\java_ee_sdk-8\glassfish5\docs\api\javaee-full檔案路徑,點選index.html即可。

 

下面我們來看一下常用的request物件的方法吧!

  •  String getParameter(String name) : 該方法用來獲取前臺頁面name屬性傳遞的表單值,只能獲取單個值(text、password)

  • String[] getParameterValues(String name):該方法用來獲取前臺頁面name屬性傳遞的表單值,可獲取多個值(checkbox)

  • void setCharacterEncoding(String env) throws UnsupportedEncodingException 設定請求編碼

  • void setAttribute(String name,Object o):設定名字為name的request的引數值

  • Object getAttribute(String name):返回由name指定的屬性值

--關於request物件的其他方法,我們今後用到的時候在進行總結。

接下來我們來看一下response物件的方法吧!

因為response物件的方法不是那麼常用,所以我就舉個例子

  • void sendError(int sc,String msg) throws IOException:該方法用來向客戶端傳送錯誤資訊

Servlet程式碼中加入該方法後的效果是什麼呢?請看:

response.sendError(404,"This Page is Not Found");

那麼你的頁面傳送請求後會出現如下錯誤提示:

是不是感覺很熟悉啊!

其他

1.設定請求轉發

*        作用:實現多個servlet聯動操作處理請求,這樣避免程式碼冗餘,讓servlet的職責更加明確。
*        使用:
*                req.getRequestDispatcher("要轉發的地址").forward(req, resp);
*                地址:相對路徑,直接書寫servlet的別名即可。
*        特點:
*            一次請求,瀏覽器位址列資訊不改變。

相信大家發現了之前寫的程式碼中出現瞭如下程式碼:

request.getRequestDispatcher("/success.jsp").forward(request, response);

這句程式碼是一個固定的格式,用來設定請求轉發。作用是servlet處理完請求之後,將跳轉到其他頁面或者servlet

2.設定重定向

Servlet處理完後跳轉頁面或者Servlet還有另外一種方法,那就是重定向

*        解決了表單重複提交的問題,以及當前servlet無法處理的請求的問題。
*        使用:
*            resp.sendRedirect(String uri);
*        示例:
*            resp.sendRedirect("/login.jsp");
*        特點:
*            兩次請求,兩個request物件。
*            瀏覽器位址列資訊改變

response.sendRedirect("/login.jsp");

其作用效果和請求轉發一樣!

3.請求轉發和重定向的區別

我在其他博主那裡找到了有價值的資訊,傳送門:https://blog.csdn.net/liubin5620/article/details/79922692

總結:

  • 如果請求中有表單資料,而資料又比較重要,不能重複提交,建議使用重定向。
  • 如果請求被Servlet接收後,無法進行處理,建議使用重定向定位到可以處理的資源。    
  • 其他情況建議使用請求轉發。

4.request物件作用域

request物件用於解決一次請求內的資料共享,也就是說在一次請求內只有一個request物件並且這次請求內的所有操作共享同一個request