COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Bài 5 ĐỐI TƯNG SESSIONTRONGJSPTrong bài trước chúng ta sẽ làm quen các đốitượng thường sử dụng trong quá trình thiết kế trang JSP như Request, Response. Trong bài này chúng ta tiếp tục làm việc với đốitượng Session. Những vấn đề chính sẽ được đề cập trong bài học này 9 Đốitượng Session. 9 Ứng dụng đốitượng Session. ĐỐI TƯNG SESSION Khi muốn truyền giá trò từ trang trang web này sang trang web khác trong một phiên làm việc thì sử dụng dụng đốitượng Session. Đốitượng này thuộc lớp HttpSession. http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpSession.html 1. 1.1. Nhận dạng một phiên làm việc Mỗi khi có một phiên làm việc được tạo ra, thì trình chủ web sẽ cấp một đònh danh là một chuỗi bao gồm các ký tự và số cho phiên làm việc đó. Chẳng hạn, bạn mở một browser và gọi trang jsp từ web site, khi đó phiên làm việc được tạo ra cùng với đònh danh duy nhất. Khi kết thúc phiên làm việc, đònh danh này bò thu lại và phân phát lại cho phiên làm việc khác mới tạo ra. Để lấy được đònh danh này, bạn sử dụng phương thức getId như ví dụ 5-1. <%@ page contentType="text/html; charset=UTF-8" %> <html> <head> <title>JSP's Objects</title> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" > <table> <tr><td> Identify ID: <%=session.getId()%> </td></tr> </table> </body> </html> Khi người sử dụng gọi trang JSP này trên trình duyệt giá trò của đònh danh trình bày như hình 4- 1. huukhang@yahoo.com 3-1 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 5-1: Đònh danh của phiên làm việc 1.2. Khởi tạo và gán giá trò cho session Khi cần truyền gt từ trang JSP này sang trang JSP khác, bằng cách khởi tạo dt Session và gán cho chúng thời gian tương ứng, sau đó bạn có thể truy cập vào đốitượng này trong trang JSP khác trong cùng phiên làm việc. Để làm điều này, bạn sử dụng phương thức setValue vói cú pháp như sau: session.putValue(“tên session”,”giá trò”); Ví dụ sau khi cung cấp username/password và nhấn nút Submit từ trang login.jsp như hình 5-2, trang login_authentication.jsp sẽ được triệu gọi. Hình 5-2: Trang login.jsp huukhang@yahoo.com 3-2 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Nếu username là khang và password là 123456 thì trang myaccount.jsp sẽ được triệu gọi. Trước khi triệu gọi trang myaccount.jsp, chúng ta khởi tạo một số session dùng để sử dụng cho phiên làm việc này chẳng hạn userid, username, fullname, email như ví dụ 5-2 (login_authentication.jsp). <% String username=""; String password=""; username= request.getParameter("username"); password= request.getParameter("password"); if (username.equals("khang")){ if(password.equals("123456")){ session.putValue("userid","123"); session.putValue("username",username); session.putValue("fullname","huukhang.com"); session.putValue("email","admin@huukhang.com"); response.sendRedirect("myaccount.jsp"); } else{ /*sai password*/ response.sendRedirect("login.jsp"); } } else{ /*sai user*/ response.sendRedirect("login.jsp"); } %> 1.3. Lấy giá trò từ session Sau khi đăng nhập thành công, những đốitượngsession được tạo ra, bằng cách sử dụng phương thức getValue, bạn có thể lấy giá trò từ các session này như ví dụ 5-3 (myaccount.jsp). huukhang@yahoo.com 3-3 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 5-3: Lấy giá trò từ Session Để lấy giá trò từ các session khai báo trong trang login_authentication.jsp và trình bày trên trang myaccount.jsp, bạn khai báo như ví dụ 5-3. <%@ page contentType="text/html; charset=UTF-8" %> <html> <head> <title>JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table width="100%" border="0" cellspacing="5" cellpadding="5"> <tr><td> <h4>Welcome to JSP</h4> </td></tr> <tr><td><a href="logout.jsp">logout</a></td></tr> <tr><td>userid: =<%=session.getValue("userid")%></td></tr> <tr><td>username: =<%=session.getValue("username")%></td></tr> <tr><td>fullname: =<%=session.getValue("fullname")%></td></tr> <tr><td>email: =<%=session.getValue("email")%> </td></tr> </table> </body> </html> 1.4. Huỷ session Sau khi không sử dụng đốitượng session, bạn cần sử dụng phương thức để huỳ session đó thày vì để chúng tồn tại, bởi ví nếu chúng không sử dụng mà vẫn tồn thì web server vẫn phải quảnl lý. Chẳng hạn, khi chúng ta logout khỏi ứng dụng website thì trang logout.jsp sẽ được tiệu gọi, ba72ng cách sử dụng các phương thức removeValue ví dụ 5-4. huukhang@yahoo.com 3-4 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM <% session.removeValue("userid"); session.removeValue("username"); session.removeValue("fullname"); session.removeValue("email"); response.sendRedirect("login.jsp"); %> Nếu bạn triệu gọi lại trang trang myaccount.jsp trên trình duyệt, thì kết quả trình bày như hình 5- 4. Hình 5-4: Huỷ các session Như hình trên, khi session chưa tạo ra, nếu bạn truy cập đến giá trò của chúng thì giá trò đó là null, chính vì vậy trong một số trang bắt buộc người sử dụng phải đăng nhập rồi mới sử dụng thì bạn cần phải kiểm tra session, nếu session bằng null thì trỏ đến trang login.jsp. Chẳng hạn trong trường hợp này chúng ta có ví dụ 5-5, cho phép sử dụng khi người sử dụng đã đăng nhập, điều này có nghóa là session có tên userid phải tồn tại. <%@ page contentType="text/html; charset=UTF-8" %> <% if (session.getValue("userid")==null) response.sendRedirect("login.jsp"); %> <html> <head> <title>JSP</title> <LINK href="style.css" rel=stylesheet> huukhang@yahoo.com 3-5 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table width="100%" border="0" cellspacing="5" cellpadding="5"> <tr><td> <h4>Welcome to JSP</h4> </td></tr> </table> </body> </html> TÓM TẮT 2. Trong bài học này chúng tôi giới thiệu đến cho các bạn đốitượng chính là session, sau khi có đốitượng này, bạn có thể kết hợp với hai đốitượng request và response để xây dựng chức năng đăng nhập hệ thống. huukhang@yahoo.com 3-6 . WWW.HUUKHANG.COM Bài 5 ĐỐI TƯNG SESSION TRONG JSP Trong bài trước chúng ta sẽ làm quen các đối tượng thường sử dụng trong quá trình thiết kế trang JSP như Request,. Response. Trong bài này chúng ta tiếp tục làm việc với đối tượng Session. Những vấn đề chính sẽ được đề cập trong bài học này 9 Đối tượng Session. 9 Ứng dụng đối