JSP - Yêu cầu của khách hàng
Trong chương này, chúng ta sẽ thảo luận về Yêu cầu của Khách hàng trong JSP. Khi trình duyệt yêu cầu một Trang web, nó sẽ gửi rất nhiều thông tin đến máy chủ web. Thông tin này không thể được đọc trực tiếp vì thông tin này truyền đi như một phần của tiêu đề của yêu cầu HTTP. Bạn có thể kiểm tra Giao thức HTTP để biết thêm thông tin về điều này.
Bảng sau liệt kê thông tin tiêu đề quan trọng đến từ trình duyệt. Thông tin này thường được sử dụng trong lập trình web -
Không. | Tiêu đề & Mô tả |
---|---|
1 | Accept Tiêu đề này chỉ định MIMEloại mà trình duyệt hoặc các ứng dụng khách khác có thể xử lý. Giá trị củaimage/png hoặc là image/jpeg là hai khả năng phổ biến nhất. |
2 | Accept-Charset Tiêu đề này chỉ định các bộ ký tự mà trình duyệt có thể sử dụng để hiển thị thông tin. Ví dụ,ISO-8859-1. |
3 | Accept-Encoding Tiêu đề này chỉ định các loại mã hóa mà trình duyệt biết cách xử lý. Giá trị củagzip hoặc là compress là hai khả năng phổ biến nhất. |
4 | Accept-Language Tiêu đề này chỉ định các ngôn ngữ ưa thích của khách hàng trong trường hợp servlet có thể tạo ra kết quả bằng nhiều ngôn ngữ. Ví dụen, en-us, ru, Vân vân. |
5 | Authorization Tiêu đề này được khách hàng sử dụng để nhận dạng chính họ khi truy cập các trang web được bảo vệ bằng mật khẩu. |
6 | Connection Tiêu đề này cho biết liệu máy khách có thể xử lý các kết nối HTTP liên tục hay không. Các kết nối liên tục cho phép ứng dụng khách hoặc trình duyệt khác truy xuất nhiều tệp với một yêu cầu duy nhất. Một giá trị củaKeep-Alive có nghĩa là các kết nối liên tục nên được sử dụng. |
7 | Content-Length Tiêu đề này chỉ áp dụng cho POST yêu cầu và cung cấp kích thước của dữ liệu POST tính bằng byte. |
số 8 | Cookie Tiêu đề này trả lại cookie cho các máy chủ mà trước đó đã gửi chúng đến trình duyệt. |
9 | Host Tiêu đề này chỉ định máy chủ và cổng như được cung cấp trong URL ban đầu. |
10 | If-Modified-Since Tiêu đề này chỉ ra rằng khách hàng chỉ muốn trang nếu nó đã được thay đổi sau ngày được chỉ định. Máy chủ gửi một mã, 304 có nghĩa làNot Modified tiêu đề nếu không có kết quả mới hơn. |
11 | If-Unmodified-Since Tiêu đề này ngược lại với If-Modified-Since; nó chỉ định rằng thao tác sẽ chỉ thành công nếu tài liệu cũ hơn ngày được chỉ định. |
12 | Referer Tiêu đề này cho biết URL của các trang web giới thiệu. Ví dụ: nếu bạn đang ở Trang web 1 và nhấp vào liên kết đến Trang web 2, thì URL của Trang web 1 sẽ được đưa vào tiêu đề Người giới thiệu khi trình duyệt yêu cầu Trang web 2. |
13 | User-Agent Tiêu đề này xác định trình duyệt hoặc ứng dụng khách khác đưa ra yêu cầu và có thể được sử dụng để trả về nội dung khác nhau cho các loại trình duyệt khác nhau. |
Đối tượng HttpServletRequest
Đối tượng yêu cầu là một ví dụ của javax.servlet.http.HttpServletRequestvật. Mỗi khi khách hàng yêu cầu một trang, công cụ JSP sẽ tạo một đối tượng mới để đại diện cho yêu cầu đó.
Đối tượng yêu cầu cung cấp các phương thức để lấy thông tin tiêu đề HTTP bao gồm form data, cookies, HTTP methods, Vân vân.
Bảng sau liệt kê các phương pháp quan trọng có thể được sử dụng để đọc tiêu đề HTTP trong chương trình JSP của bạn. Các phương thức này có sẵn với đối tượng HttpServletRequest đại diện cho yêu cầu của khách hàng tới máy chủ web.
Không. | Phương pháp & Mô tả |
---|---|
1 | Cookie[] getCookies() Trả về một mảng chứa tất cả các đối tượng Cookie mà khách hàng đã gửi cùng với yêu cầu này. |
2 | Enumeration getAttributeNames() Trả về một Bảng kê chứa tên của các thuộc tính có sẵn cho yêu cầu này. |
3 | Enumeration getHeaderNames() Trả về một bảng liệt kê tất cả các tên tiêu đề mà yêu cầu này chứa. |
4 | Enumeration getParameterNames() Trả về một bảng liệt kê các đối tượng Chuỗi có chứa tên của các tham số có trong yêu cầu này. |
5 | HttpSession getSession() Trả về phiên hiện tại được liên kết với yêu cầu này hoặc nếu yêu cầu không có phiên, hãy tạo một phiên. |
6 | HttpSession getSession(boolean create) Trả về HttpSession hiện tại được liên kết với yêu cầu này hoặc nếu không có phiên hiện tại và việc tạo là đúng, trả về một phiên mới. |
7 | Locale getLocale() Trả về Ngôn ngữ ưa thích mà khách hàng sẽ chấp nhận nội dung, dựa trên tiêu đề Ngôn ngữ chấp nhận. |
số 8 | Object getAttribute(String name) Trả về giá trị của thuộc tính được đặt tên dưới dạng Đối tượng hoặc null nếu không có thuộc tính nào của tên đã cho tồn tại. |
9 | ServletInputStream getInputStream() Truy xuất phần thân của yêu cầu dưới dạng dữ liệu nhị phân bằng cách sử dụ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ụ: "BASIC" hoặc "SSL" hoặc null nếu JSP không được bảo vệ. |
11 | String getCharacterEncoding() Trả về tên của mã hóa ký tự được sử dụng trong phần nội dung của yêu cầu này. |
12 | String getContentType() Trả về kiểu MIME của nội dung yêu cầu hoặc null nếu kiểu không được biết. |
13 | String getContextPath() Trả về một phần của URI yêu cầu cho biết ngữ cảnh của yêu cầu. |
14 | String getHeader(String name) Trả về giá trị của tiêu đề yêu cầu được chỉ định dưới dạng một Chuỗi. |
15 | String getMethod() Trả về tên của phương thức HTTP mà yêu cầu này được thực hiện, ví dụ: GET, POST hoặc PUT. |
16 | String getParameter(String name) Trả về giá trị của tham số yêu cầu dưới dạng Chuỗi hoặc null nếu tham số không tồn tại. |
17 | String getPathInfo() Trả về bất kỳ thông tin đường dẫn bổ sung nào được liên kết với URL mà khách hàng đã gửi khi thực hiện yêu cầu này. |
18 | String getProtocol() Trả về tên và phiên bản của giao thức mà yêu cầu sử dụng. |
19 | String getQueryString() Trả về chuỗi truy vấn có trong URL yêu cầu sau đường dẫn. |
20 | String getRemoteAddr() Trả về địa chỉ Giao thức Internet (IP) của ứng dụng khách đã gửi yêu cầu. |
21 | String getRemoteHost() Trả về tên đủ điều kiện của khách hàng đã gửi yêu cầu. |
22 | String getRemoteUser() Trả về thông tin đăng nhập của người dùng thực hiện yêu cầu này, nếu người dùng đã được xác thực hoặc vô hiệu nếu người dùng chưa được xác thực. |
23 | String getRequestURI() Trả về một phần URL của yêu cầu này từ tên giao thức cho đến chuỗi truy vấn trong dòng đầu tiên của yêu cầu HTTP. |
24 | String getRequestedSessionId() Trả về ID phiên do máy khách chỉ định. |
25 | String getServletPath() Trả về phần URL của yêu cầu này gọi JSP. |
26 | String[] getParameterValues(String name) Trả về một mảng các đối tượng Chuỗi chứa tất cả các giá trị mà tham số yêu cầu đã cho có hoặc null nếu tham số không tồn tại. |
27 | boolean isSecure() Trả về boolean cho biết liệu yêu cầu này có được thực hiện bằng kênh bảo mật, chẳng hạn như HTTPS hay không. |
28 | int getContentLength() Trả về độ dài, tính bằng byte, của phần thân yêu cầu và được cung cấp bởi luồng đầu vào hoặc -1 nếu độ dài không được biết. |
29 | int getIntHeader(String name) Trả về giá trị của tiêu đề yêu cầu được chỉ định dưới dạng int. |
30 | int getServerPort() Trả về số cổng mà yêu cầu này đã được nhận. |
Ví dụ về yêu cầu tiêu đề HTTP
Sau đây là ví dụ sử dụng getHeaderNames() phương pháp của HttpServletRequestđể đọc thông tin tiêu đề HTTP. Phương thức này trả về một Bảng kê chứa thông tin tiêu đề được liên kết với yêu cầu HTTP hiện tại.
Khi chúng ta có một Bảng kê, chúng ta có thể lặp lại Bảng kê theo cách chuẩn. Chúng tôi sẽ sử dụnghasMoreElements() phương pháp để xác định thời điểm dừng và nextElement() phương thức lấy tên của từng tên tham số.
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>HTTP Header Request Example</title>
</head>
<body>
<center>
<h2>HTTP Header Request Example</h2>
<table width = "100%" border = "1" align = "center">
<tr bgcolor = "#949494">
<th>Header Name</th>
<th>Header Value(s)</th>
</tr>
<%
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String paramName = (String)headerNames.nextElement();
out.print("<tr><td>" + paramName + "</td>\n");
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>\n");
}
%>
</table>
</center>
</body>
</html>
Bây giờ chúng ta hãy đặt đoạn mã trên vào main.jsp và cố gắng truy cập nó.
Ví dụ về yêu cầu tiêu đề HTTP
Tên tiêu đề | (Các) Giá trị Tiêu đề |
---|---|
Chấp nhận | * / * |
chấp nhận ngôn ngữ | vi chúng tôi |
đại lý người dùng | Mozilla / 4.0 (tương thích; MSIE 7.0; Windows NT 5.1; Trident / 4.0; InfoPath.2; MS-RTC LM 8) |
chấp nhận mã hóa | gzip, deflate |
tổ chức | localhost: 8080 |
kết nối | Cố sống đi |
kiểm soát bộ nhớ cache | không có bộ nhớ cache |
Bạn có thể thử làm việc trên tất cả các phương pháp theo cách tương tự.