SlideShare a Scribd company logo
Qu n lý phiên c a ngả ủ ứ
d ngụ
ThS Văn Thiên Hoàng
M c đíchụ
Trình bày cách x lý thông tin trong m tử ộ
phiên giao ti p trong servlet và gi a cácế ữ
trang web.
Thông tin c n duy trì trong phiênầ
Server c n l u hai lo i thông tin trong m tầ ư ạ ộ
phiên giao ti p.ế
Thông tin v phiên giao ti pề ế
Thông tin c a ng i s d ngủ ườ ử ụ
Http thì không duy trì tr ng thái.ạ
Gi i phápả
G i qua l i client – serverử ạ
S d ng các thành ph n n c a formử ụ ầ ẩ ủ
L u tr thông tin phía client.ư ữ
S d ng Cookieử ụ
L u tr thông tin phiên phía serverư ữ
Session
Th n ph n n c a formầ ầ ẩ ủ
<input type="hidden" name="sessionID" value="...">
L y giá tr bi n n trong form và g i tr l iấ ị ế ẩ ở ả ạ
đ duy trì thông tin phiên trong trang.ể
• String sessionID = getParameter("sessionID");
• out.println("<input
type="hidden" name="sessionID" value=" +
sessionID + "">");
Cookie là gì?
Cookie là m t chu i văn b n d ngộ ỗ ả ạ
name=value.
Cookie đ c l u trên máy client.ượ ư
URL đ c l u trong m i cookie đ browseượ ư ỗ ể
xác đ nh đ a ch server đ g i tr cookie vị ị ỉ ể ở ả ề
phía server.
Thao tác v i Cookiesớ
Java Servlet API cung c p b công c đ thao tác v i cookie.ấ ộ ụ ể ớ
L pớ javax.servlet.http.Cookie bi u di n cookie.ể ễ
Ph ng th c l y giá trươ ứ ấ ị
• getName(), getValue(), getPath(), getDomain(),
getMaxAge(), getSecure()…
Ph ng th c thi t l pươ ứ ế ậ
• setValue(), setPath(), setDomain(), setMaxAge()…
L y t t c các cookie t requestấ ấ ả ừ
• Cookie[] HttpServletRequest.getCookies()
G i cookie v clientở ề
• HttpServletResponse.addCookie(Cookie cookie)
Các b c t o cookieướ ạ
 Ba b c đ t o cookieướ ể ạ
1) T o đ i t ng cookieạ ố ượ
 Cookie cookie = new Cookie (name, value);
1) Thi t l p thu c tính cookieế ậ ộ
 Cookie.setMaxAge (60);
1) g i cookie v clientở ề
 Response.addCookie (cookie)
G i cookie v phía clientở ề
T o đ i t ng Cookieạ ố ượ
Cookie c = new Cookie("userID", "a1234");
Thi t l p th i gian s ng c a cookie trên đĩa c ng c aế ậ ờ ố ủ ứ ủ
client (đ n v giây).ơ ị
c.setMaxAge(60*60*24*7); // một tuần
Đ t cookie vào đ i t ng HTTP response đ g i vặ ố ượ ể ở ề
client.
response.addCookie(c);
Ví d :ụ
<html>
<head><title>Insert your Name</title></head>
<body> <h1>What is your name?</h1>
<form action="welcomeback" method="get">
<p>
<input type="text" name="username" />
<input type="submit" />
</p>
</form>
</body>
</html>
getname.html
Ví dụ
public class WelcomeBack extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String user = req.getParameter("username");
if (user == null) { // Find the "username" cookie
Cookie[] cookies = req.getCookies();
for (int i = 0; cookies != null && i < cookies.length; ++i) {
if (cookies[i].getName().equals("username"))
user = cookies[i].getValue();
}
} else res.addCookie(new Cookie("username", user));
WelcomeBack.java
Ví d (ti p theo)ụ ế
if (user == null) // No parameter and no cookie
res.sendRedirect("getname.html");
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<html><body><h1>Welcome Back " + user
+ "</h1></body></html>");
}
} WelcomeBack.java
Session là gì?
Gi i pháp đ duy trì d li u g i qua nhi u trangả ể ữ ệ ở ề
Server.ở
Đ l u thông tin, Session t o ra c ch để ư ạ ơ ế ể
qu n lý cookie cho t ng phiên v i m t id đả ừ ớ ộ ể
nh n d ng ho c s d ng URL.ậ ạ ặ ử ụ
Session Cookies
Web
browser 1
Web server
request request
ServletServlet
id1
response
put cookie id1
response
Create Session
id1
Session Cookies
Web
browser 2
Web server
request request
ServletServlet
id1
response
put cookie id2
response
Create Session
id2
id2
Session Cookies
Web server
request
ServletServlet
id1
response response
request
Cookie: id1
id2
Session
read/write
Web
browser 1
id1
Session Cookies
Web server
request
ServletServlet
id1
response response
request
Cookie: id2
id2
Session
read/write
Web
browser 2
id2
sessionId list
Truy c p d li u Sessionậ ữ ệ
Đ i t ng session là th hi n c a l pố ượ ể ệ ủ ớ HttpSession.
S d ng ph ng th cử ụ ươ ứ getSesssion() ho cặ
getSession(true) đ l y đ i t ngể ấ ố ượ HttpSession hi nệ
t i ho c t o ra nó n u không có.ạ ặ ạ ế
S d ngử ụ getSession(false) n u không mu n t o raế ố ạ
session m i khi session không t n t i.ớ ồ ạ
Các ph ng th c c a HttpSessionươ ứ ủ
D li u Session đ c truy c p b ng b ng băm.ữ ệ ượ ậ ằ ả
- setAttribute(String name,Object value)
- Object getAttribute(String name)
Các ph ng th c khác:ươ ứ
- removeAttribute, getAttributeNames
- isNew, invalidate, getId
- getCreationTime, getLastAccessedTime
- getMaxInactiveInterval, setMaxInactiveInterval
Ví d : Shopping Cart c b nụ ơ ả
Ví d v m t shopping cart tr c tuy n cụ ề ộ ự ế ơ
b n g m Servletả ồ
- Store.java: trang chính
- ShoppingCart.java: x lý s ki nử ự ệ
Ví d : Online-Storeụ
public class Store extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse
res) throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<html><head>"
+ "<link rel="stylesheet" type="text/css""
+ " href="cartstyle.css"/></head><body>");
HttpSession session = req.getSession();
if (session.getAttribute("item-list") == null) {
out.println("<h1>Hello new visitor!</h1>");
session.setAttribute("item-list", new LinkedList());
}
List itemList = (List) session.getAttribute("item-list");
Store.java
Ví d : Online-Storeụ
out.println("<h2>Your Shopping Cart:</h2><ol>");
for (Iterator it = itemList.iterator(); it.hasNext();)
out.println("<li>" + it.next() + "</li>");
out.println("</ol>");
out.println("<form method="post" action="cart">");
out.println("<p>Add item:<input name="item" type="text"/>"
+ "<input type="submit" value="send"/></p>"
+ "<p><input type="submit" value="empty cart" "
+ "name="clear"/></p></form>");
out.println("</body></html>");
}
} Store.java
public class ShoppingCart extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse
res) throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
List items = (List) req.getSession().getAttribute("item-list");
out.println("<html><head><link rel="stylesheet""
+ " type="text/css" href="cartstyle.css"/>"
+ "</head><body>");
ShoppingCart.java
Ví d : Online-Storeụ
if (req.getParameter("clear") != null) {
items.clear();
out.println("<h2>Your Shopping Cart is Empty!</h2>");
} else {
String item = req.getParameter("item");
items.add(item);
out.println("<h2>The item <i>" + item +
"</i> was added to your cart.</h2>");
}
out.println("<h2><a href="store">Return to the store</a></h2>");
out.println("</body></html>");
}} ShoppingCart.java
Ví d : Online-Storeụ
Vi t vào URLế
Web
browser
Web server
request request
ServletServlet
id1
response response
Create Session
>HTML<…
>A HREF=“servletURL;sessID=id1”<
…>/HTML<
URL Rewriting
Web server
request
ServletServlet
id1
response response
request
)no cookie(
id2
Session
read/write
Web
browser 1
GET servletURL;sessID=id1 HTTP/1.0
>HTML<…
>A HREF=“servletURL;sessID=id1”<
…>/HTML<
Vi t l i Servlet URLế ạ
S d ng các ph ng th c đ vi t vào URLử ụ ươ ứ ể ế
- String encodeURL(String url)
• S d ng cho HTML hyperlinkử ụ
- String encodeRedirectURL(String url)
• S d ng choử ụ HTTP redirection
Các ph ng th c này xác đ nh session IDươ ứ ị
c n đ c mã hóa trong URL.ầ ượ
N u truy v n có cookie thìế ấ url đ c g i vượ ở ề
bình th ng.ườ
Ch ng trình Storeươ
Gi s ch ng trình store ch y trên client không h trả ử ươ ạ ỗ ợ
cookie.
Đ gi i quy t, vi c vi t vào URL nên đ c s d ng.ể ả ế ệ ế ượ ử ụ
Store.java
"<form method="post" action="" + res.encodeURL("cart") + "">“
ShoppingCart.java
“<a href="" + res.encodeURL("store") + "">"
Session Listener
session listener đ c s d ng đ ph n ngượ ử ụ ể ả ứ
các s ki n liên quan đ n đ n session.ự ệ ế ế
session m i đ c t o.ớ ượ ạ
M t session b h y.ộ ị ủ
Đ s d ng đ c session listener, cài đ tể ử ụ ượ ặ
giao di nệ javax.servlet.http.HttpSessionListener.
Ví d : Session-Listenerụ
public class CartInitializer implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent se) {
List itemList = new LinkedList();
se.getSession().setAttribute("item-list",itemList);
itemList.add("A Free Apple");
}
public void sessionDestroyed(HttpSessionEvent se) {}
} CartInitializer.java
<listener>
<listener-class>CartInitializer</listener-class>
</listener> web.xml
Forwarding và Redirection
M c đ nh,ặ ị SendRedirect không đ m b oả ả
tham s c a request đ c g i lên t client.ố ủ ượ ớ ừ
SendRedirect k t thúc khi m t URL khácế ộ
đ c n p client.ượ ạ ở
Forwarding cho phép g i toàn b d li uở ộ ữ ệ
c a request t i trang khác. Đ forward sủ ớ ể ử
d ngụ request Dispatcher.
The Request Dispatcher
Request Dispather
Đ i t ngố ượ RequestDispatcher đ c s d ngượ ử ụ
đ g i m t client request t i m t trang b tể ở ộ ớ ộ ấ
kỳ (servlet, JSP ho c HTML) server.ặ ở
Đ l y đ i t ng g i request t i ngu nể ấ ố ượ ở ớ ồ x, sử
d ng:ụ
getServletContext().getRequestDispatcher("x")
Các ph ng th c c a đ i t ngươ ứ ủ ố ượ
Request Dispatcher
void forward(ServletRequest request,
ServletResponse response)
Chuy n request t servlet t i ngu n khác.ể ừ ớ ồ
void include(ServletRequest request,
ServletResponse response)
Bao g m c n i d ng c a response.ồ ả ộ ụ ủ
Chuy n d li uể ữ ệ
3 cách đ chuy n tham s cho Servlet ho c JSPể ể ố ặ
D li u đ c dùng ch cho request này:ữ ệ ượ ỉ
request.setAttribute("key", value);
D li u đ c s d ng cho client (và c cho cácữ ệ ượ ử ụ ả
request v sau)ề
session.setAttribute("key", value);
D li u s đ c dùng trong t ng lai c a m i client.ữ ệ ẽ ượ ươ ủ ỗ
context.setAttribute("key", value);
Ví dụ
Servlet JokesAndImages cho phep ng i s d ngườ ử ụ
ch n joke ng u nhiên ho c nh ng u nhiên.ọ ẫ ặ ả ẫ
Server có 5 nh trong th m cả ư ụ images/ và 5 joke
(txt file) trong th m cư ụ jokes/
Các yêu c u r ng s đ c g i t i t p tin HTML nóầ ỗ ẽ ượ ở ớ ậ
cho phép ng i d ng ch n nh ho c joke.ườ ụ ọ ả ặ
Request v i joke đ c g i t i trang servletớ ượ ở ớ Jokes
Requests v i image đ c g i t i m t nh ng uớ ượ ở ớ ộ ả ẫ
nhiên trong th m cư ụ images/
Joke và Image
<html>
<head><title>Images and Jokes</title></head>
<body>
<h1>Please Select:</h1>
<form method="post" action="JokesAndImages">
<h2>
<input type="submit" name="joke"
value="A Joke" />
<input type="submit" name="image"
value="An Image" />
</h2>
</form>
</body></html> imagesJokesOptions.html
Joke và Image
public class JokesAndImages extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
int randomNum = 1 + Math.abs((new Random()).nextInt() % 5);
if (req.getParameter("joke") != null) {
req.setAttribute("jokeNumber", new Integer(randomNum));
getServletContext().getRequestDispatcher("/Jokes").forward(req,res);
} else if (req.getParameter("image") != null) {
getServletContext().getRequestDispatcher("/images/image" +
randomNum + ".gif").forward(req, res);
} else getServletContext().getRequestDispatcher
("/imagesJokesOptions.html"). forward(req,res);
}
public void doGet ... }} JokesAndImages.java
Joke và Image
public class Jokes extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<html><body><h1>A Joke</h1><pre>");
int jokeNum = ((Integer) req.getAttribute("jokeNumber")).intValue();
getServletContext().getRequestDispatcher
("/jokes/joke" + jokeNum + ".txt").include(req, res);
out.println("n</pre>");
out.println("<a href="" + req.getRequestURL() + "">Back</a>");
out.println("</body></html>");
}} Jokes.java
Câu h iỏ

More Related Content

What's hot

Rename domain controller server 2012
Rename domain controller server 2012Rename domain controller server 2012
Rename domain controller server 2012
laonap166
 
Mô hình 3 lớp trong C#
Mô hình 3 lớp trong C#Mô hình 3 lớp trong C#
Mô hình 3 lớp trong C#
Trung Thành Nguyễn
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Nguyễn Danh Thanh
 
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phêbáo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê
thuhuynhphonegap
 
Hướng dẫn Google form
Hướng dẫn Google formHướng dẫn Google form
Mô hình hóa Use Case 01
Mô hình hóa Use Case 01Mô hình hóa Use Case 01
Mô hình hóa Use Case 01
vanphong20082002
 
Mô Hình MVC 3.0
Mô Hình MVC 3.0Mô Hình MVC 3.0
Mô Hình MVC 3.0
David Nguyen
 
Lập trình Java GUI
Lập trình Java GUILập trình Java GUI
Lập trình Java GUIHa Bogay
 
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...hoainhan1501
 
UML mô hình khái niệm
UML mô hình khái niệmUML mô hình khái niệm
UML mô hình khái niệm
Nguyễn Phúc
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLDang Tuan
 
MSDN - ASP.NET MVC
MSDN - ASP.NET MVCMSDN - ASP.NET MVC
MSDN - ASP.NET MVC
Maarten Balliauw
 
Uml diagram type
Uml diagram typeUml diagram type
Uml diagram type
Minhtuan Chau
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
leemindinh
 
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTITBài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Popping Khiem - Funky Dance Crew PTIT
 
Đề tài: Tìm hiểu SQLite và xây dựng chương trình ứng dụng, 9đ
Đề tài: Tìm hiểu SQLite và xây dựng chương trình ứng dụng, 9đĐề tài: Tìm hiểu SQLite và xây dựng chương trình ứng dụng, 9đ
Đề tài: Tìm hiểu SQLite và xây dựng chương trình ứng dụng, 9đ
Dịch vụ viết bài trọn gói ZALO 0917193864
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
Thùy Linh
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#
An Nguyen
 

What's hot (20)

Rename domain controller server 2012
Rename domain controller server 2012Rename domain controller server 2012
Rename domain controller server 2012
 
Mô hình 3 lớp trong C#
Mô hình 3 lớp trong C#Mô hình 3 lớp trong C#
Mô hình 3 lớp trong C#
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
 
