Yêu cầu máy khách JSP

Các hành động JSP sử dụng các cấu trúc theo cú pháp XML để kiểm soát hành vi của công cụ servlet. Chúng ta sẽ tìm hiểu chi tiết hơn về các thành phần Hành động JSP khác nhau như yêu cầu của máy khách, phản hồi của máy chủ, mã trạng thái HTTP.

Yêu cầu máy khách JSP

  • Khi trang web được yêu cầu, nó sẽ gửi thông tin đến máy chủ web trong tiêu đề HTTP.
  • Chúng ta có thể sử dụng thông tin này bằng đối tượng HTTPServletRequest.
  • Thông tin do trình duyệt gửi được lưu trữ trong tiêu đề yêu cầu của yêu cầu HTTP.
  • Chúng tôi đang sử dụng các tiêu đề khác nhau để gửi thông tin đến đối tượng yêu cầu.

Tiêu đề trong JSP

Các tiêu đề khác nhau trong JSP được mô tả dưới đây:

Tiêu đề Mô tả Chi tiết Ví dụ
Chấp nhận Nó chỉ định các loại MIME mà trình duyệt hoặc ứng dụng khách khác có thể xử lý Hình ảnh/png hoặc hình ảnh/jpeg
Bộ ký tự chấp nhận Nó sử dụng bộ ký tự được trình duyệt sử dụng để hiển thị thông tin ISO-8859-1
Chấp nhận-Mã hóa Nó chỉ định loại mã hóa được trình duyệt xử lý Gzip hoặc nén
Ngôn ngữ chấp nhận Nó chỉ định ngôn ngữ được chỉ định của khách hàng En,en_us
cho phép Tiêu đề được khách hàng sử dụng khi cố gắng truy cập các trang web được bảo vệ bằng mật khẩu  
Kết nối Nó 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 (trình duyệt có thể truy xuất nhiều tệp) Cố sống đi
Thời lượng nội dung Áp dụng cho các yêu cầu đăng bài. Nó cung cấp kích thước của dữ liệu bài đăng theo byte  
Cookie Trả lại cookie cho máy chủ (những cookie đã được gửi trước đó tới trình duyệt)  
Máy chủ Chỉ định máy chủ và cổng của URL gốc  
Nếu sửa đổi kể từ Nó chỉ ra rằng nó chỉ yêu cầu một trang nếu nó đã được thay đổi hoặc sửa đổi  
Nếu không sửa đổi kể từ Nó chỉ ra rằng nó chỉ yêu cầu một trang nếu nó chưa bị thay đổi hoặc sửa đổi  
Người giới thiệu Cho biết URL của trang URL giới thiệu  
Đại lý người dùng Xác định trình duyệt hoặc ứng dụng khách đưa ra yêu cầu  

Các phương thức tiêu đề HTTP trong JSP

Các phương pháp sau được sử dụng để đọc tiêu đề HTTP trong trang JSP:

  1. Cookie[] getCookies() – trả về một mảng chứa các đối tượng cookie mà khách hàng đã gửi
  2. Bảng liệt kê getAttributionNames() – chứa liệt kê tên của các thuộc tính cho yêu cầu
  3. Phép liệt kê getHeaderNames() – chứa liệt kê tên của tiêu đề.
  4. Liệt kê getParameterNames() – chứa bảng liệt kê nhận tên tham số trong yêu cầu.
  5. HttpSessiongetSession() – trả về phiên hiện tại được liên kết với yêu cầu hoặc nếu không có phiên thì nó sẽ tạo một phiên mới.
  6. Ngôn ngữ getLocale() – trả về ngôn ngữ ưa thích mà máy khách sẽ chấp nhận nội dung. Ngôn ngữ này đã được gán cho phản hồi. Theo mặc định, giá trị sẽ là ngôn ngữ mặc định của máy chủ.
  7. Đối tượng getAttribution(Tên chuỗi) – trả về giá trị của thuộc tính được đặt tên làm đối tượng.
  8. ServletInputStreamgetInputStream() – truy xuất nội dung yêu cầu dưới dạng dữ liệu nhị phân.
  9. Chuỗi getAuthType() – trả về tên của sơ đồ xác thực để bảo vệ servlet
  10. Chuỗi getCharacterEncoding() – trả về tên của mã hóa ký tự được sử dụng trong nội dung yêu cầu.
  11. Chuỗi getContentType() – trả về kiểu MIME của nội dung yêu cầu.
  12. Chuỗi getContextPath() – trả về phần URI yêu cầu cho biết đường dẫn ngữ cảnh của URI
  13. Chuỗi getHeader(Tên chuỗi) – trả về tiêu đề yêu cầu dưới dạng một chuỗi
  14. Chuỗi getMethod() – trả về tên của phương thức HTTP như GET, POST
  15. Chuỗi getParameter(Tên chuỗi) – trả về tham số của yêu cầu dưới dạng một chuỗi.
  16. Chuỗi getPathInfo() – trả về thông tin đường dẫn được liên kết với URL
  17. Chuỗi getQueryString() – trả về chuỗi truy vấn được liên kết với URL yêu cầu
  18. Chuỗi getServletPath() – trả về phần URL của yêu cầu gọi JSP
  19. String[] getParameterValues(Tên chuỗi) – trả về mảng các đối tượng chuỗi chứa các giá trị mà tham số yêu cầu có

