Các phiên làm việc SESSION

Session được sử dụng để duy trì sự kết nối giữa Client và Server. Khi trình duyệt yêu cầu Web Server cung cấp một trang tài liệu, nó thiết lập một kết nối, lấy về nội dung cùa trang yêu cầu và sau đó huý bỏ kết nổi đó ngay lập tức. Để lưu lại dấu vết các trạng thái mà trinh duyệt yêu cầu thực hiện trước đỏ, Web Server cải đặt sẵn đối tượng của HttpSession. HttpSession dựa vào khái niệm Cookie qui định giữa Server và Client. Cookie là một mẩu tin được gừi cho trình duyệt ở Client khi có yêu cầu về một trang tin Mỗi khi trình duyệt gửi một yêu cầu cho Server, nó lại chuyển mẩu tin Cookie trả lại cho Server. Dựa vào các Cookie mà chương trình Server và Client có được những thông tin trạng thái thông báo cho nhau.

Giao diện HttpSession có 3 phương thức thường xuyên sử dụng:

  • public void setAttribute(String name, Object value) throws IỉỉegalStateException: Ket hợp một tên khoá với giá trị cùa biến.
  • public Object setAttribute(String name) throws IllegalStateException: Trả về đối tượng tương ứng với thuộc tính có tên là name.
  • public void removeAttribute(String            name)    throws IllegalStateException: Loại bỏ thuộc tính có tên là name.

Để sử dụng Session, ta thực hiện như sau:

  • Nhận về một đối tượng (cùa HttpSession) cho người sử dụng bằng cách gọi phương thức getSessionQ đối với đối tượng của lớp HttpSession userSession = request.getSessionO;
  • Lưu trữ và nhận dữ liệu từ Giao diện cung cấp những phương thúc để đặt lại giá trị cho các thuộc tinh hoặc xác đinh chúng như đã nêu ờ trên.

Ví dụ 6.6. Servlet thực hiện lưu trữ và đọc dữ liệu từ một Session import java.io.*; import java.util.*; import javax.servlet; import j avax.servlet.http.*;

public class SessionServlet extends HttpServlet{

public void doGet (HttpServletRequest re, HttpServletResponse res) throws ServletException, IOExceptio{ res.setContentType(“text/html”);

PrintWriter out = res.getWriter();

HttpSession session = re.getSession(true);

// In các thông tin về Session

Date dateCreated = new Date(session.getCreationTime0);

Date dateAccessed = new Date (session. getLastAccessedTime ());

out. println (’’ ID: ” + session. get ID ()) ;

out.println(“Created: ” + dateCreated);

out.println ( “Last Accessed; ” t dateAccessed);

// Đặt lại các thông tin cần thiết

String dataName = re.getParameter(“dataName”); if(dataName != null && dataName.length () > 0){ String dataValue = re.getParameter(“dataValue”); session.setAttribute(dataName, dataValue);

}

// In nội dưng nhận được từ Session

Enumeration e = session.getAttributeName(); while(e.hasMoreElement())(

String name = (string)e.nextElement();

String value = session.getAttribute(name).toStringO; out.println(name + ” = ” + value);