Bai tap quan_ly_chuyen_bay
Bai tap quan_ly_chuyen_bayBai tap quan_ly_chuyen_bay
Bai tap quan_ly_chuyen_bay
 
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phêbáo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê
 
Hướng dẫn Google form
Hướng dẫn Google formHướng dẫn Google form
Hướng dẫn Google form
 
Mô hình hóa Use Case 01
Mô hình hóa Use Case 01Mô hình hóa Use Case 01
Mô hình hóa Use Case 01
 
Mô Hình MVC 3.0
Mô Hình MVC 3.0Mô Hình MVC 3.0
Mô Hình MVC 3.0
 
Lập trình Java GUI
Lập trình Java GUILập trình Java GUI
Lập trình Java GUI
 
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
Báo Cáo Cuối Ký Thực Tập Tốt Nghiệp Xậy Dựng Web Bán Hàng Trực Tuyến bằng Ope...
 
UML mô hình khái niệm
UML mô hình khái niệmUML mô hình khái niệm
UML mô hình khái niệm
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
 
Mau bao cao project 1
Mau bao cao project 1Mau bao cao project 1
Mau bao cao project 1
 
MSDN - ASP.NET MVC
MSDN - ASP.NET MVCMSDN - ASP.NET MVC
MSDN - ASP.NET MVC
 
Uml diagram type
Uml diagram typeUml diagram type
Uml diagram type
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
 
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTITBài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
 
Đề tài: Tìm hiểu SQLite và xây dựng chương trình ứng dụng, 9đ
Đề tài: Tìm hiểu SQLite và xây dựng chương trình ứng dụng, 9đĐề tài: Tìm hiểu SQLite và xây dựng chương trình ứng dụng, 9đ
Đề tài: Tìm hiểu SQLite và xây dựng chương trình ứng dụng, 9đ
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#
 

Viewers also liked

Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng CaoBài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bài 1: Web Cơ Bản - Lập Trình Mạng Nâng Cao
Bài 1: Web Cơ Bản - Lập Trình Mạng Nâng CaoBài 1: Web Cơ Bản - Lập Trình Mạng Nâng Cao
Bài 1: Web Cơ Bản - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Security Bootcamp 2013 - Lap trinh web an toan
Security Bootcamp 2013 - Lap trinh web an toanSecurity Bootcamp 2013 - Lap trinh web an toan
Security Bootcamp 2013 - Lap trinh web an toanSecurity Bootcamp
 
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajaxSức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
Tuyet Tam
 
Bài 12: JSF-2 - Lập Trình Mạng Nâng Cao
Bài 12:  JSF-2 - Lập Trình Mạng Nâng CaoBài 12:  JSF-2 - Lập Trình Mạng Nâng Cao
Bài 12: JSF-2 - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bài 10: Custom Tag - Lập Trình Mạng Nâng Cao
Bài 10: Custom Tag - Lập Trình Mạng Nâng CaoBài 10: Custom Tag - Lập Trình Mạng Nâng Cao
Bài 10: Custom Tag - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bài 11: JSF-1 - Lập Trình Mạng Nâng Cao
Bài 11:  JSF-1 - Lập Trình Mạng Nâng CaoBài 11:  JSF-1 - Lập Trình Mạng Nâng Cao
Bài 11: JSF-1 - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
[Cntt] bài giảng java khtn hcm
[Cntt] bài giảng java   khtn hcm[Cntt] bài giảng java   khtn hcm
[Cntt] bài giảng java khtn hcm
Hong Phuoc Nguyen
 
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng CaoBài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bài 2: J2EE - Lập Trình Mạng Nâng Cao
Bài 2: J2EE - Lập Trình Mạng Nâng CaoBài 2: J2EE - Lập Trình Mạng Nâng Cao
Bài 2: J2EE - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Vận dụng kiến thức lập trình web vào môi trường thực tế
Vận dụng kiến thức lập trình web vào môi trường thực tếVận dụng kiến thức lập trình web vào môi trường thực tế
Vận dụng kiến thức lập trình web vào môi trường thực tế
VKhang Yang
 
Sistena Nervioso Autonomo
Sistena Nervioso AutonomoSistena Nervioso Autonomo
Sistena Nervioso Autonomojbcastillos
 
PhD Thesis of Syed Rizwan Zamir on Syedul Ulama Syed Ali Naqi Naqvi t.s.
PhD Thesis of Syed Rizwan Zamir on Syedul Ulama Syed Ali Naqi Naqvi t.s.PhD Thesis of Syed Rizwan Zamir on Syedul Ulama Syed Ali Naqi Naqvi t.s.
PhD Thesis of Syed Rizwan Zamir on Syedul Ulama Syed Ali Naqi Naqvi t.s.
Jamal Mirza
 
Inception Meeting Documentation Report
Inception Meeting Documentation ReportInception Meeting Documentation Report
Inception Meeting Documentation ReportiBoP Asia
 
Ifric14
Ifric14Ifric14
Ifric14
RS NAVARRO
 
Lựa chọn giải pháp CRM đúng
Lựa chọn giải pháp CRM đúngLựa chọn giải pháp CRM đúng
Lựa chọn giải pháp CRM đúng
Võ Thái Lâm
 
Kamus populer keuangan syariah pkes
Kamus populer keuangan syariah pkesKamus populer keuangan syariah pkes
Kamus populer keuangan syariah pkesFitri Lely
 
Interview answers skills
Interview answers skillsInterview answers skills
Interview answers skills
Haiyen Nguyen
 
Philex Mining Corporation
Philex Mining CorporationPhilex Mining Corporation
Philex Mining Corporation
No to mining in Palawan
 

