Thứ Sáu, 13 tháng 6, 2014

Session

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



1 nhận xét: