Breaking

11 tháng 5, 2021

Giới thiệu về Java Servlet

 


2.1 Introduction

Servlet là một chương trình phía máy chủ được viết bằng ngôn ngữ lập trình Java. Servlet là một trang Web thành phần xử lý các yêu cầu của khách hàng và tạo ra nội dung động để đáp ứng. Thông thường, phản hồi được tạo chứa nội dung HTML được gửi lại cho máy khách.

Servlet là giao thức độc lập có nghĩa là các loại máy khách khác nhau có thể truy cập Servlet. Các loại máy khách khác nhau đối với một Servlet có thể là một máy khách Web gửi yêu cầu thông qua HTTP hoặc nó có thể là một điểm cuối của dịch vụ Web gửi dữ liệu yêu cầu thông qua giao thức SOAP.

2.2 Servlet API

Tất cả các lớp liên quan đến phát triển và quản lý Servlet được cung cấp trong hai gói cụ thể là, javax.servlet

javax.servlet.http

·         Javax.servlet

Chứa các giao diện và lớp chung chung được thiết lập được cố vấn và mở rộng bởi tất cả các Servlet. Gói này về cơ bản cung cấp một khuôn khổ cho Hoạt động của Servlet.

Nó bao gồm một giao diện có tên Servlet định nghĩa các phương thức vòng đời cho Servlet. Mọi Servlet phải triển khai javax. Servlet.

·         javax.servlet.http

Chứa các lớp và giao diện được sử dụng để phát triển Servlet hoạt động với giao thức HTTP.

Figure 2.1 hệ thống phân cấp API Servlet.

Gói javax.servlet chứa một lớp trừu tượng có tên là GenericServlet kế thừa từ lớp Object và giúp thiết kế một Servlet độc lập với giao thức.

GenericServlet thực hiện ba giao diện cụ thể là,

·         Servlet - Giao diện này xác định các phương thức vòng đời của một Servlet.

·         ServletConfig - Giao diện này định nghĩa các phương thức được sử dụng bởi Servlet container để truyền thông tin đến một cá thể Servlet trong quá trình khởi tạo nó.

·         Serializable - Giao diện này được định nghĩa trong gói java.io để tuần tự hóa trạng thái của một đối tượng.

. Đoạn mã 1 trình bày cách tạo một servlet đăng nhập độc lập với giao thức.

Trong mã đã cho, lớp có tên LoginServlet  Để phát triển một Servlet chỉ có thể truy cập thông qua trình duyệt Web, bạn có thể tạo một HTTP Servlet bằng cách mở rộng lớp HttpServlet. Lớp HTTPServlet là một lớp con của GenericServlet và cho phép tạo Servlet dựa trên HTTP như một phần của ứng dụng Web.

Đoạn mã 2 cho thấy việc tạo servlet đăng nhập để được truy cập trên Web



Trong đoạn mã đã cho, LoginServlet được định nghĩa là HTTP servlet, vì vậy nó sẽ được truy cập thông qua giao thức HTTP.

2.3 Servlet Life Cycle

Một đời sống của servlet có thể được định nghĩa là toàn bộ quá trình từ khi tạo ra đến khi hủy

Instantiation

Trong giai đoạn này, thùng chứa servlet tạo một đối tượng của servlet

Initialization

 Trong giai đoạn này, thùng chứa servlet gọi phương thức Init() bắt đầu vòng  đời của Servlet.

Service

Servlet xử lý yêu cầu do máy khách đưa ra và tạo phản hồi động để gửi lại cho máy khách

Destroy

Thùng chứa hủy servlet

Unavailable

thùng chứa giải phóng bộ nhớ bị chiếm dụng bởi Servlet.

Figure2.2 Vòng đời của servlet

 


 

2.3.1 Servlet Life Cycle Methods

Vòng đời Servlet được xác định bằng các phương pháp sau:

Init()

Phương thức khởi tạo servlet. Vòng đời của servlet bắt đầu bằng phương thức init (). Phương thức init () chỉ được gọi một lần bởi máy chủ và không gọi lại cho mỗi yêu cầu của người dùng.

Service()

phương thức xử lý yêu cầu của máy khách.

Destroy()

Phương thức này sẽ hủy giao diện servlet, nếu không có thêm yêu cầu nào được xử lý. Máy chủ gọi phương thức này sau khi tất cả các yêu cầu đã được xử lý hoặc số giây dành riêng cho máy chủ đã trôi qua, tùy điều kiện nào đến trước.

2.3.2 Servlet Architecture

Vùng chứa Servlet chịu trách nhiệm xử lý việc thực thi Servlet dựa trên mô hình đa luồng. Điều này có nghĩa là, khi vùng chứa nhận được yêu cầu cho cùng một Servlet, nó sẽ tạo một luồng mới để xử lý việc thực thi Servlet và hủy khi quá trình thực thi hoàn tất.

 

Figure 2.3 Xử lý nhiều yêu cầu của khách hang cùng 1 lúc

 


luồng thông tin trong Servlet như sau:

1.Trình duyệt Web gửi một yêu cầu HTTP đến máy chủ Web thông qua Bộ định vị tài nguyên đồng nhất (URL). Ví dụ, một URL, http: // localhost: 8080 /.../ LoginServlet được gửi đến Máy chủ Web.

2. Khi nhận được yêu cầu, công cụ Web sẽ xem xét tệp mô tả triển khai web.xml để khớp URL với các Servlet đã đăng ký.

3. Sau khi tìm thấy Servlet được yêu cầu, công cụ Web sẽ chuyển tiếp nó tới vùng chứa Servlet chịu trách nhiệm khởi tạo cá thể Servlet.

4. Đầu tiên vùng chứa định vị lớp servlet, tải servlet và tạo một thể hiện của servlet trong bộ nhớ

5. Sau khi Servlet được tải bởi vùng chứa Servlet, nó sẽ được khởi tạo hoàn toàn và sau đó yêu cầu của khách hàng được xử lý

Để phục vụ yêu cầu của nhiều khách hàng, thùng chứa servlet tạo nhiều luồng cho cùng một cá thể Servlet. Mỗi cá thể xử lý yêu cầu nhận được từ máy khách và tạo ra phản hồi được gửi đến công cụ Web, từ đó gửi phản hồi đên khách hàng.



2.4 Handling Servlet Request

Khi một servlet được yêu cầu để xử lý một yêu cầu, nó cần thông tin cụ thể về yêu cầu đó để có thể xử lý yêu cầu một cách thích hợp. Giao diện ServletRequest cung cấp quyền truy cập vào thông tin cụ thể này.



2.5 Handling Servlet Response

Xử lý phản hồi Servlet xác định một đối tượng để giúp Servlet gửi phản hồi đến máy khách bằng các giao diện khác nhau.

Khi một servlet xử lý một yêu cầu, máy chủ sẽ chuyển một đối tượng yêu cầu, đối tượng này thực thi giao diện ServletRequest. Với đối tượng này, servlet có thể tìm hiểu thông tin về yêu cầu thực tế như giao thức, Bộ định vị tài nguyên đồng nhất (URL) và kiểu. Nó có thể truy cập các phần của yêu cầu thô như tiêu đề và luồng đầu vào. Trong cũng có thể truy xuất các thông số yêu cầu cụ thể của khách hàng, chẳng hạn như dữ liệu được nhập vào biểu mẫu trực tuyến.


Một số phương thức được định nghĩa trong giao diện ServletRequest như sau:

public String getParameter(String s)

public Object getAttribute(String name)

public int getContentLength()

public ServletInputStream getInputStream() throws IOException

public String getServerName()

public Cookie[] getCookies()

public String getHeader (String name)

public String getMethod()

public String getPathInfo()

public String getAuthType()

public java.lang.String getParameter(java.lang.String name)

public java .util . Enumeration getParameterNames ()

public java.lang.String[] getParameterValues(java.lang.String name)


Tiêu đề Yêu cầu Http

Accept: Nó được sử dụng để chỉ định các loại tiêu đề được khách hàng chấp nhận.

Accept-Charset: Các bộ ký tự được phản hồi chấp nhận được trường này chỉ định.

Accept-Encoding: Hạn chế mã hóa nội dung được chấp nhận bởi phản hồi được đề cập trong trường.

Accept-Language: Trường này đặt giới hạn cho một nhóm ngôn ngữ tự nhiên được sử dụng bởi phản hồi.

Authorization: Authentication of a user agent with a server is done by this field.


Đọc tiêu đề Biểu mẫu Yêu cầu

public String getHeader (String name)

public java.util.Enumeration getHeaders(java.lang.String name)

