Nói về ServletContext và ServletConfig trong Jakarta EE Servlet

ServletContext là một đối tượng được khởi tạo bởi Web Container khi chúng ta deploy ứng dụng Jakarta EE web application. Nó được sử dụng lưu trữ và lấy thông tin mà chúng ta cấu hình cho tất cả các Servlet có trong ứng dụng. Còn ServletConfig thì giúp chúng ta lấy thông tin được định nghĩa cho một Servlet cụ thể nào đó. Cụ thể như thế nào? Trong bài viết này, mình sẽ thảo luận với các bạn về ServletContext và ServletConfig trong Jakarta EE Servlet các bạn nhé!

Đầu tiên, mình sẽ mới một Jakarta EE Servlet Maven project để làm ví dụ:

Bây giờ, mình sẽ tạo mới 2 Servlet:

HelloWorldServlet

và HuongDanJavaServlet:

rồi khai báo chúng trong tập tin web.xml như sau:

Kết quả khi chạy ứng dụng, request tới http://localhost:8080/hello như sau:

Và request tới http://localhost:8080/huongdanjava như sau:

Nếu các bạn định nghĩa thông tin cho tất cả các Servlet trong ứng dụng sử dụng một hoặc nhiều tag <context-param> trong tập tin web.xml như sau:

Khi đó, trong cả 2 Servlet mà mình định nghĩa ở trên đều có thể lấy được thông tin cấu hình này bằng cách sử dụng đối tượng ServletContext, ví dụ như sau:

Hay:

Phương thức getServletContext() sẽ trả về đối tượng ServletContext được manage bởi Web Container mà ứng dụng đang được deploy, được khởi tạo lúc chúng ta deploy ứng dụng.

Kết quả:

Hay:

Còn nếu các bạn định nghĩa thông tin cho một Servlet cụ thể nào đó bằng cách khai báo tag <init-param> bên trong tag <servlet>, thì thông tin này sẽ không available với các Servlet khác của ứng dụng và chúng ta lấy những thông tin này sử dụng ServletConfig.

Ví dụ bây giờ, mình khai báo tập tin web.xml như sau:

thì với đoạn code ở trên, chúng ta sẽ không lấy được thông tin context-param nữa:

Và:

Các bạn có thể lấy thông tin được khai báo trong HelloServlet bằng cách sử dụng ServletConfig như sau:

Kết quả:
Request tới http://localhost:8080/huongdanjava, các bạn sẽ thấy kết quả như sau:

Còn nhiều thông tin khác mà các bạn có thể cấu hình với Jakarta EE Servlet và cũng có thể sử dụng ServletContext và ServletConfig để lấy những thông tin này các bạn nhé!

Add Comment