Yêu cầu ứng dụng khách JSP, phản hồi máy chủ & Mã trạng thái HTTP

Mục lục:

Anonim

Các hành động JSP sử dụng các cấu trúc trong 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 phần tử Hành động JSP khác nhau như yêu cầu máy khách, phản hồi máy chủ, mã trạng thái HTTP.

Trong hướng dẫn này, bạn sẽ học-

  • Yêu cầu ứng dụng khách JSP
  • Phản hồi máy chủ JSP
  • Mã trạng thái HTTP JSP

Yêu cầu ứng dụng 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.

Các tiêu đề khác nhau được mô tả bên dưới:

Tiêu đề Sự miêu tả Thí dụ
Chấp nhận Nó chỉ định các loại MIME mà trình duyệt hoặc các ứng dụng khách khác có thể xử lý Hình ảnh / png hoặc hình ảnh / jpeg.webp
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 do trình duyệt xử lý Gzip hoặc nén
Chấp nhận ngôn ngữ Nó chỉ định ngôn ngữ được chỉ định cho khách hàng En, en_us
Ủy quyền 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 gửi bài. Nó cung cấp kích thước của dữ liệu bài đăng là byte
Bánh quy Trả lại cookie cho máy chủ (những cookie đã được gửi trước đó đến trình duyệt)
Tổ chức Chỉ định máy chủ và cổng của URL gốc
Nếu được 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 được sửa đổi kể từ Nó chỉ ra rằng nó chỉ yêu cầu một trang nếu nó chưa được 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 khách hàng đưa ra yêu cầu

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. Enumeration getAttributeNames () - chứa danh sách tên của các thuộc tính cho yêu cầu
  3. Enumeration getHeaderNames () - chứa danh sách các tên của tiêu đề.
  4. Enumeration getParameterNames () - chứa danh sách nhận các 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. Locale getLocale () - trả về ngôn ngữ ưa thích mà khách hàng sẽ chấp nhận nội dung. Nó đã đượ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 getAttribute (Tên chuỗi) - trả về giá trị của thuộc tính được đặt tên như một đối tượng.
  8. ServletInputStreamgetInputStream () - truy xuất phần tử của yêu cầu dưới dạng dữ liệu nhị phân.
  9. Chuỗi getAuthType () - trả về tên của lược đồ 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 phần nội dung của yêu cầu.
  11. Chuỗi getContentType () - trả về kiểu MIME của phần thân của yêu cầu.
  12. Chuỗi getContextPath () - trả về một phần của URI yêu cầu cho biết đường dẫn ngữ cảnh của URI
  13. String 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. String 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ề một 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ó

Thí dụ:

Trong ví dụ dưới đây, chúng tôi đang sử dụng các phương pháp 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. *"%> JSP Guru yêu cầu ứng dụng khách 

Guru JSP của Client Request Guru

<%HttpSession gurusession = request.getSession ();out.print (" ");Locale gurulocale = request.getLocale ();out.print (" ");Đường dẫn chuỗi = request.getPathInfo ();out.print (" ");String lpath = request.get ();out.print (" ");String servername = request.getServerName ();out.print (" ");int portname = request.getServerPort ();out.print (" ");Enumeration hnames = request.getHeaderNames ();while (hnames.hasMoreElements ()) {String paramName = (String) hnames.nextElement ();out.print (" ");String paramValue = request.getHeader (paramName);out.println (" ");}%>

Giải thích mã:

Dòng mã 17: Sử dụng đối tượng yêu cầu, chúng tôi đang nhận đố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: Sử dụng đối tượng yêu cầu, chúng tôi sẽ nhận được ngôn ngữ của ngôn ngữ i.een_US phiên cụ thể đó cho JSP đó.

Dòng mã 21: Sử dụng đối tượng yêu cầu, chúng tôi 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 nào cho URL được đề cập.

Dòng mã 23: Sử dụng đối tượng yêu cầu, chúng tôi đang 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 đang 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 đang nhận được cổng máy chủ.

Dòng mã 29-35: Sử dụng đối tượng request, chúng tôi nhận được các tên tiêu đề xuất hiện dưới dạ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 điều 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ủ lưu trữ, 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 nhận được kết quả sau:

Đầ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, tên đường dẫn, tên máy chủ, tên cổng, máy chủ lưu trữ, đường dẫn ngữ cảnh và tất cả các giá trị tiêu đề của JSP đó.

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

  • Khi một yêu cầu được xử lý và sau đó phản hồi được tạo 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.

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