public java .util . Enumeration getHeaderNames ()


Biểu mẫu HTML (form)

Text input

Drop-down list input

Submit button

Methods (GET/POST)

Action


Xử lý dữ liệu biểu mẫu bằng đối tượng yêu cầu

doGET ()

doPOST ()


2.5.1 ‘ServletResponse’ Interface

Phản hồi của Servlet là phản hồi được gửi bởi servlet tới máy khách. Các giao diện ServletResponse và HttpServletResponse bao gồm tất cả các phương thức cần thiết để tạo và thao tác đầu ra của một servlet.

Giao diện ServletResponse xác định các phương thức cho phép truy xuất luồng đầu ra để gửi dữ liệu đến máy khách, quyết định loại nội dung, v.v. Giao diện ServletResponse định nghĩa một đối tượng, được sử dụng để cung cấp phản hồi cho một máy khách.

Đối tượng này được truyền như một đối số cho phương thức service () của một servlet.

 

Các phương thức được xác định bởi giao diện ServletResponse như sau:

-          public java.lang.String getContentType ():

Trả về kiểu Tiện ích mở rộng Internet Mail Extensions (MIME) của nội dung yêu cầu hoặc null nếu kiểu không được biết.

-          public PrintWriter getWriter() throws IOException:

Trả về một đối tượng của lớp PrintWriter gửi văn bản ký tự đến máy khách.

-          public ServletOutputStream getOutputStream() throws IOException:

Sử dụng đối tượng ServletOutputStream để ghi phản hồi dưới dạng dữ liệu nhị phân cho máy khách.

-          public void setContentType(java.lang.String str):

Được sử dụng để đặt định dạng mà dữ liệu được gửi đến máy khách, ở định dạng văn bản bình thường hoặc định dạng html.

 

2.5.2 HttpServletResponse Interface

 

Giao diện HttpServletResponse mở rộng giao diện ServletResponse và cung cấp

thông tin tới HttpServlet. Nó định nghĩa một đối tượng HttpServlet, được truyền như một đối số cho phương thức service () của servlet.

Sử dụng giao diện HttpServletResponse, bạn có thể đặt tiêu đề phản hồi HTTP, đặt loại nội dung của phản hồi, thu được luồng văn bản cho phản hồi, có được luồng nhị phân cho phản hồi, chuyển hướng yêu cầu HTTP đến một URL khác hoặc thêm cookie vào phản hồi.



2.5.3 Methods in HttpServletResponse Interface

Các phương thức được xác định bởi giao diện HttpServletResponse như sau:

-          public void addCookie (Cookie cookie):

Thêm cookie đã chỉ định vào phản hồi, được gửi đến khách hàng.


Code Snippet 6:


 

-          public void addHeader(java.lang.String name, java.lang.String value):

Được sử dụng để thêm tên và giá trị vào tiêu đề phản hồi.

 

-          public boolean containsHeader(String name):

Được sử dụng để xác minh xem tiêu đề phản hồi có chứa bất kỳ giá trị nào không. Nó trả về true nếu tiêu đề phản hồi có bất kỳ giá trị nào. Ngược lại, nó trả về false.

 

-          public void sendError(int sc) throws java.io.IOException:

Gửi phản hồi lỗi cho máy khách bằng mã trạng thái được chỉ định và xóa bộ đệm. Mã trạng thái được sử dụng để chỉ ra lý do, một yêu cầu không được đáp ứng hoặc một yêu cầu đã được chuyển hướng.

 

2.5.4 Response Headers

Tiêu đề phản hồi được đính kèm với các tệp được gửi trở lại máy khách. Nó chứa ngày, kích thước và loại tệp mà máy chủ gửi lại cho máy khách và cả dữ liệu về chính máy chủ.

 

Tiêu đề phản hồi có thể được sử dụng để chỉ định cookie để cung cấp ngày sửa đổi. Nó cũng được sử dụng để hướng dẫn trình duyệt tải lại trang. Ngoài ra, nó chỉ định mức độ lớn của tệp, để xác định thời gian kết nối HTTP cần được duy trì.

 

2.5.5 Sending Headers

Các phương thức của giao diện HttpServletResponse được sử dụng để gửi thông tin tiêu đề đến máy khách như sau:

 

-          addHeader () - Thêm tiêu đề phản hồi với tên và giá trị đã cho.

 