Viewers also liked (20)

Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng CaoBài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
 
Bài 1: Web Cơ Bản - Lập Trình Mạng Nâng Cao
Bài 1: Web Cơ Bản - Lập Trình Mạng Nâng CaoBài 1: Web Cơ Bản - Lập Trình Mạng Nâng Cao
Bài 1: Web Cơ Bản - Lập Trình Mạng Nâng Cao
 
Security Bootcamp 2013 - Lap trinh web an toan
Security Bootcamp 2013 - Lap trinh web an toanSecurity Bootcamp 2013 - Lap trinh web an toan
Security Bootcamp 2013 - Lap trinh web an toan
 
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajaxSức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
 
Bài 12: JSF-2 - Lập Trình Mạng Nâng Cao
Bài 12:  JSF-2 - Lập Trình Mạng Nâng CaoBài 12:  JSF-2 - Lập Trình Mạng Nâng Cao
Bài 12: JSF-2 - Lập Trình Mạng Nâng Cao
 
Bài 10: Custom Tag - Lập Trình Mạng Nâng Cao
Bài 10: Custom Tag - Lập Trình Mạng Nâng CaoBài 10: Custom Tag - Lập Trình Mạng Nâng Cao
Bài 10: Custom Tag - Lập Trình Mạng Nâng Cao
 
Bài 11: JSF-1 - Lập Trình Mạng Nâng Cao
Bài 11:  JSF-1 - Lập Trình Mạng Nâng CaoBài 11:  JSF-1 - Lập Trình Mạng Nâng Cao
Bài 11: JSF-1 - Lập Trình Mạng Nâng Cao
 
[Cntt] bài giảng java khtn hcm
[Cntt] bài giảng java   khtn hcm[Cntt] bài giảng java   khtn hcm
[Cntt] bài giảng java khtn hcm
 
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng CaoBài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
 
Bài 2: J2EE - Lập Trình Mạng Nâng Cao
Bài 2: J2EE - Lập Trình Mạng Nâng CaoBài 2: J2EE - Lập Trình Mạng Nâng Cao
Bài 2: J2EE - Lập Trình Mạng Nâng Cao
 
Vận dụng kiến thức lập trình web vào môi trường thực tế
Vận dụng kiến thức lập trình web vào môi trường thực tếVận dụng kiến thức lập trình web vào môi trường thực tế
Vận dụng kiến thức lập trình web vào môi trường thực tế
 
Sistena Nervioso Autonomo
Sistena Nervioso AutonomoSistena Nervioso Autonomo
Sistena Nervioso Autonomo
 
PhD Thesis of Syed Rizwan Zamir on Syedul Ulama Syed Ali Naqi Naqvi t.s.
PhD Thesis of Syed Rizwan Zamir on Syedul Ulama Syed Ali Naqi Naqvi t.s.PhD Thesis of Syed Rizwan Zamir on Syedul Ulama Syed Ali Naqi Naqvi t.s.
PhD Thesis of Syed Rizwan Zamir on Syedul Ulama Syed Ali Naqi Naqvi t.s.
 
Inception Meeting Documentation Report
Inception Meeting Documentation ReportInception Meeting Documentation Report
Inception Meeting Documentation Report
 
Ifric14
Ifric14Ifric14
Ifric14
 
Lựa chọn giải pháp CRM đúng
Lựa chọn giải pháp CRM đúngLựa chọn giải pháp CRM đúng
Lựa chọn giải pháp CRM đúng
 
Kamus populer keuangan syariah pkes
Kamus populer keuangan syariah pkesKamus populer keuangan syariah pkes
Kamus populer keuangan syariah pkes
 
Interview answers skills
Interview answers skillsInterview answers skills
Interview answers skills
 
Philex Mining Corporation
Philex Mining CorporationPhilex Mining Corporation
Philex Mining Corporation
 
Agham Feed-in Tariff system Briefer
Agham Feed-in Tariff system BrieferAgham Feed-in Tariff system Briefer
Agham Feed-in Tariff system Briefer
 

Similar to Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao

chuong_02.ppt
chuong_02.pptchuong_02.ppt
chuong_02.ppt
ThuyKhoaCNTTNguyenTh
 
Lập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biếnLập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biến
Son Nguyen
 
Idoc.vn giao trinh-aspnet-nang-cao
Idoc.vn giao trinh-aspnet-nang-caoIdoc.vn giao trinh-aspnet-nang-cao
Idoc.vn giao trinh-aspnet-nang-cao
Tèo Ngô
 
Net06 asp.net applications & state management
Net06 asp.net applications & state managementNet06 asp.net applications & state management
Net06 asp.net applications & state management
hoangnguyentien
 
PHP.pdf
PHP.pdfPHP.pdf
PHP.pdf
TinPh6
 
Ajax control toolkit
Ajax control toolkitAjax control toolkit
Ajax control toolkitNguyen Huy
 
Bai3 basic servlets_956
Bai3 basic servlets_956Bai3 basic servlets_956
Bai3 basic servlets_956
Ham Chơi
 
Ssl it-slideshares.blogspot.com
Ssl it-slideshares.blogspot.comSsl it-slideshares.blogspot.com
Ssl it-slideshares.blogspot.com
phanleson
 
Asp
AspAsp
Asp
thinhtu
 
Javascript tong-hop a-z
Javascript tong-hop a-zJavascript tong-hop a-z
Javascript tong-hop a-z
Manhh Nguyễn
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHP
elearninglabvn
 
