Các Scope trong JSP Servlet. Application, Request, Session, Page scope
1. Scope trong Servlet
Trong Servlet, scope là định nghĩa về thời gian mà dữ liệu của bạn có tồn tại cho người dùng trong ứng dụng web. Có 4 scope trong servlet là: page scope, request scope, session scope và application scope.
2. Application / context scope
-
Application scope hay context scope bắt đầu từ khi ứng dụng web được chạy cho tới khi shutdown. Các tham số, giá trị (Parameters/attributes) bên trong application scope sẵn dùng với tất cả các request và session.
-
Application scope được định nghĩa bởi javax.servlet.ServletContext interface.
-
Application object sẵn dùng trong 1 JSP page giống như một object ẩn được gọi bởi application.
- Trong một servlet, bạn có theer lấy các đối tượng application bằng cách gọi
getServletContext()
bên trong servlets code một cách trực tiếp hoặc gián tiếp quagetServletConfig().getServletContext()
. -
Web container cung cấp một đối tượng
ServletContext
cho mỗi ứng dụng web.
3. Request scope
- Request scope bắt đầu ngay khi một HTTP request được gửi tới server và kết thúc khi server trả về một HTTP response
- Các tham số/thuộc tính trong một Request scope có thể được truy cập từ các servlet hoặc jsp cùng phục vụ trong 1 request. Ví dụ bạn gọi 1 servlet/jsp sau đó các servlet/jsp này lại gọi các servlet/jsp khác rồi mới trả về reponse.
- Request object có sẵn trong JSP page như là 1 object ẩn . Bạn có thể set value cho 1 thuộc tính trong request object từ servlet và lấy nó ra ở JSP (Phải trong cùng 1 request).
4. Session scope
- Một Session Scope bắt đầu khi một client thành lập kết nối với ứng dụng web cho tới khi hết thời gian timeout hoặc browser bị đóng.
- Các giá trị bên trong session scope có thể được truy cập từ nhiều request khác nhau của cùng 1 client
- Một tính năng đáng chú ý của trình duyệt web (browser) là session được chia sẻ giữa các tab khác nhau. Bạn có thể gửi request từ 1 tab khác mà không cần login lại. Ví dụ bạn login gmail ở 1 tab, sau đó bạn sang tab khác vẫn có thể tải mail, gửi mail mà không cần phải login lại. Do đó, hãy luôn mở một cửa sổ trình duyệt mới khi bạn muốn thực hiện các giao dịch bảo mật.
- Session object sẵn dùng trong JSP pages giống như một object ẩn
- Trong Servlet, bạn có thể lấy đối tượng object bằng cách gọi
request.getSession()
.
5. JSP page scope
- Page scope giới hạn bởi phạm vi và thời gian tồn tại của các thuộc tính trong cùng 1 page nơi mà nó được tạo.
- Nó sẵn dùng trong một JSP page giống như một object ẩn.
Ví dụ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>JSP Page Scope Example</title> </head> <body> <c:set var="name" value="Dinesh" scope="page" /> Local Variable : <c:out value="${name}" /> <a href="test.jsp">Test Page</a> </body> </html>
Kết quả:
Local Variable: Dinesh
test.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>JSP Page Scope Example</title> </head> <body> Variable From previous page : <c:out value="${name}" /> </body> </html>
Kết quả:
Variable from previous page:
Như vậy mình đã giới thiệu xong cho các bạn về các Scope trong JSP Servlet. Application, Request, Session, Page scope.
Bài viết tương tự: Các scope trong JSF
Thanks các bạn đã theo dõi bài viết.
References:
http://www.javajee.com/application-request-session-and-page-scopes-in-servlets-and-jsps
https://www.dineshonjava.com/jsp-scopes-example/