Request物件詳細介紹
1.Request物件
是當客戶端向伺服器端傳送請求時,伺服器為本次請求建立request物件,並在呼叫Servlet的service方法時,將該物件傳遞給service方法。Request物件中封裝了客戶端傳送過來的所有的請求資料。
2.Request常用的API
Request物件的型別是HttpServletRequest,該類中定義了很多與http協議相關的方法,比如獲取請求頭資訊,請求方式,客戶端ip地址等資訊。下面是常用的API.
(1)常用資訊
String getRemoteAddr():獲取客戶端ip地址
String getMethod():獲取客戶端請求方式。例如:get或post
(2)獲取請求頭資訊
String getHeader(String name):獲取單值的請求頭的值。
int getIntHeader(String name):獲取單值int型別的請求頭的值
3.Request獲取請求引數方法
request物件獲取請求引數的方法有以下幾個,詳情請看錶1-1:
表1-1 request獲取請求引數方法介紹
方法名 |
方法介紹 |
String getParameter(String name ) |
獲取指定名稱的請求引數值,適用於單值的請求引數 |
String[] getParameterValues(String name) |
獲取指定名稱的請求引數值,適用於多值的請求引數 |
Enumeration<String> getParameterNames() |
獲取所有的請求引數名稱 |
Map<String,String[]> getParameterMap() |
獲取所有請求引數,其中引數名作為map的key,引數值作為map的value. |
牛刀小試
客戶端表單
<span style="font-family:SimSun;font-size:18px;"><body> <h1>測試</h1> <hr/> <form action="/Test/ParamServlet" method="post"> 使用者名稱:<input type="text" name="username"/><br/> 密 碼:<input type="password" name="password"/><br/> 愛 好:<input type="checkbox" name="hobby" value="cf"/>吃飯 <input type="checkbox" name="hobby" value="sj"/>睡覺 <input type="checkbox" name="hobby" value="ddm"/>打程式碼 <br/> <input type="submit" value="提交"/> </form> </body> </span>
伺服器端接收
<span style="font-family:SimSun;font-size:18px;">public class ParamServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("GET: " + request.getParameter("xxx"));
System.out.println("GET: " + request.getParameter("yyy"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
String[] hobby = request.getParameterValues("hobby");
System.out.println(username + ", " + password + ", " + Arrays.toString(hobby));
}
}
</span>
4.Request獲取請求路徑方法介紹
Request物件中包含的是請求資訊。下面以一個路徑為例子,為大家展示請求路徑的幾個方法。
Request物件通過以下方法來獲取請求路徑。
(1)String getServerName():獲取伺服器名:localhost
(2)String getServerPort():獲取伺服器埠號:8080
(3)String getContextPath():獲取專案名:Test
(4)String getServletPath():獲取Servlet路徑:/login
(5)String getQueryString():獲取引數部門,即問號後面的部分:username=zhangsan
(6)String getRequestURL():獲取請求URL
下面用一張圖來展示一下