Ví dụ:

Trong ví dụ bên dưới, chúng tôi đang sử dụng các phương thức khác nhau bằng cách sử dụng đối tượng yêu cầu

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Client Request Guru JSP</title>
</head>
<body>
<h2>Client Request Guru JSP</h2>

<table border="1">
<tr>
<th>guru header</th><th>guru header Value(s)</th>
</tr>
<%
	HttpSession gurusession = request.getSession(); 
	out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>");
	Locale gurulocale = request.getLocale ();
	out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>");
	String path = request.getPathInfo(); 
	out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>"); 
	String lpath = request.get();
	out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>"); 
	String servername = request.getServerName(); 
	out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>");
	int portname = request.getServerPort(); 
	out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>");
	Enumeration hnames = request.getHeaderNames();
	while(hnames.hasMoreElements()) { 
		String paramName = (String)hnames.nextElement();
		out.print ("<tr><td>" + paramName + "</td>" );
		
		String paramValue = request.getHeader(paramName);
		out.println("<td> " + paramValue + "</td></tr>");
	}

%>

Giải thích mã:

Dòng mã 17: Sử dụng đối tượng yêu cầu, chúng tôi sẽ nhận được đối tượng phiên của phiên cụ thể đó và chúng tôi nhận được giá trị đối tượng của phiên đó

Dòng mã 19: Bằng cách sử dụng đối tượng yêu cầu, chúng tôi sẽ nhận được ngôn ngữ của phiên cụ thể i.een_US cho JSP đó.

Dòng mã 21: Sử dụng đối tượng yêu cầu, chúng tôi sẽ nhận được thông tin đường dẫn cho JSP đó. Trong trường hợp này, nó là null vì không có đường dẫn URL nào được đề cập.

Dòng mã 23: Sử dụng đối tượng yêu cầu, chúng ta sẽ nhận được đường dẫn ngữ cảnh, tức là đường dẫn gốc

Dòng mã 25: Sử dụng đối tượng yêu cầu, chúng tôi sẽ nhận được tên máy chủ.

Dòng mã 27: Sử dụng đối tượng yêu cầu, chúng tôi sẽ nhận được cổng máy chủ.

Dòng mã 29-35: Bằng cách sử dụng đối tượng yêu cầu, chúng tôi sẽ nhận được các tên tiêu đề xuất hiện dưới dạng bảng liệt kê và do đó chúng tôi nhận được tất cả các giá trị tiêu đề trong tên tiêu đề.

Trong phần này, chúng tôi nhận được tất cả các giá trị tiêu đề dưới dạng Cookie, máy chủ, kết nối, chấp nhận ngôn ngữ, chấp nhận mã hóa.

Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau:

Yêu cầu máy khách JSP

Đầu ra:

Chúng tôi đang nhận được một loạt các giá trị như tên phiên, tên miền địa phương, tên đường dẫn, tên máy chủ, tên cổng, máy chủ, đường dẫn ngữ cảnh và tất cả các giá trị tiêu đề của đó JSP.

Phản hồi của máy chủ JSP

  • Khi một yêu cầu được xử lý và sau đó phản hồi được tạo ra từ máy chủ web. Nó bao gồm một dòng trạng thái, tiêu đề phản hồi, một dòng trống và tài liệu.
  • Nó là đối tượng của HTTPServletResponseclass, là một đối tượng phản hồi.
  • Dòng trạng thái là một phiên bản của HTML.

Tiêu đề phản hồi trong JSP

Các tiêu đề phản hồi trong JSP được đề cập dưới đây:

Tiêu đề Mô tả Chi tiết
Cho phép Nó chỉ định các phương thức yêu cầu như GET, POST mà máy chủ đang yêu cầu
Kiểm soát bộ đệm Tài liệu phản hồi có thể được lưu trữ. Nó có thể là công khai, riêng tư và không có bộ đệm. Không có bộ nhớ đệm chỉ định rằng tài liệu không được lưu vào bộ nhớ đệm
Kết nối Nó hướng dẫn xem trình duyệt có nên sử dụng SavedHTTPConnections hay không. Giá trị đóng thể hiện rằng trình duyệt không nên sử dụng liên tục trong HTTPConnections và “giữ nguyên” có nghĩa là sử dụng các kết nối liên tục
Bố trí nội dung Để hỏi người dùng có lưu phản hồi vào đĩa hay không
Mã hóa nội dung Trang phải được mã hóa trong quá trình truyền tải
Thời lượng nội dung Số byte trong phản hồi
Loại nội dung Nó chỉ định loại phản hồi MIME
hết hạn Chỉ định thời điểm nội dung được coi là lỗi thời và không được lưu vào bộ nhớ đệm
Biến đổi cuối cùng Nó cho biết khi nào tài liệu được sửa đổi lần cuối
Địa điểm Nó phải được bao gồm trong tất cả các phản hồi có mã trạng thái có mã trạng thái là 300
Refresh Nó chỉ định cách tìm trang cập nhật.
Thử lại sau Nó có thể được sử dụng với phản hồi 503 để cho khách hàng biết thời gian có thể lặp lại yêu cầu
Đặt cookie Chỉ định cookie được liên kết với trang

Các phương thức tiêu đề phản hồi HTTP trong JSP

Sau đây là các phương thức trong JSP sử dụng đối tượng phản hồi:

  1. Chuỗi mã hóaRedirectURL(URL chuỗi) – mã hóa URL trong phương thức redirectURL.
  2. Chuỗi mã hóaURL(URL chuỗi) – mã hóa URL bằng cách bao gồm ID phiên.
  3. Boolean chứaHeader(Tên chuỗi) – nó có chứa tiêu đề trong JSP hay không.
  4. Boolean isCommited() – phản hồi đã được cam kết hay chưa.
  5. Void addCookie(Cookie cookie) – thêm cookie vào phản hồi
  6. Void addDateHeader(Tên chuỗi, Giá trị chuỗi) – thêm tên và giá trị ngày của tiêu đề phản hồi
  7. Void addHeader(Tên chuỗi, Giá trị chuỗi) – thêm tiêu đề phản hồi với tên và giá trị
  8. Void addIntHeader(Tên chuỗi, giá trị int) – thêm tiêu đề phản hồi với tên và giá trị số nguyên
  9. Xả rỗngBuffer() - ép nội dung trong bộ đệm xuất ra máy khách.
  10. Đặt lại khoảng trống() – xóa dữ liệu trong bộ đệm.
  11. Đặt lại vô hiệuBuffer – xóa bộ đệm nội dung trong phản hồi mà không xóa mã trạng thái.
  12. Void sendError(intsc,Stringmsg) – gửi phản hồi lỗi cho khách hàng bằng mã trạng thái.
  13. Void sendRedirect(Vị trí chuỗi) – gửi phản hồi chuyển hướng tạm thời cho khách hàng.
  14. bộ trốngBufferKích thước (kích thước int) - thiết lập kích thước bộ đệm của cơ thể
  15. Void setCharacterEncoding(Bộ ký tự chuỗi) – đặt mã hóa ký tự
  16. Void setContentType(Loại chuỗi) – đặt loại nội dung của phản hồi
  17. Void setContentLength(intlen) – đặt độ dài nội dung của phản hồi
  18. Void setLocale(Locale lcl) – đặt loại ngôn ngữ của phản hồi
  19. Void setStatus(intsc) – đặt mã trạng thái của phản hồi

Ví dụ:

Trong ví dụ này, chúng tôi sẽ đề cập đến các phương thức khác nhau getLocale, flushbuffer, getWriter, get ContentType, setIntHeader.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Action Response</title>
</head>
<body>
<center>
<h2>Guru Response</h2>
<%
Locale lcl = response.getLocale();
out.println("Locale is : " + lcl + "\n");
response.flushBuffer();
PrintWriter output = response.getWriter();
output.println("This is from writer object");
String type = response.getContentType();
out.println("The content type : " + type + "\n");
	// Set refresh,autoload time as 5 seconds
	response.setIntHeader("Refresh", 5);
	//Get current time
	Date dt = new Date();
	out.println("Today's date is : " +dt.toString() + "\n");
%>
</center>
</body>
</html>

Giải thích mã:

Dòng mã 13: Sử dụng đối tượng phản hồi, chúng tôi nhận được đối tượng ngôn ngữ của phiên JSP này

Dòng mã 15: Sử dụng đối tượng phản hồi, flushbuffer được sử dụng để buộc nội dung bộ đệm vào máy khách

Dòng mã 16: Sử dụng đối tượng phản hồi, chúng ta có được đối tượng nhà văn nhận đầu ra trong luồng đầu ra

Mã Dòng18: Sử dụng đối tượng phản hồi, chúng tôi nhận được loại nội dung tức là loại đối tượng phản hồi MIME

Dòng mã 21: Sử dụng đối tượng phản hồi, nó được sử dụng để tự động tải sau mỗi 5 giây vì 5 được đặt làm tham số thứ hai

Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau:

