Bài giảng lập trình ứng dụng mạng bài 7 GV võ tấn dũng - Pdf 32

TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM
LẬP TRÌNH ỨNG DỤNG MẠNG

BÀI 7

GIẢNG VIÊN:

1

VÕ TẤN DŨNG

GV: Võ Tấn Dũng

XỬ LÝ BIẾN SESSION


PHẦN 1

2

GV: Võ Tấn Dũng

KHÁI NIỆM SESSION


HTTP là giao thức phi trạng thái
protocol). Khi một lời yêu cầu (request) được tạo ra từ
client thì một kết nối (connection) được mở ra, đáp ứng
(response) gửi từ server xuống client. Sau đó, kết nối
được đóng lại ngay.
y Nếu một transaction (giao tác) thực hiện một chuỗi liên



Khái niệm session
y Như vậy, làm thế nào để server nhớ được các giao tác

xảy ra trước đó của một client bất kỳ? Ta có thể theo
dõi các phiên làm việc (session tracking) của một web
client bằng các cách sau:
y Lưu dữ liệu trong các biến ẩn của form (hidden fields).
y Lưu dữ liệu trong đối tượng session.
y Lưu dữ liệu trong bảng băm (hash table)
y Lưu dữ liệu toàn cục của ứng dụng web trong đối tượng

5

GV: Võ Tấn Dũng

application.


PHẦN 2

6

GV: Võ Tấn Dũng

HIDDEN FORM FIELDS


HIDDEN FORM FELDS

</Table>
<BR> <INPUT type="SUBMIT" value="Login!">
</BODY>
</HTML>

8

GV: Võ Tấn Dũng

</FORM>


9

GV: Võ Tấn Dũng

HIDDEN FORM FELDS


File Login.jsp
<HTML> <BODY bgcolor="#FF0000">
Welcome, <%=userName%>!
<FORM ACTION="BookServlet" METHOD="POST">
<%--Luu username vao bien form an --%>

<P>Please enter your favorite book:
<SELECT name ="book">

response.setContentType("text/html");
PrintWriter out=response.getWriter();
String userName=request.getParameter("username");
String book = request.getParameter("book");
out.println("<HTML>");
out.println("<BODY bgcolor=\"#00FF00\">");
out.println("Well, I see that "+userName+"'s favorite book is "+ book +".");
out.println("</BODY>");
out.println("</HTML>");
}
12

GV: Võ Tấn Dũng

}


y

13

Ví dụ trên cho ta thấy, thông tin hay giá trị của username được nhập vào từ
trang Login.html truyền cho trang Login.jsp. Trang Login.jsp lưu giá trị này
trong biến ẩn của form và chuyển tiếp cho Servlet. Quá trình cứ thế tiếp diễn
cho đến khi nào bạn thôi không còn muốn sử dụng thông tin của username
nữa.

GV: Võ Tấn Dũng

File BookServlet.java

y http://localhost:8080/BookServlet?username=abc&book=Java


SỬ DỤNG HASH TABLE
Form, ta dùng cơ chế bảng băm (Hash Table).
y Khi việc chứng thực username/password thành công,
bạn sinh ra một khóa ngẫu nhiên tương ứng với
username. Khóa này được đặt trong biến ẩn của Form
đồng thời lưu giá trị thực tế của biến username và khóa
trong đối tượng bảng băm trên server.
y Lần kế tiếp người dùng chuyển biến ẩn lên server,
trang JSP hay Servlet của ta không chuyển giá trị của
username mà chuyển giá trị của khóa tương ứng với nó.
Có giá trị khóa, thực hiện dò trong bảng băm ta sẽ tìm
ra được giá trị của biến username.
16

GV: Võ Tấn Dũng

y Để giải quyết tính không bảo mật của các biến ẩn trong


File UserDatatable.java
Đối tượng bảng băm dùng sinh khóa và lưu dữ liệu cho biến được cài đặt thành lớp UserDataTable như sau:

y

/* UserDataTable.java */ package storage; import java.util.*;
public class UserDataTable {
protected static Hashtable userData=new Hashtable();

<HTML> <BODY bgcolor="#FFFFFF">

Welcome, <%=userName%>!
<FORM action="BookServlet2" method="POST">

package storage;
import javax.servlet.*;
import java.io.*;
import java.util.*;
public class NewServlet /*BookServlet2*/ extends GenericServlet
{
public void service(ServletRequest request, ServletResponse response)
throws IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String book=request.getParameter("book");
19

Hashtable userData=storage.UserDataTable.getUserData(userKey);

GV: Võ Tấn Dũng

String userKey=request.getParameter("userkey");


File BookServlet2.java
if(userData==null)
{
out.println("<HTML><BODY>");
out.println("<H1>Sorry</H1>");
out.println("The system is experiencing problems.");
out.println("</BODY></HTML>");
return;
}


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status