-          addDateHeader () - Thêm tiêu đề phản hồi với tên và giá trị ngày đã cho.

 

-          addIntHeader () - Thêm tiêu đề phản hồi với tên và giá trị số nguyên đã cho.

 

-          containsHeader () - Trả về một giá trị boolean để cho biết nếu tiêu đề phản hồi có đã được thiết lập.

2.5.6 Sending Data from Servlet Using Response Object

Hãy để chúng tôi tạo một servlet để gửi dữ liệu tệp jar bằng đối tượng phản hồi đến máy khách.

-          Đối tượng Phản hồi phải thực hiện các bước sau:

Thông báo cho trình duyệt, loại tệp / dữ liệu đang được chuyển.

Chuyển đổi dữ liệu đối tượng thành luồng.


Code Snippet 7: cho thấy cách gửi dữ liệu bằng đối tượng phản hồi.



Trong đoạn mã đã cho, response.setContentType (“application/jar”) nói với trình duyệt để nhận ra rằng đối tượng phản hồi mang một JAR.

OutputStream os = response . getOutputStream () đọc các byte JAR và ghi các byte vào luồng đầu ra nhận được từ đối tượng phản hồi.

 


Reading Binary Data (Đọc dữ liệu nhị phân)

- Công dụng :

Một số ứng dụng Web như e-mail cần gửi các tệp như tài liệu và hình ảnh, từ một hệ thống khác dưới dạng tệp đính kèm. Trong trường hợp này, dữ liệu được truyền từ máy khách đến ứng dụng Web sẽ thuộc loại nhị phân. Trong những trường hợp như vậy, người dùng sẽ chỉ định tham chiếu đến các tệp nhị phân trong trực tuyến hình thức.

 

-Các Phương thức hoạt động :

 

1. Dùng Multipart / form-data:

- Định Nghĩa:

Multipart / form-data là một loại phương tiện Internet trả về một tập hợp các giá trị là kết quả của người dùng điền vào một biểu mẫu. Các bộ giá trị này được truyền dưới dạng dữ liệu nhị phân. Mỗi yêu cầu được xử lý bởi một servlet có một luồng đầu vào được liên kết với nó.

 

-Cú pháp

Bạn sử dụng get InputStream () để truy xuất luồng đầu vào dưới dạng ServletInputStream

vật. Cú pháp của phương thức getInputStream () như sau:

2. Producing Text and Binary Data(Sản xuất dữ liệu văn bản và dữ liệu nhị phân)

 

Có hai phương thức thuộc giao diện ServletResponse để tạo ra các luồng đầu ra là

sau:

 

1. GetOutputStream () trả về một ServletOutputStream, có thể được sử dụng cho dữ liệu nhị phân.

 

2. GetWriter () trả về một java. io. Đối tượng PrintWriter, chỉ được sử dụng cho văn bản đầu ra. Phương thức getWriter () kiểm tra kiểu nội dung để xác định bộ ký tự nào để sử dụng, vì vậy setContentType () nên được gọi trước getWriter ().

 




3. Sending Text and Binary Data (Gửi dữ liệu văn bản và dữ liệu nhị phân)

 

- Định nghĩa:

Bất cứ khi nào bất kỳ tệp nào được gửi đến máy khách đều phải được mã hóa, ví dụ: hình ảnh hoặc tệp đính kèm văn bản, nó được gửi dưới dạng dữ liệu nhị phân. ServletOutputStream cung cấp một luồng đầu ra để gửi tệp nhị phân dữ liệu cho khách hàng.

 

Các phương thức được hỗ trợ bởi lớp ServletOutputStream như sau:

Ghi một giá trị boolean cho máy khách không có ký tự Carriage Return-Line Feed (CRLF) tại

kết thúc.

 

Ghi giá trị ký tự cho máy khách, theo sau là Nguồn cấp dữ liệu dòng trả lại vận chuyển (CRLF).

 


Redirecting Requests (yêu cầu chuyển hướng)


-Định nghĩa:

Bất cứ khi nào khách hàng đưa ra yêu cầu, yêu cầu sẽ được chuyển đến vùng chứa servlet. Servlet container quyết định liệu servlet liên quan có thể xử lý yêu cầu hay không. Nếu servlet không thể xử lý yêu cầu, nó quyết định rằng yêu cầu có thể được xử lý bởi một servlet hoặc JSP khác.

Sau đó, servlet gọi phương thức sendRedirect () và gửi phản hồi đến trình duyệt cùng với mã trạng thái. Trình duyệt đưa ra một yêu cầu mới, với tên của servlet bây giờ có thể xử lý yêu cầu và hiển thị kết quả trên trình duyệt. Việc chuyển hướng này được thực hiện bởi các phương pháp sau:

 

-         public void sendRedirect(java.lang.String location) throws java.io.IOException

 

Gửi phản hồi chuyển hướng tới khách hàng bằng cách sử dụng URL vị trí chuyển hướng được chỉ định. Ví dụ:

response . sendRedirect (response . encodeRedirectURL (contextPath +“/maps”) ) ;

Chuyển hướng yêu cầu đến vị trí được chỉ định.

 

 

-         public java.1ang.String encodeRedirectURL(java.1ang.String url)

Mã hóa URL được chỉ định để sử dụng trong phương thức sendRedirect () hoặc nếu không mã hóa cần thiết, trả về URL không thay đổi. Tất cả các URL được gửi bằng phương thức  sendRedirect () nên được mã hóa chạy bằng phương pháp này.

 

 

1.Request Dispatcher(Yêu cầu điều phối viên)

 

- Định nghĩa:

Các servlet đôi khi cần truy cập tài nguyên mạng để đáp ứng các yêu cầu của khách hàng. Các nguồn tài nguyên có thể là một servlet khác, một trang JSP hoặc một tập lệnh CGI. Một servlet chạy trong một môi trường được gọi là ngữ cảnh servlet, mô tả các tham số khác nhau được liên kết với servlet. Một servlet thuộc về chỉ một ngữ cảnh servlet.

 

-chú ý:

Một servlet không thể truy cập các tài nguyên như các trang HTML tĩnh, được lưu trữ trong các tệp cục bộ bằng cách sử dụng các đối tượng RequestDi spat cher. Tài nguyên cục bộ có thể được truy cập bằng phương pháp getResource (Đường dẫn chuỗi) của đối tượng ServletContext trả về đối tượng URL cho một tài nguyên được chỉ định bởi Mã định danh tài nguyên thống nhất cục bộ (URI), ví dụ: '/ html'.

 

Phương thức ServletRequest. getRequestDispatcher (java. lang.String) cho phép sử dụng đường dẫn tương đối trong khi phương thức ServletContext.getRequestDispatcher (java. lang. chuỗi) chỉ cho phép đường dẫn tuyệt đối.

 

- Các servlet thuộc cùng một ứng dụng có thể chia sẻ dữ liệu bằng các phương pháp sau:

Giao diện RequestDispatcher như sau:


-Trong đó:

 

- requestl là yêu cầu của khách hàng đối với servlet;

 

- responseel là phản hồi được thực hiện bởi servlet đối với máy khách

 

Ví dụ:

-          Trong đoạn code này truy xuất ngữ cảnh của servlet, từ thể hiện RequestDispatcher của nó, và sau đó điều khiển fonNards đến trang JSP.

 


-Phương thức được sử dụng để bao gồm nội dung của một servlet, trang JSP hoặc một tệp HTML khác đó là phương thức  Include();

Ví dụ:

Trong đó:

- requestl là đối tượng chứa yêu cầu của khách hàng.

- responseel là đối tượng chứa phản hồi của servlet.

Trình bày mã bao gồm nội dung từ đường dẫn được chỉ định:

Ví dụ:



2.8 Initializing Servlets

Trong một ứng dụng Web, thông tin kết nối cơ sở dữ liệu như tên người dùng và mật khẩu SOL

không được gửi đến servlet mỗi khi khách hàng đưa ra yêu cầu Do đó thông tin này cần phải được

được chuyển đến servlet trước khi bắt đầu vòng đời của servlet

Để chuyển các tham số từ clienteside sang các servlet để thực thi lần đầu tiên và

truy xuất dữ liệu được yêu cầu theo chỉ định của người dùng mà servlet cần được khởi tạo Để thiết lập

giao tiếp máy chủ khách hàng không bị gián đoạn khi bắt đầu khởi tạo quy trình được thực hiện Sau khi

thiết lập kết nối đầu tiên, quá trình này được thực hiện bằng cách tự động làm mới trang

được quản lý bởi chính servlet

2.8.1 init Parameters

Để truyền đối số trong quá trình khởi tạo, servletcontainer sử dụng một ObjectOfServletConfig

giao diện Giao diện ServletConfig cung cấp nhiều phương pháp khác nhau để cấu hình một servlety trước đây

xử lý dữ liệu do khách hàng yêu cầu

 

Servlet có quyền truy cập trực tiếp vào các tham số khởi tạo Servlet bằng cách sử dụng getInitParameter ()  method

Code Snipper10: minh họa mã truy xuất các tham số của servlet.


Phương thức tương tự có sẵn trong giao diện ServletConfiq để đọc tham số khởi tạo.

 

2.8.2 Reading Parameters in initil Method

Code Snipper11: minh họa cách một servlet đọc các tham số khởi tạo



2.8.3 ServletContext

Đầu tiên vùng chứa định vị lớp servlet tải servlet và tạo một thể hiện của

servlet Sau đó, nó gọi phương thức init() để khởi tạo giao diện ServletConfig của servlet A

đối tượng được truyền dưới dạng đối số cho phương thức init() cung cấp quyền truy cập cho servlet sang giao diện ServletContext

 

2.8.4 ‘ServletContex’ Interface

Bối cảnh của servlet cung cấp quyền truy cập vào các tài nguyên và cơ sở vật chất khác nhau, chung cho tất cả

các servlet trong ứng dụng API servlet được sử dụng để đặt thông tin chung cho tất cả các senilet

trong một ứng dụng

 

Các Servlet chạy trong cùng một máy chủ đôi khi chia sẻ tài nguyên chẳng hạn như các tệp có nhiều trang JSP

và các servlet khác Điều này là bắt buộc khi một số servlet được liên kết với nhau để tạo thành một

ứng dụng chẳng hạn như ứng dụng trò chuyện tạo phòng trò chuyện duy nhất cho tất cả người dùng

 

APl của servlet cũng biết về các tài nguyên của các servlet trong ngữ cảnh Các thuộc tính của

Lớp ServletContext có thể được sử dụng để chia sẻ thông tin giữa một nhóm các servlet

 

2.8.5 ‘ServletContex’ Methods

Các phương thức ServletContext được sử dụng để lấy và thiết lập thông tin bổ sung về servlet

 

Sau đây là một số phương thức thường được sử dụng của giao diện ServletContext

 

El public String getInitParameter(String name) Trả về tham số

giá trị cho tên tham số được chỉ định

 

El public void setAttribute(String name,Object object) Đặt giá trị đã cho

đối tượng trong phạm vi ứng dụng

 

El public Object getAttribute (String name) Trả về thuộc tính cho

tên cụ thể

 

El public Enumeration getlnitParameterNames() Trả về tên của

các tham số khởi tạo ngữ cảnh như một Danh sách các đối tượng Chuỗi

 

El public void removeAttribute (String name) Xóa thuộc tính Với

tên được cung cấp từ ngữ cảnh servlet

 

Code Snippet 12: hiển thị tệp web.xml để chỉ định các tham số ngữ cảnh và servlet tham số khởi tạo


Code Snippet 13: trình diễn mã để đọc các tham số ngữ cảnh từ tệp xml.web




2.9 Error Handling in Servlets


1. Khái niệm

Có nhiều tình huống mà máy chủ Web có thể báo lỗi. Một trang web được người dung truy cập có thể là chuyển từ địa điểm này sang địa điểm khác.  Người dùng đã gõ sai địa chỉ trang web người dùng yêu cầu, Trang web bị cấm, bị xóa tạm thời hoặc phiên bản HTTP không được tìm thấy. Cũng có một số các tình huống khác mà lỗi có thể được tạo ra.

 

2. Các loại lỗi thường hay gặp

- Lỗi 301: là một mã trạng thái HTTP ( response code HTTP) để thông báo rằng các trang web hoặc URL đã chuyển hướng vĩnh viễn sang một trang web hoặc URL khác, có nghĩa là tất cả những giá trị của trang web hoặc URL gốc sẽ chuyển hết sang URL mới.

- Lỗi 302: là một mã trạng thái HTTP ( response code HTTP) thể thông báo rằng trang web hoặc URL đã chuyển hướng tạm thời sang địa chỉ mới nhưng vẫn phải dựa trên URL cũ. Vì một lý do nào đó, ví dụ như bảo trì trang web chính.

- Lỗi 400: là một mã trạng thái HTTP, thông báo cho người dùng biết rằng hiện máy chủ web không thể xử lý truy vấn do sự cố nào đó.

- Lỗi 401: Do bị hạn chế truy cập bởi admin hoặc do bạn đã gõ sai mật khẩu truy cập của mình.

- Lỗi 404: là 1 mã trạng thái HTTP, nó có nghĩa trang web bạn đang muốn truy cập không tìm thấy trên máy chủ hiện hành.

- Lỗi 408: là mã trạng thái HTTP có nghĩa là yêu cầu bạn gửi đến máy chủ trang web (ví dụ yêu cầu tải trang web) mất nhiều thời gian hơn so với máy chủ của trang web đã được chuẩn bị để chờ đợi. Nói cách khác, kết nối của bạn với trang web “đã hết thời gian”.

- Lỗi 500: là sever của website mà chúng ta truy cập bị gặp sự cố. Sự cố mà sever của website gặp phải có thể do quá nhiều người truy cập một lúc

Một ví dụ về lỗi 404



3. Phương thức lỗi trong lớp ‘HttpServlet’

- Các lỗi trong quá trình thực thi ứng dụng Web được thông báo bằng các phương pháp sau:

+ sendError(): Phương thức này kiểm tra mã lỗi rồi gửi cho người dung một thông báo. Sau khi gửi thông báo cho người dung thì bộ đệm sẽ bị xóa.

* Cú Pháp: public void sendError(int MaLoi) throws java.io.exception

* MaLoi: là mã lỗi truyền vào cho phương thức ví dụ 404,301,500.

* Ví dụ về phương thức sendError():


 

+ setStatus(): Phương thức này sẽ chuyển hướng trang web sang một trang thông báo lỗi với nội dung được chỉ định trước.

* Cú pháp: pulic void HttpServletReponse.setStatus(int MaLoi)

* MaLoi: là mã lỗi truyền vào cho phương thức ví dụ 404,301,500.

* Ví dụ về phương thức setStatus():


4. Logging Errors

- Hiểu một cách đơn giản "Logging" là "ghi chép" lại các vấn đề trong quá trình ứng dụng hoạt động. Các vấn đề ở đây là các thông tin lỗi, các cảnh báo (warning), và các thông tin khác, ... Các thông tin này có thể được hiển thị trên màn hình Console hoặc ghi vào file

- Phương thức log () cũng hỗ trợ gỡ lỗi bằng cách mô tả tất cả các chi tiết về lỗi. Lỗi có thể được xem bằng cách sử dụng log () để ghi lại trong một máy chủ.

 

* Phương thức log() có thể được sử dụng bằng cách truyền một đối số hoặc hai đối số

* Cú pháp: pubic void log(String ThongBao)

* ThongBao: là thông báo được chỉ định.

* Ví dụ về Log()


 

5. Forwarding to Error Page

- RequestDispatcher được sử dụng để chuyển hướng yêu cầu của người dùng đến một trang Web khi nhận một thông báo lỗi trên máy chủ. Đối tượng RequestDispatcher được tạo bởi servlet container.

- Các phương thức tạo object interface cho RequestDispatcher:

+ ServletContext.getRequestDispatcher (String path): Phương thức này nhận chuỗi string làm đường dẫn, nằm trong phạm vi của ServletContext. Đường dẫn, liên quan đến gốc được truyền như một đối số. Path được sử dụng để xác định vị trí của servlet mà nó được chuyển hướng đến.

+ ServletContext. getNamedDispatcher(String name): Phương thức này nhận một chuỗi string để chỉ ra tên của servlet cho ServletContext. Nó trả về một đối tượng RequestDispatcher cho servlet được đặt tên.

+ ServletRequest.getRequestDispatcher(string path): Phương pháp này sử dụng đường dẫn tương đối là vị trí của tệp liên quan đến đường dẫn 'hiện tại. Điều này tương tự như phương thức trong cùng tên như trong servletContext. Chuyển đổi đường dẫn servlet hiện tại so với một đường dẫn hoàn chỉnh.

* Ví dụ về thị việc gửi đối tượng lỗi




Bài viết kết thúc, Cảm ơn bạn đã đọc. hãy để lại bình luận của bạn!



Không có nhận xét nào:

Đăng nhận xét