Tu hoc javascript
Tu hoc javascriptTu hoc javascript
Tu hoc javascript
zingoncmu2
 
Tự học JavaScript
Tự học JavaScriptTự học JavaScript
Tự học JavaScript
Ánh Nguyễn
 
Bat dau hoc lap trinh asp
Bat dau hoc lap trinh aspBat dau hoc lap trinh asp
Bat dau hoc lap trinh asp
Lam To
 
Giao trinh java script
Giao trinh java scriptGiao trinh java script
Giao trinh java script
Toàn Trần Mạnh
 

Similar to Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao (20)

Ung dun web chuong 2
Ung dun web  chuong 2Ung dun web  chuong 2
Ung dun web chuong 2
 
Ch06
Ch06Ch06
Ch06
 
chuong_02.ppt
chuong_02.pptchuong_02.ppt
chuong_02.ppt
 
Lập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biếnLập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biến
 
Php day4
Php day4Php day4
Php day4
 
Ung dung web chuong 5
Ung dung web  chuong 5Ung dung web  chuong 5
Ung dung web chuong 5
 
Idoc.vn giao trinh-aspnet-nang-cao
Idoc.vn giao trinh-aspnet-nang-caoIdoc.vn giao trinh-aspnet-nang-cao
Idoc.vn giao trinh-aspnet-nang-cao
 
Ung dung web chuong 4
Ung dung web  chuong 4Ung dung web  chuong 4
Ung dung web chuong 4
 
Net06 asp.net applications & state management
Net06 asp.net applications & state managementNet06 asp.net applications & state management
Net06 asp.net applications & state management
 
PHP.pdf
PHP.pdfPHP.pdf
PHP.pdf
 
Ajax control toolkit
Ajax control toolkitAjax control toolkit
Ajax control toolkit
 
Bai3 basic servlets_956
Bai3 basic servlets_956Bai3 basic servlets_956
Bai3 basic servlets_956
 
Ssl it-slideshares.blogspot.com
Ssl it-slideshares.blogspot.comSsl it-slideshares.blogspot.com
Ssl it-slideshares.blogspot.com
 
Asp
AspAsp
Asp
 
Javascript tong-hop a-z
Javascript tong-hop a-zJavascript tong-hop a-z
Javascript tong-hop a-z
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHP
 
Tu hoc javascript
Tu hoc javascriptTu hoc javascript
Tu hoc javascript
 
Tự học JavaScript
Tự học JavaScriptTự học JavaScript
Tự học JavaScript
 
Bat dau hoc lap trinh asp
Bat dau hoc lap trinh aspBat dau hoc lap trinh asp
Bat dau hoc lap trinh asp
 
Giao trinh java script
Giao trinh java scriptGiao trinh java script
Giao trinh java script
 

Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao

  • 1. Qu n lý phiên c a ngả ủ ứ d ngụ ThS Văn Thiên Hoàng
  • 2. M c đíchụ Trình bày cách x lý thông tin trong m tử ộ phiên giao ti p trong servlet và gi a cácế ữ trang web.
  • 3. Thông tin c n duy trì trong phiênầ Server c n l u hai lo i thông tin trong m tầ ư ạ ộ phiên giao ti p.ế Thông tin v phiên giao ti pề ế Thông tin c a ng i s d ngủ ườ ử ụ Http thì không duy trì tr ng thái.ạ
  • 4. Gi i phápả G i qua l i client – serverử ạ S d ng các thành ph n n c a formử ụ ầ ẩ ủ L u tr thông tin phía client.ư ữ S d ng Cookieử ụ L u tr thông tin phiên phía serverư ữ Session
  • 5. Th n ph n n c a formầ ầ ẩ ủ <input type="hidden" name="sessionID" value="..."> L y giá tr bi n n trong form và g i tr l iấ ị ế ẩ ở ả ạ đ duy trì thông tin phiên trong trang.ể • String sessionID = getParameter("sessionID"); • out.println("<input type="hidden" name="sessionID" value=" + sessionID + "">");
  • 6. Cookie là gì? Cookie là m t chu i văn b n d ngộ ỗ ả ạ name=value. Cookie đ c l u trên máy client.ượ ư URL đ c l u trong m i cookie đ browseượ ư ỗ ể xác đ nh đ a ch server đ g i tr cookie vị ị ỉ ể ở ả ề phía server.
  • 7. Thao tác v i Cookiesớ Java Servlet API cung c p b công c đ thao tác v i cookie.ấ ộ ụ ể ớ L pớ javax.servlet.http.Cookie bi u di n cookie.ể ễ Ph ng th c l y giá trươ ứ ấ ị • getName(), getValue(), getPath(), getDomain(), getMaxAge(), getSecure()… Ph ng th c thi t l pươ ứ ế ậ • setValue(), setPath(), setDomain(), setMaxAge()… L y t t c các cookie t requestấ ấ ả ừ • Cookie[] HttpServletRequest.getCookies() G i cookie v clientở ề • HttpServletResponse.addCookie(Cookie cookie)
  • 8. Các b c t o cookieướ ạ  Ba b c đ t o cookieướ ể ạ 1) T o đ i t ng cookieạ ố ượ  Cookie cookie = new Cookie (name, value); 1) Thi t l p thu c tính cookieế ậ ộ  Cookie.setMaxAge (60); 1) g i cookie v clientở ề  Response.addCookie (cookie)
  • 9. G i cookie v phía clientở ề T o đ i t ng Cookieạ ố ượ Cookie c = new Cookie("userID", "a1234"); Thi t l p th i gian s ng c a cookie trên đĩa c ng c aế ậ ờ ố ủ ứ ủ client (đ n v giây).ơ ị c.setMaxAge(60*60*24*7); // một tuần Đ t cookie vào đ i t ng HTTP response đ g i vặ ố ượ ể ở ề client. response.addCookie(c);
  • 10. Ví d :ụ <html> <head><title>Insert your Name</title></head> <body> <h1>What is your name?</h1> <form action="welcomeback" method="get"> <p> <input type="text" name="username" /> <input type="submit" /> </p> </form> </body> </html> getname.html
  • 11. Ví dụ public class WelcomeBack extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String user = req.getParameter("username"); if (user == null) { // Find the "username" cookie Cookie[] cookies = req.getCookies(); for (int i = 0; cookies != null && i < cookies.length; ++i) { if (cookies[i].getName().equals("username")) user = cookies[i].getValue(); } } else res.addCookie(new Cookie("username", user)); WelcomeBack.java
  • 12. Ví d (ti p theo)ụ ế if (user == null) // No parameter and no cookie res.sendRedirect("getname.html"); res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<html><body><h1>Welcome Back " + user + "</h1></body></html>"); } } WelcomeBack.java
  • 13. Session là gì? Gi i pháp đ duy trì d li u g i qua nhi u trangả ể ữ ệ ở ề Server.ở Đ l u thông tin, Session t o ra c ch để ư ạ ơ ế ể qu n lý cookie cho t ng phiên v i m t id đả ừ ớ ộ ể nh n d ng ho c s d ng URL.ậ ạ ặ ử ụ
  • 14. Session Cookies Web browser 1 Web server request request ServletServlet id1 response put cookie id1 response Create Session id1
  • 15. Session Cookies Web browser 2 Web server request request ServletServlet id1 response put cookie id2 response Create Session id2 id2
  • 16. Session Cookies Web server request ServletServlet id1 response response request Cookie: id1 id2 Session read/write Web browser 1 id1
  • 17. Session Cookies Web server request ServletServlet id1 response response request Cookie: id2 id2 Session read/write Web browser 2 id2
  • 19. Truy c p d li u Sessionậ ữ ệ Đ i t ng session là th hi n c a l pố ượ ể ệ ủ ớ HttpSession. S d ng ph ng th cử ụ ươ ứ getSesssion() ho cặ getSession(true) đ l y đ i t ngể ấ ố ượ HttpSession hi nệ t i ho c t o ra nó n u không có.ạ ặ ạ ế S d ngử ụ getSession(false) n u không mu n t o raế ố ạ session m i khi session không t n t i.ớ ồ ạ
  • 20. Các ph ng th c c a HttpSessionươ ứ ủ D li u Session đ c truy c p b ng b ng băm.ữ ệ ượ ậ ằ ả - setAttribute(String name,Object value) - Object getAttribute(String name) Các ph ng th c khác:ươ ứ - removeAttribute, getAttributeNames - isNew, invalidate, getId - getCreationTime, getLastAccessedTime - getMaxInactiveInterval, setMaxInactiveInterval
  • 21. Ví d : Shopping Cart c b nụ ơ ả Ví d v m t shopping cart tr c tuy n cụ ề ộ ự ế ơ b n g m Servletả ồ - Store.java: trang chính - ShoppingCart.java: x lý s ki nử ự ệ
  • 22. Ví d : Online-Storeụ public class Store extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<html><head>" + "<link rel="stylesheet" type="text/css"" + " href="cartstyle.css"/></head><body>"); HttpSession session = req.getSession(); if (session.getAttribute("item-list") == null) { out.println("<h1>Hello new visitor!</h1>"); session.setAttribute("item-list", new LinkedList()); } List itemList = (List) session.getAttribute("item-list"); Store.java
  • 23. Ví d : Online-Storeụ out.println("<h2>Your Shopping Cart:</h2><ol>"); for (Iterator it = itemList.iterator(); it.hasNext();) out.println("<li>" + it.next() + "</li>"); out.println("</ol>"); out.println("<form method="post" action="cart">"); out.println("<p>Add item:<input name="item" type="text"/>" + "<input type="submit" value="send"/></p>" + "<p><input type="submit" value="empty cart" " + "name="clear"/></p></form>"); out.println("</body></html>"); } } Store.java
  • 24. public class ShoppingCart extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); List items = (List) req.getSession().getAttribute("item-list"); out.println("<html><head><link rel="stylesheet"" + " type="text/css" href="cartstyle.css"/>" + "</head><body>"); ShoppingCart.java Ví d : Online-Storeụ
  • 25. if (req.getParameter("clear") != null) { items.clear(); out.println("<h2>Your Shopping Cart is Empty!</h2>"); } else { String item = req.getParameter("item"); items.add(item); out.println("<h2>The item <i>" + item + "</i> was added to your cart.</h2>"); } out.println("<h2><a href="store">Return to the store</a></h2>"); out.println("</body></html>"); }} ShoppingCart.java Ví d : Online-Storeụ
  • 26. Vi t vào URLế Web browser Web server request request ServletServlet id1 response response Create Session >HTML<… >A HREF=“servletURL;sessID=id1”< …>/HTML<
  • 27. URL Rewriting Web server request ServletServlet id1 response response request )no cookie( id2 Session read/write Web browser 1 GET servletURL;sessID=id1 HTTP/1.0 >HTML<… >A HREF=“servletURL;sessID=id1”< …>/HTML<
  • 28. Vi t l i Servlet URLế ạ S d ng các ph ng th c đ vi t vào URLử ụ ươ ứ ể ế - String encodeURL(String url) • S d ng cho HTML hyperlinkử ụ - String encodeRedirectURL(String url) • S d ng choử ụ HTTP redirection Các ph ng th c này xác đ nh session IDươ ứ ị c n đ c mã hóa trong URL.ầ ượ N u truy v n có cookie thìế ấ url đ c g i vượ ở ề bình th ng.ườ
  • 29. Ch ng trình Storeươ Gi s ch ng trình store ch y trên client không h trả ử ươ ạ ỗ ợ cookie. Đ gi i quy t, vi c vi t vào URL nên đ c s d ng.ể ả ế ệ ế ượ ử ụ Store.java "<form method="post" action="" + res.encodeURL("cart") + "">“ ShoppingCart.java “<a href="" + res.encodeURL("store") + "">"
  • 30. Session Listener session listener đ c s d ng đ ph n ngượ ử ụ ể ả ứ các s ki n liên quan đ n đ n session.ự ệ ế ế session m i đ c t o.ớ ượ ạ M t session b h y.ộ ị ủ Đ s d ng đ c session listener, cài đ tể ử ụ ượ ặ giao di nệ javax.servlet.http.HttpSessionListener.
  • 31. Ví d : Session-Listenerụ public class CartInitializer implements HttpSessionListener { public void sessionCreated(HttpSessionEvent se) { List itemList = new LinkedList(); se.getSession().setAttribute("item-list",itemList); itemList.add("A Free Apple"); } public void sessionDestroyed(HttpSessionEvent se) {} } CartInitializer.java <listener> <listener-class>CartInitializer</listener-class> </listener> web.xml
  • 32. Forwarding và Redirection M c đ nh,ặ ị SendRedirect không đ m b oả ả tham s c a request đ c g i lên t client.ố ủ ượ ớ ừ SendRedirect k t thúc khi m t URL khácế ộ đ c n p client.ượ ạ ở Forwarding cho phép g i toàn b d li uở ộ ữ ệ c a request t i trang khác. Đ forward sủ ớ ể ử d ngụ request Dispatcher.
  • 34. Request Dispather Đ i t ngố ượ RequestDispatcher đ c s d ngượ ử ụ đ g i m t client request t i m t trang b tể ở ộ ớ ộ ấ kỳ (servlet, JSP ho c HTML) server.ặ ở Đ l y đ i t ng g i request t i ngu nể ấ ố ượ ở ớ ồ x, sử d ng:ụ getServletContext().getRequestDispatcher("x")
  • 35. Các ph ng th c c a đ i t ngươ ứ ủ ố ượ Request Dispatcher void forward(ServletRequest request, ServletResponse response) Chuy n request t servlet t i ngu n khác.ể ừ ớ ồ void include(ServletRequest request, ServletResponse response) Bao g m c n i d ng c a response.ồ ả ộ ụ ủ
  • 36. Chuy n d li uể ữ ệ 3 cách đ chuy n tham s cho Servlet ho c JSPể ể ố ặ D li u đ c dùng ch cho request này:ữ ệ ượ ỉ request.setAttribute("key", value); D li u đ c s d ng cho client (và c cho cácữ ệ ượ ử ụ ả request v sau)ề session.setAttribute("key", value); D li u s đ c dùng trong t ng lai c a m i client.ữ ệ ẽ ượ ươ ủ ỗ context.setAttribute("key", value);
  • 37. Ví dụ Servlet JokesAndImages cho phep ng i s d ngườ ử ụ ch n joke ng u nhiên ho c nh ng u nhiên.ọ ẫ ặ ả ẫ Server có 5 nh trong th m cả ư ụ images/ và 5 joke (txt file) trong th m cư ụ jokes/ Các yêu c u r ng s đ c g i t i t p tin HTML nóầ ỗ ẽ ượ ở ớ ậ cho phép ng i d ng ch n nh ho c joke.ườ ụ ọ ả ặ Request v i joke đ c g i t i trang servletớ ượ ở ớ Jokes Requests v i image đ c g i t i m t nh ng uớ ượ ở ớ ộ ả ẫ nhiên trong th m cư ụ images/
  • 38. Joke và Image <html> <head><title>Images and Jokes</title></head> <body> <h1>Please Select:</h1> <form method="post" action="JokesAndImages"> <h2> <input type="submit" name="joke" value="A Joke" /> <input type="submit" name="image" value="An Image" /> </h2> </form> </body></html> imagesJokesOptions.html
  • 39. Joke và Image public class JokesAndImages extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { int randomNum = 1 + Math.abs((new Random()).nextInt() % 5); if (req.getParameter("joke") != null) { req.setAttribute("jokeNumber", new Integer(randomNum)); getServletContext().getRequestDispatcher("/Jokes").forward(req,res); } else if (req.getParameter("image") != null) { getServletContext().getRequestDispatcher("/images/image" + randomNum + ".gif").forward(req, res); } else getServletContext().getRequestDispatcher ("/imagesJokesOptions.html"). forward(req,res); } public void doGet ... }} JokesAndImages.java
  • 40. Joke và Image public class Jokes extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<html><body><h1>A Joke</h1><pre>"); int jokeNum = ((Integer) req.getAttribute("jokeNumber")).intValue(); getServletContext().getRequestDispatcher ("/jokes/joke" + jokeNum + ".txt").include(req, res); out.println("n</pre>"); out.println("<a href="" + req.getRequestURL() + "">Back</a>"); out.println("</body></html>"); }} Jokes.java