guru header guru header Giá trị (các) guru
Tên phiên là " + gurusession + "
Tên ngôn ngữ là " + gurulocale + "
Tên đường dẫn là " + path + "
Đường dẫn ngữ cảnh là " + lipath + "
Tên Máy chủ là " + tên máy chủ + "
Cổng máy chủ là " + portname + "
" + paramName + "" + paramValue + "
Tiêu đề Sự miêu 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ộ nhớ đệm Tài liệu phản hồi có thể được lưu vào bộ nhớ đệm. Nó có thể là công khai, riêng tư và không có bộ nhớ cache. Không có bộ nhớ cache chỉ định rằng tài liệu không được lưu vào bộ nhớ cache
Kết nối Nó hướng dẫn liệu trình duyệt có nên sử dụng SaveHTTPConnections 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ữ cho tồn tại" có nghĩa là sử dụng kết nối liên tục
Bố cục 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
Thời lượng nội dung Số byte trong phản hồi
Loại nội dung Nó chỉ định kiểu phản hồi MIME
Hết hạn Chỉ định cho đến khi nào nội dung được coi là đã lỗi thời và không nên lưu vào bộ nhớ đệm
Sửa đổi lần cuối Nó cho biết thời điểm tài liệu được sửa đổi lần cuối
Vị trí Nó phải được bao gồm với tất cả các câu trả lời có mã trạng thái có 300 là mã trạng thái
Làm tươi Nó chỉ định cách tìm trang được 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 nó có thể lặp lại yêu cầu sớm như thế nào
Set-cookie Chỉ định cookie được liên kết với trang

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

  1. String encodeRedirectURL (String URL) - mã hóa URL trong phương thức redirectURL.
  2. Mã hóa chuỗiURL (URL chuỗi) - mã hóa URL bằng cách bao gồm ID phiên.
  3. Boolean containsHeader (Tên chuỗi) - nó có chứa tiêu đề trong JSP hoặc 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 (String name, String value) - thêm giá trị và tên ngày của tiêu đề phản hồi
  7. Void addHeader (String name, String value) - 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. Void flushBuffer () - buộc nội dung trong bộ đệm đến đầu ra cho máy khách.
  10. Void reset () - xóa dữ liệu trong bộ đệm.
  11. Void resetBuffer - 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 đến máy khách 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 đến máy khách.
  14. Void setBufferSize (int size) - đặt kích thước vùng đệm của phần thân
  15. Void setCharacterEncoding (Chuỗi ký tự) - đặt mã hóa ký tự
  16. Void setContentType (Kiểu chuỗi) - đặt kiểu 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 kiểu 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

Thí dụ:

Trong ví dụ này, chúng tôi đề 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. *"%> Phản hồi hành động của Guru 

Phản hồi của Guru

<%Ngôn ngữ lcl = response.getLocale ();out.println ("Ngôn ngữ là: + lcl + "\ n");response.flushBuffer ();PrintWriter output = response.getWriter ();output.println ("Đây là từ đối tượng nhà văn");Kiểu chuỗi = response.getContentType ();out.println ("Kiểu nội dung: + type + "\ n");// Đặt thời gian làm mới, tự động tải là 5 giâyresponse.setIntHeader ("Làm mới", 5);// Lấy thời gian hiện tạiNgày dt = new Ngày ();out.println ("Ngày hôm nay là: + dt.toString () + "\ n");%>

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, bộ đệm phẳng đượ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 tôi nhận được đối tượng nhà văn nhận đầu ra trong luồng đầu ra

Dòng mã 18: Sử dụng đối tượng phản hồi, chúng tôi nhận được kiểu nội dung tức là kiểu MIME của đối tượng phản hồi

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 nhận được kết quả sau:

Đầu ra:

  • Ở đây chúng ta nhận được đầu ra vì đây là từ đố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 trong luồng đầu ra.
  • Chúng tôi nhận ngôn ngữ là en_us và loại nội dung là văn bản / html
  • Chúng tôi nhận được bộ mã 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. 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à nó đượ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 tôi không cần đặt rõ ràng.
  • Chúng ta có thể đặt dưới dạng phương thức response.setStatus ()

Các mã này thuộc 5 loại sau:

  • 100-199 - Ở đây khách hàng chỉ ra rằng nó sẽ phản hồi bằng một số hành động
  • 200-299 - Nó có 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 - Chỉ ra lỗi do khách hàng
  • 500-599 - Cho biết lỗi do máy chủ

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

  • 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 không hợp lệ
  • 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ợ

Một số phương pháp của nó được liệt kê dưới đây:

  1. Public void setStatus (intstatusCode)

    Nó đặt mã trạng thái mà chúng ta muốn đặt 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 đặt

  2. Công khai void sendRedirect (Chuỗi URL)

    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. Public void sendError (intcode, Stringmsg)

    Nó gửi mã trạng thái cùng với thông điệp ngắn và nó được định dạng bên trong tài liệu HTML.

Thí dụ:

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

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%> Mã trạng thái Guru <% response.sendError (404, "Không tìm thấy trang Guru"); %>

Giải thích mã:

Dòng mã 10: Sử dụng đối tượng phản hồi, chúng tôi đang 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 - Nó 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:

Đầu ra:

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

Tóm lược:

  • 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ý phản hồi.
  • Ngoài ra, chúng tôi đã tìm hiểu về mã trạng thái HTTP để hiển thị mã lỗi hoặc mã thành công cho một tệp cụ thể.