Phản hồi của máy chủ JSP

Đầu ra:

  • Ở đây chúng ta nhận được kết quả đầu ra vì đây là đối tượng nhà văn từ getWriter, đối tượng này cung cấp cho chúng ta đối tượng và chúng ta có thể xuất ra luồng đầu ra.
  • Chúng tôi lấy ngôn ngữ là en_us và loại nội dung là text/html
  • Chúng tôi nhận được bộ ký tự là ISO 8859
  • Ngày hôm nay là ngày hiện tại.

Mã trạng thái HTTP JSP

  • Khi yêu cầu được xử lý, phản hồi sẽ được tạo ra. Dòng trạng thái phản hồi bao gồm phiên bản HTTP, mã trạng thái và thông báo liên quan.
  • Thông báo được liên kết trực tiếp với mã trạng thái và phiên bản HTTP và được xác định bởi máy chủ.
  • Theo mặc định, 200 được đặt làm mã trạng thái trong JSP, vì vậy chúng ta không cần đặt rõ ràng.
  • Chúng ta có thể đặt làm phương thức reply.setStatus()

Các mã này được chia thành 5 loại sau:

  • 100-199 – Ở đây khách hàng chỉ ra rằng họ sẽ phản hồi bằng một số hành động
  • 200-299 – Nghĩa là yêu cầu đã thành công
  • 300-399 – Chúng được sử dụng cho các tệp đã được di chuyển và thường bao gồm tiêu đề vị trí cho biết địa chỉ mới
  • 400-499 – Cho biết lỗi của khách hàng
  • 500-599 – Cho biết lỗi của máy chủ

Một số mã trạng thái phổ biến dưới đây:

  • 200 – Cho biết mọi thứ đều ổn
  • 301 – Nó đã di chuyển vĩnh viễn
  • 304 – Không được sửa đổi kể từ lần thay đổi cuối cùng
  • 400 – Yêu cầu xấu
  • 404 không tìm thấy
  • 405 – Không tìm thấy phương pháp
  • 500 - Lỗi máy chủ nội bộ
  • Lỗi 503: Dịch vụ không khả dụng
  • 505 – Phiên bản HTTP không được hỗ trợ

Các phương thức mã trạng thái HTTP trong JSP

Một số phương thức mã trạng thái trong JSP được liệt kê bên dưới:

  1. Khoảng trống công khai setStatus(intstatusCode): Nó thiết lập mã trạng thái bất kỳ mà chúng ta muốn thiết lập trong Trang JSP đó. Điều này sẽ cung cấp cho chúng ta thông báo về mã trạng thái đã được thiết lập
  2. Công khai void sendRedirect(URL chuỗi): Nó tạo ra phản hồi 302 cùng với tiêu đề vị trí cung cấp URL của tài liệu mới
  3. Công khai void sendError(intcode,Stringmsg): Nó gửi mã trạng thái cùng với tin nhắn ngắn và được định dạng bên trong tài liệu HTML.

Ví dụ:

Trong ví dụ này, chúng tôi đang gửi lỗi tới trang JSP một cách rõ ràng.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Status Code</title>
</head>
<body>
<% response.sendError(404,"Guru Page Not Found"); %>
</body>
</html>

Giải thích mã:

Dòng mã 10: Sử dụng đối tượng phản hồi, chúng tôi sẽ gửi lỗi đến một trang có hai tham số.

  1. Mã trạng thái – Nó có thể là bất kỳ mã nào ở trên. Trong trường hợp này, chúng tôi đã mô tả là 404
  2. Thông báo - Đó có thể là bất kỳ thông báo cụ thể nào mà chúng tôi muốn hiển thị lỗi

Nếu bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau:

Mã trạng thái HTTP JSP

Đầu ra:

Ở đây, chúng tôi nhận được mã lỗi là 404, mã này được gửi từ mã và cũng hiển thị thông báo "Không tìm thấy trang Guru" trong đầu ra.

Tổng kết

  • Trong bài viết này, chúng ta đã tìm hiểu về yêu cầu của máy khách và phản hồi của máy chủ về cách yêu cầu bị chặn và cách xử lý các phản hồi đó.
  • hành động JSP sử dụng các cấu trúc theo cú pháp XML để kiểm soát hành vi của công cụ servlet.
  • Khi trang web được yêu cầu, nó sẽ gửi thông tin đến máy chủ web trong tiêu đề HTTP.
  • Khi một yêu cầu được xử lý và sau đó phản hồi được tạo ra từ máy chủ web. Nó bao gồm một dòng trạng thái, tiêu đề phản hồi, một dòng trống và tài liệu.
  • Khi yêu cầu được xử lý, phản hồi sẽ được tạo ra. Dòng trạng thái phản hồi bao gồm phiên bản HTTP, mã trạng thái và thông báo liên quan.