Mục tiêuSau buổi học này, sv có thể: Hiểu về Servlet Sử dụng được các Servlet API Viết được một servlet đơn giản... Nội dungNền tảng HTML Giới thiệu Java Servlet Vòng đời của Se
Trang 1Java Servlet
Trang 2Mục tiêu
Sau buổi học này, sv có thể:
Hiểu về Servlet
Sử dụng được các Servlet API
Viết được một servlet đơn giản
Trang 3Nội dung
Nền tảng HTML
Giới thiệu Java Servlet
Vòng đời của Servlet
Trang 44 4Nền tảng HTML
Trang 5Nền tảng HTML
Fundamental HTML
response request (http://www.amazon.com/)
Trang 6Javascript block
Servlet action
Trang 7Giới thiệu Java Servlet
Trang 9Giới thiệu Java Servlet
Servlet là một ứng dụng (class) Java chạy trên nền web server.
Cơ chế hoạt động theo mô hình CGI mở rộng.
Chương trình phải được dịch ra ở dạng
byte-code(.class), khai báo với web server Web server phải hỗ trợ Java.
Phải extends class HttpServlet Không có method main.
Trang 10Giới thiệu Java Servlet
Cần có package servlet.jar để biên dịch
( http://java.sun.com/products/servlet/ )
Một số server hiện hỗ trợ Servlet:
Apache Tomcat ( http://jakarta.apache.org )
Sun’s Java Web Server, free, hiện không cho download
Trang 11Giới thiệu Java Servlet
Cấu trúc đơn giản của một Servlet:
11
Trang 12Giới thiệu Java Servlet
Biên dịch như một class Java.
File *.class dịch được phải đặt vào đúng thư mục quy định sẵn của web server.
Tomcat: $/webpages/WEB-INF/classes
JWS: $/servlets
Cấu hình cho web server đối với mỗi servlet:
Tomcat: hiệu chỉnh file web.xml trong thư mục
$/webpages/WEB-INF theo DTD
http://java.sun.com/j2ee/dtds/web-app_2_2.dtd
JWS: Cấu hình bằng web-based tool được cung cấp.
Trang 13Vòng đời của Servlet
Trang 14Vòng đời của Servlet
Trang 15Vòng đời của servlet gồm 5 trạng thái:
- Tạo ra: web container tạo một thực thể servlet
- Sẵn sàng phục vụ: gọi method init() của servlet
- Phục vụ: nếu có một request thì container sẽ gọi method service() của thực thể
- Hủy: container gọi method destroy() của servlet.
- Không sẵn sàng: thực thể được đánh dấu cho garbage collection.
Trang 16Servlet Container
Trang 17Servlet Container
Là một module riêng biệt trong một web server để load và chạy các servlet
Trang 18Mối quan hệ giữa Servlet Container
và Servlet API
Trang 19Servlet API
Các servlet và container giao tiếp với nhau qua một tập các Class và Interface gọi là Servlet API
Trang 20Servlet API
Được chia thành 2 gói:
javax.servlet
javax.servlet.http
Trang 2323 23
Ưu điểm và nhược điểm của Servlet API
Trang 25Nhược điểm
Tuân theo những quy ước nhất định
Chỉ hỗ trợ HTTP thông qua gói
javax.servlet.http
Trang 2626 26Hello World Servlet
Trang 27Hello World Servlet
Trang 28Tạo Java Project
Trang 29Hello World Servlet
Add thư việnServlet API
C:\Program Files\Apache Software
Foundation\Tomcat 7.0\lib
Trang 30Hello World Servlet
Tạo LoginServlet Class
Trang 31Hello World Servlet
Trang 32Thêm code trong doPost
Trang 33Hello World Servlet
Deploy HelloServlet với Tomcat
Chép file HelloServlet.class vào thư mục:
Trang 34Hello World Servlet
Tạo form mylogin
Trang 36Hello World Servlet
Tạo trang LoginSuccess
Trang 37Hello World Servlet
Chép file LoginSuccess.html và MyLogin.html vào: [TOM_CAT]\webapp\firstservlet\
Trang 38Hello World Servlet
Kiểm tra lại
Trang 39Hello World Servlet
Khởi động TomCat Server
Mở trình duyệt và nhập địa chỉ:
http://localhost:8080/firstservlet/mylogin.html
Trang 40Servlet Model
Trang 44Kế thừa ServletRequest
Phân tích và diễn giải thông điệp HTTP và cung cấp các thông tin liên quan đến servlet.
Trang 45HttpServletRequest
Trang 48Kế thừa ServletResponse
Cung cấp các chức năng:
khác
Trang 50ServletConfig
Trang 51ServletConfig
Trang 52java.net.URL getResource(String path)
java.io.InputStream getResourceAsStream(String path)
~ getResource(String path).openStream()
Trang 53ServletContext
Trang 54Sử dụng Session
HttpSession session = request.getSession(true);
if (session.getAttribute("userName") == null)
{ session.setAttribute("userName", "Stranger"); }
Trang 55Tình huống:
Nếu người dùng không logged in,
AccountServlet có thể chuyển request cho LoginServlet.
AccountServlet
LoginServlet
Trang 56Tình huống:
LoginServlet sẽ chuyển request đến
AccountServlet.
AccountServlet
LoginServlet
isAuthenticated?
Trang 57Các phương thức:
void forward(ServletRequest req, ServletResponse res)
void include(ServletRequest req, ServletResponse res)
Trang 59Ví dụ Forward
Trang 61Forward và Redirect
Redirect
Là một quá trình gồm hai bước, trong đó web
application chỉ thị cho brower lấy một ULR thứ hai khác với url ban đầu
Trình duyệt load lại URL thứ hai
Redirect chậm hơn forward một chút vì nó yêu cầu hai request cho trình duyệt
Các đối tượng trong phạm vi của request ban đầu không có trong request thứ hai
Trang 62Ví dụ Redirect
response.sendRedirect(response.encodeRedirect URL(contextPath + "/weather") );
Trang 6363 63Các điểm cần nhớ
Trang 65Thank You!