Request trong Servlet
Ví dụ đọc tất cả Parameters của Form trong Servlet Khi trình duyệt gửi yêu cầu ( request ) đến một trang web. Nó gửi rất nhiều thông tin đến web server nhưng những thông tin này khổng thể đọc trực tiếp vì chúng là một phần của Header của HTTP request. Các phương thức để đọc ...
Khi trình duyệt gửi yêu cầu (request) đến một trang web. Nó gửi rất nhiều thông tin đến web server nhưng những thông tin này khổng thể đọc trực tiếp vì chúng là một phần của Header của HTTP request.
Các phương thức để đọc HTTP Header
Các phương thức sau đây có thể được sử dụng để đọc HTTP Header trong chương trình servlet của bạn. Các phương thức này có sẵn trong đối tượng HttpServletRequest.
No. | Phương pháp & Mô tả |
---|---|
1 | Cookie [] getCookies()
Trả về mảng chứa tất cả các đối tượng Cookie mà client gửi với request này. |
2 | Enumeration getAttributeNames()
Trả về một Enumeration chứa tên của các thuộc tính có sẵn cho request này. |
3 | Enumeration getHeaderNames()
Trả về một đếm tất cả tên tiêu đề request này. |
4 | Enumeration getParameterName()
Trả về một Enumeration of String các đối tượng có chứa tên của các tham số chứa trong request này. |
5 | HttpSession getSession()
Trả về phiên hiện tại được kết hợp với request này, hoặc nếu request không có phiên, hãy tạo một phiên. |
6 | HttpSession getSession (tạo boolean)
Trả về HttpSession hiện tại được liên kết với request này hoặc, nếu không có phiên hiện tại và giá trị của create là đúng, trả về một phiên mới. |
7 | Locale getLocale()
Trả về ngôn ngữ ưu tiên mà client sẽ chấp nhận nội dung, dựa trên tiêu đề Accept-Language. |
số 8 | Đối tượng getAttribute (String name)
Trả về giá trị của thuộc tính được đặt tên như một đối tượng, hoặc null nếu không có thuộc tính của tên đã cho tồn tại. |
9 | ServletInputStream getInputStream()
Truy lục cơ thể của request dưới dạng dữ liệu nhị phân bằng ServletInputStream. |
10 | String getAuthType()
Trả về tên của lược đồ xác thực được sử dụng để bảo vệ servlet, ví dụ như “BASIC” hoặc “SSL” hoặc null nếu JSP không được bảo vệ. |
11 | Chuỗi getCharacterEncoding()
Trả về tên của mã hoá ký tự được sử dụng trong phần thân request này. |
12 | String getContentType()
Trả về kiểu MIME của phần thân request, hoặc null nếu loại không được biết. |
13 | String getContextPath()
Trả về phần của URI request chỉ ra ngữ cảnh của request. |
14 | String getHeader(String name)
Trả về giá trị của tiêu đề request được chỉ định như là một Chuỗi. |
15 | Chuỗi getMethod()
Trả về tên của phương thức HTTP mà request này được thực hiện, ví dụ như GET, POST, hoặc PUT. |
16 | String getParameter(String name)
Trả về giá trị của tham số request như một String, hoặc null nếu tham số không tồn tại. |
17 | Chuỗi getPathInfo()
Trả về bất kỳ thông tin đường dẫn bổ sung liên quan đến URL mà client gửi khi thực hiện request này. |
18 | Chuỗi getProtocol()
Trả về tên và phiên bản của giao thức theo request. |
19 | Chuỗi getQueryString()
Trả về chuỗi truy vấn được chứa trong URL request sau đường dẫn. |
20 | Chuỗi getRemoteAddr()
Trả về địa chỉ Giao thức Internet (IP) của client gửi request. |
21 | Chuỗi getRemoteHost()
Trả về tên đầy đủ của client đã gửi request. |
22 | Chuỗi getRemoteUser()
Trả về thông tin đăng nhập của người dùng request này, nếu người dùng đã được xác thực, hoặc null nếu người dùng không được xác thực. |
23 | Chuỗi getRequestURI()
Trả về một phần của URL của request này từ tên giao thức cho đến chuỗi truy vấn trong dòng đầu tiên của request HTTP. |
24 | Chuỗi getRequestedSessionId()
Trả về ID phiên xác định bởi client. |
25 | Chuỗi getServletPath()
Trả về một phần của URL của request này gọi là JSP. |
26 | String[] getParameterValues(String name)
Trả về một mảng các đối tượng String chứa tất cả các giá trị mà tham số request cho trước có, hoặc null nếu tham số không tồn tại. |
27 | boolean isSecure()
Trả về một Boolean cho biết request này được thực hiện bằng một kênh an toàn, chẳng hạn như HTTPS. |
28 | int getContentLength()
Trả về chiều dài, theo byte, của thân request và được cung cấp bởi luồng đầu vào, hoặc -1 nếu chiều dài không được biết. |
29 | int getIntHeader(String name)
Trả về giá trị của tiêu đề request được chỉ định như là một int. |
30 | int getServerPort()
Trả về số cổng mà request này đã nhận được. |
Ví dụ đọc HTTP Header với request trong servlet
Sau đây là ví dụ sử dụng phương thức getHeaderNames() của HttpServletRequest để đọc thông tin HTTP Header. Phương thức này trả về một Enumeration chứa thông tin header liên quan đến HTTP Request hiện tại.
Với Enumeration, chúng ta có thể lặp Enumeration theo cách chuẩn, sử dụng phương thức hasMoreElements() để xác định khi nào dừng lại và sử dụng phương thức nextElement() để lấy từng tên tham số.
Tạo file DisplayHeader.java
package vn.viettuts; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DisplayHeader extends HttpServlet { // Method to handle GET method request. public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "Vi du doc thong tin HTTP Header"; String docType = "<!doctype html public "-//w3c//dtd html 4.0 " + "transitional//en"> "; out.println(docType + "<html> " + "<head><title>" + title + "</title></head> " + "<body bgcolor = "#f0f0f0"> " + "<h1 align = "center">" + title + "</h1> " + "<table awidth = "100%" border = "1" align = "center"> " + "<tr bgcolor = "#949494"> " + "<th>Header Name</th><th>Header Value(s)</th> " + "</tr> "); // get header names Enumeration headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String paramName = (String) headerNames.nextElement(); out.print("<tr><td>" + paramName + "</td> "); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr> "); } out.println("</table> </body></html>"); } // Method to handle POST method request. public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
Cấu hình servlet DisplayHeader trong file web.xml
<servlet> <servlet-name>DisplayHeader</servlet-name> <servlet-class>vn.viettuts.DisplayHeader</servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayHeader</servlet-name> <url-pattern>/DisplayHeader</url-pattern> </servlet-mapping>
Gọi servlet trên sẽ tạo ra kết quả sau: