Session – Lưu dấu session
Vì phương thức HTTP là stateless (ko lưu các thông tin lịch
sử), điều này ảnh hưởng sâu sắc đến lập trình ứng dụng web. Có 4 kỹ thuật để
lưu dấu session:
1) URL
rewritting – Thêm các tham số vào cuối URL
2) Hidden
fields – Sử dụng các trường ẩn
3) Cookies
– Sử dụng cookie để trao đổi dữ liệu giữa client và server
4) Session
objects – Sử dụng các đối tượng có phạm
vi (scope) là session để truyền thông tin.
URL Rewritting:
VD: Http://localhost:8080/Demo/test?x=abc&y=xyz
Phần sau ?x=abc&y=xyz là phần được thêm vào để truyền 2
parameter x và y
Để lấy giá trị này ta dùng lệnh request.getParameter(“x”), tương tự với y.
Hidden fields:
<INPUT TYPE=HIDDEN Name=hField VALUE="abc”>
Để lấy giá trị này ta dùng lệnh request.getParameter(“hField”).
Cookies:
Cookie được lưu bởi server và gửi về client cùng response.
Request được gửi tới server cùng với cookie nhưng ko thay đổi giá trị của
cookie. Giá trị của cookie được lưu trong bộ nhớ (ổ cứng ) của client.
VD1: lưu cookie (sử dụng response)
Cookie c1 = new Cookie("userName", "Helen");
Cookie c2 = new Cookie("password", "Keppler");
c2.setMaxAge(300);
response.addCookie(c1);
response.addCookie(c2);
Cookie được chia làm 2 loại là cookie bị xóa ngay sau khi
đóng trình duyệt. Loại thứ 2 gọi là persisting cookies, loại là c2 trong ví dụ
trên. Ta sử dụng setMaxage(int) để đặt tuổi theo giây cho cookie.
VD2: Đọc giá trị của cookies:
Cookie[] cookies =
request.getCookies();
for (int i = 0; i <
cookies.length; i++) {
Cookie cookie = cookies[i];
out.println("Name->" + cookie.getName() + " Value->" +
cookie.getValue());
}
Session objects:
HttpSession
session = request.getSession(true);
session.setAttribute("loggedIn",
new String("true"));
Vì có phạm vi (scope) là sesion nên giá trị này có thể được
đọc bởi các servlet (hoặc JSP) khác.
Ở đây ta sẽ làm demo sử dụng session object,các bước thực hiện như sau:
B1:Tạo mới project
B2:Trong trang index tao form gồm textbox username và nút submit
B3:Tạo LoginServlet để nhận thông tin để truyền vào session object
B3:Tạo HomeServlet để lấy thông tin session hiển thị ra,lưu ý khi sử dụng phương thức getAttribute() ta phải ép kiểu.
Kết quả:Giao diện trang Index
Sau khi nhấn submit thông tin session đã được nhận
Hiển thị session
LoginwithMockData&Session:link
Hình như thiếu chức năng logout!
Trả lờiXóa