1. Một số khái niệm
2. Giới thiệu về Servlet và JSP
3. Các bước phát triển và triển khai ứng
dụng Web
4. File WAR (Web Application Archive)
5. Cấu hình ứng dụng web
6. Web container
54 trang |
Chia sẻ: lylyngoc | Lượt xem: 2002 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài 1. Giới thiệu về Servlet & JSP, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Bài 1. Giới thiệu về
Servlet & JSP
Nội dung
1. Một số khái niệm
2. Giới thiệu về Servlet và JSP
3. Các bước phát triển và triển khai ứng
dụng Web
4. File WAR (Web Application Archive)
5. Cấu hình ứng dụng web
6. Web container
2
Web server và client
Số lượng: vô cùng lớn
Mục tiêu:
Xây dựng ứng dụng
được truy cập trên toàn
cầu
3
Web server và client
4
Server làm những gì?
5
Client làm những gì?
6
HTML, HTTP protocol
7
HTTP Protocol
Giao thức HTTP chạy trên TCP/IP
TCP: đảm bảo file được từ nút mạng này tới nút
mạng khác nguyên vẹn
IP: chịu trách nhiệm định tuyến, dịch chuyển gói
tin
Cấu trúc HTTP: chuỗi Request và Response
Browser: request
Server: response
8
HTTP Protocol
9
Request:
POST hay GET
Trang request (url)
Tham số
Response
Mã trạng thái
Context type: text, pic..
Nội dung
Phương thức GET và POST
GET POST
Lịch sử,
bookmark
Tham số hiển thị trên URL,
có thể bookmark
Tham số không hiển thị trên
URL, không thể bookmark
Loại dữ
liệu
Chỉ kí tự ASCII Không giới hạn
Giới hạn
về độ dài
Có, vì độ dài URL có giới
hạn, thường 2048 kí tự
Không giới hạn
Sử dụng Không sử dụng khi gửi thông
tin bí mật: password
Sử dụng để gửi các thông tin
bí mật: passowrd
10
GET:
?min=10000000&max=12000000
URL
11
Website vs web application
12
2. Giới thiệu về Servlet và JSP
Servlet và JSP: các web component
Cho phép tạo ra các nội dung động
13
Web Components & Container
Các web components chạy trên 1 Web container
Các web containers phổ biến: Tomcat và Resin
Web container cung cấp các dịch vụ hệ thống cho
các Web components
Request dispatching, security, và quản lý vòng đời
14
Web Application & Components
Web Application là 1 gói triển khai, gồm:
Web components (Servlets và JSP)
Tài nguyên tĩnh như images
Helper classes (sử dụng bởi web components)
Thư viện Libraries
Deployment descriptor (web.xml file)
Web Application có thể được tổ chức thành
Phân cấp các thư mục và files (dạng chưa đóng gói -
unpacked form) hoặc
*.WAR file: có fân cấp như trên (dạng đóng gói-packed
form)
15
Web Request Handling
16
3. Các bước phát triển và triển
khai ứng dụng Web
17
Các bước phát triển và triển khai ứng
dụng Web
Viết code (và biên dịch) cho các Web component
Servlet/JSP sử dụng trong web component
Tạo các tài nguyên tĩnh (Images, các trang HTML)
Viết file deployment descriptor (web.xml)
Build ứng dụng Web (Tạo file *.war hoặc thư mục
dạng chưa đóng gói nhưng triển khai được)
Triển khai ứng dụng Web trên 1 Web container
Web clients có thể truy cập ứng dụng qua URL
18
Development Tree Structure
Tạo cấu trúc cây thư mục (Development Tree
Structure) cho việc viết ứng dụng web
Thư mục gốc bao gồm:
src: Mã nguồn Java cho các servlets và các
JavaBeans
web: các trang JSP, HTML, images
Có thể sử dụng IDE Netbeans để hỗ trợ
19
Ví dụ 1: cấu trúc cây project ch1
ch1
src
Ch1Servlet.java
web
WEB-INF
web.xml
20
ch1
websrc
WEB-INF
web.xml
Ch1Servlet
.java
Ch1Servlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Ch1Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
java.util.Date today = new java.util.Date();
out.println(" " + " "
+ "Servlet"
+ "" + today + "" + "" );
}
}
21
web.xml
<web-app version="3.0" xmlns=""
xmlns:xsi=""
xsi:schemaLocation="
">
Chuong 1 Servlet
Ch1Servlet
Chuong 1 Servlet
/Serv
22
Biên dịch & triển khai trong Netbeans
Biên dịch
Các file được biên
dịch thành file .class
23
ch1
web
dist
WEB-INF
web.xml
ch1.war
build
classes
Ch1Servlet
.class
Request từ client
Trên trình duyệt gõ:
24
Cấu trúc triển khai trong Tomcat
25
Request từ client
Run Tomcat
Trên trình duyệt gõ
26
Nhận xét
Việc chèn thẻ HTML trong câu
lệnh println là dễ dàng?
Giải pháp: JSP
<%=new
java.util.Date() %>
Ý nghĩa của file web.xml?
27
web.xml
<web-app version="3.0" xmlns=""
xmlns:xsi=""
xsi:schemaLocation="
">
Chuong 1 Servlet
Ch1Servlet
Chuong 1 Servlet
/Serv
28
Ví dụ 2
Ví dụ hello2 trong tutorial của J2EE 1.4
Mục đích:
Tạo 2 servlet có liên kết với nhau
GreetingServlet chuyển yêu cầu tới
ResponseServlet
Tài nguyên tĩnh
File đóng gói war
Hiểu hơn về file web.xml
29
30
31
Cấu trúc cây hello2
Hello2
src/servlets
GreetingServlet.java
ResponseServlet.java
web
WEB-INF
web.xml
duke.waving.gif
build.xml
32
Cấu trúc sau khi biên dịch
Hello2
src
web
build.xml
build
WEB-INF
classes
GreetingServlet.class
ResponseServlet.class
web.xml
duke.waving.gif
33
GreetingServlet
String username = request.getParameter("username");
if ((username != null) && (username.length() > 0)) {
RequestDispatcher dispatcher =
getServletContext()
.getRequestDispatcher("/response");
if (dispatcher != null) {
dispatcher.include(request, response);
}
}
34
ResponseServlet
public class ResponseServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
if ((username != null) && (username.length() > 0)) {
out.println("Hello, " + username + "!");
}
}
35
web.xml
GreetingServlet
servlets.GreetingServlet
ResponseServlet
servlets.ResponseServlet
GreetingServlet
/greeting
ResponseServlet
/response
36
4. Web Application Archive
(*.WAR)
37
Ứng dụng Web
Ứng dụng Web có thể được triển khai ở 2
dạng
Một file *.war
Một thư mục, cấu trúc giống file *.war file (thư
mục build)
Sử dụng dạng file *.war khi muốn triển khai
trên 1 remote machine
38
File *.WAR là gì?
Là gói triển khai được trên web container
Tương tự như file *.jar
Chứa tất cả thành phần cần thiết:
Web components (servlets hoặc JSP)
Các Class tiện ích
Nội dung tĩnh (HTML, image, …)
Các lớp phía Client (applets và các lớp tiện ích)
Có nội dung giống như thư mục build
39
Cấu trúc thư mục của 1 file *.WAR
40
Cấu trúc thư mục của 1 file *.WAR
41
Tạo 1 file *.WAR như thế nào?
3 cách khác nhau:
Sử dụng IDE (NetBeans)
Sử dụng công cụ ant
“asant create-war” (J2EE 1.4 tutorial)
Sử dụng lệnh “jar cvf .war .” khi ở
trong thư mục build
42
Ví dụ: Tạo file hello2.war với lệnh “asant
create-war”
C:\j2eetutorial14\examples\web\hello2>asant create-war
Buildfile: build.xml
...
create-war:
[echo] Creating the WAR....
[delete] Deleting:
C:\j2eetutorial14\examples\web\hello2\assemble\war\hello2.war
[delete] Deleting directory
C:\j2eetutorial14\examples\web\hello2\assemble\war\WEB-INF
[copy] Copying 1 file to
C:\j2eetutorial14\examples\web\hello2\assemble\war\WEB-INF
[copy] Copying 2 files to
C:\j2eetutorial14\examples\web\hello2\assemble\war\WEB-INF\classes
[war] Building war:
C:\j2eetutorial14\examples\web\hello2\assemble\war\hello2.war
[copy] Copying 1 file to C:\j2eetutorial14\examples\web\hello2
43
Ví dụ: Tạo file hello2.war sử dụng lệnh jar
C:\j2eetutorial14\examples\web\hello2\build>jar cvf hello2.war .
added manifest
adding: duke.waving.gif(in = 1305) (out= 1295)(deflated 0%)
adding: servlets/(in = 0) (out= 0)(stored 0%)
adding: servlets/GreetingServlet.class(in = 1680) (out= 887)(deflated 47%)
adding: servlets/ResponseServlet.class(in = 1090) (out= 572)(deflated 47%)
C:\j2eetutorial14\examples\web\hello2\build>jar xvf hello2.war
created: META-INF/
extracted: META-INF/MANIFEST.MF
extracted: duke.waving.gif
created: servlets/
extracted: servlets/GreetingServlet.class
extracted: servlets/ResponseServlet.class
44
Thư mục WEB-INF
Chứa:
web.xml : Web application deployment descriptor
Các file JSP tag library descriptor
Classes : là thư mục chứa các lớp phía server:
servlets, lớp tiện ích, các JavaBeans
lib : là thư mục chứa các file thư viện JAR (tag
libraries, các thư viện tiện ích được gọi bởi các
lớp phía server)
45
5. Cấu hình ứng dụng Web
Thông số cấu hình được đặc tả trong file
web.xml (Web Applications Deployment
Descriptor)
46
Prolog (web.xml)
Tất cả tài liệu XML cần có prolog
<web-app
xmlns=""
xmlns:xsi="
instance"
xsi:schemaLocation=
s/javaee
app_3_0.xsd version="3.0">
47
Alias Paths (web.xml)
Khi 1 Servlet container nhận 1 request, nó cần biết
Web component nào trong ứng dụng Web sẽ xử lý
request này.
Thực hiện map URL path trong request tới 1 Web
component
Alias Path có thể có 2 dạng
/alias-string (cho servlet) hoặc
/*.jsp (cho JSP)
48
web.xml
GreetingServlet
servlets.GreetingServlet
ResponseServlet
servlets.ResponseServlet
GreetingServlet
/greeting
ResponseServlet
/response
49
6. Web Container
50
51
52
Vai trò của Container
Hỗ trợ giao tiếp giữa servlet và web server
Quản lý vòng đời của các servlet: khởi tạo,
gọi, hủy
Hỗ trợ đa tuyến
Cấu hình ứng dụng web dễ dàng qua
web.xml
Hỗ trợ dịch các trang JSP
53
Thảo luận
54