Title: C
1Công ngh? Java Servlet
- Nguy?n Quang Hùng
- E-mail hungnq2_at_cse.hcmut.edu.vn
- Web site http//www.cse.hcmut.edu.vn/hungnq/cour
ses.htm
2M?c tiêu
- H?c v? công ngh? Java Servlet.
- Bài t?p ?ng d?ng danh b? di?n tho?i b?ng Java
Servlet.
3M?c l?c
- Tài li?u tham kh?o
- T?ng quan
- Ki?n trúc c?a J2EE
- Java Servlet
- Gi?i thi?u
- Mô hình
- L?p trình servlet
- Ví d? ?ng d?ng danh b? di?n tho?i b?ng servlet
4Tài li?u tham kh?o v? Servlet và JSP
- Professional Java Server Programming - J2EE
edition, Wrox Press, 2000. - Core Servlet and JSP, Orielly, 2000.
- Sun blueprints http//java.sun.com/tutorials
- Sun J2SE document API
- IBM Developer web site www.ibm.com/developers
5T?ng quan v? công ngh? Java
- Ki?n trúc J2EE bao g?m nhi?u k? thu?t l?p trình
phía server nhu - Servlet
- JSP
- Enterprise Java Bean
-
6Ki?n trúc c?a J2EE
7Ki?n trúc c?a J2EE
- Web clients trình duy?t ho?c m?t ?ng d?ng qu?n
lý các tuong tác c?a ngu?i dùng, hi?n th? các
trang web d?ng HTML. - HTML và Javascript hay DHTML, XML s? t?o các
ch?c nang tuong tác h?u d?ng phía client
- HTTP ho?c HTTPS là giao th?c chuy?n d?i thông
tin c?a web client và các ?ng d?ng web trên web
server.
8Ki?n trúc c?a J2EE
- J2EE cung c?p
- Web container.
- Java Servlet API.
- JavaServer Page (JSP) API.
- Ð? xây d?ng và qu?n lý các ?ng d?ng web.
9Ki?n trúc c?a J2EE
- Web container
- Cung c?p môi tru?ng runtime và framework h? tr?
các ?ng d?ng web. - Ví d? Tomcat, Jboss, J2EE implementation, IBM
WebSphere Application Server, BEA Web Logic,
Oracle Application Server
10Java Servlet
- Java servlet là nh?ng chuong trình d?c l?p
platform và nh? ch?y ? phía server du?c l?p trình
d? m? r?ng ch?c nang c?a web server. Nghia là b?n
có th? nhúng logic c?a ?ng d?ng riêng vào vi?c x?
lý các HTTP request và t?o HTTP response. - Java servlet gi?ng nhu CGI nhung t?t hon trong
vi?c x? lý HTTP request-response. - Java servlet không th? g?i t? client mà web
container ch?a ?ng d?ng web có server s? b? g?i.
11Quy trình co b?n khi web server nh?n m?t HTTP
request
Uses the mapping Information
J2EE Web Container
3
2
HTTP Req
4
1
5
Web browser
Web Server
6
HTTP Res
Static resources
One or more Servlets or JSP
12Quy trình co b?n khi web server nh?n m?t HTTP
request
- Có 5 bu?c
- Web server ph?i c?u hình d? nh?n bi?t request di
vào là tuong ?ng v?i ?ng d?ng web nào trong J2EE
web container. Web container dùng server context
d? xác d?nh các ?ng d?ng web. - Khi ?ng d?ng nh?n th?y web container nên n?m b?t
request này, web server s? u? quy?n request cho
web container. Gi?ng nhu web server g?i hàm c?c
b?/t? xa d?n web container. - Khi web container nh?n request, nó quy?t d?nh ?ng
d?ng nào nên x? lý request này. Trong J2EE, m?i
request có th? ánh x? xu?ng m?t servlet hay JSP
page, ho?c m?t tài nguyên tinh (d?a vào URL nhu
HTML, XML, ?nh, applet) . Khi dóng gói ?ng d?ng
web thì xác d?nh luôn vi?c mapping này. Còn web
container s? dùng thông tin này d? map m?i
request di vào d?n m?t servlet hay JSP, ho?c m?t
tài nguyên tinh. N?u là tài nguyên tinh thì
chuy?n toàn b? d? li?u v? web server và web
server tr? v? client
13Java servlet - m?t quy trình co b?n khi web
server nh?n m?t HTTP request
- N?u request nên b? x? lý b?i servlet thì web
container s? t?o ho?c d?nh v? m?t th?c th?
servlet r?i u? quy?n request d?n servlet. - Khi u? quy?n, web container truy?n các d?i tu?ng
dóng gói HTTP request và response. Ð?i v?i
servlet, nh?ng d?i tu?ng này di?n t? request và
response stream t?/d?n trình duy?t. Servlet có
th? d?c ho?c ghi d? li?u vào các request và
response stream này. Servlet có th? dùng
java.io.PrintWriter và println() d? ghi d? li?u
vào response stream. Ði?u này gi?ng nhu ghi d?
li?u vào c?u n?i TCP dã m? t? trình duy?t.
14Vòng d?i c?a servlet
15Vòng d?i c?a servlet
- Vòng d?i c?a servlet g?m 6 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?. - Hu? container g?i method destroy() c?a servlet.
- Không s?n sàng th?c th? du?c dánh d?u cho
garbage collection.
16(No Transcript)
17L?p trình v?i Java servlet API
- Java Servlet API g?m
- javax.servlet.
- Ch?a các class và interface d?c l?p v?i HTTP
- javax.servlet.http.
- Ch?a các class c? th? cho HTTP
- T?t c? sevlet d?u ph?i hi?n th?c giao di?n
javax.servlet.Servlet. Tuy nhiên do chúng ta dùng
giao th?c HTTP và javax.servlet.http.HttpServlet
là l?p hi?n th?c giao di?n Servlet, nên thu?ng ta
ph?i k? th?a t? l?p này và override doGet()
và/hay doPost().
18L?p trình v?i Java servlet API (ti?p)
M?c dích Class/Interface
Hi?n th?c servlet javax.servlet.Servlet javax.servlet.SingleThreadModel javax.servlet.GenericServlet javax.servlet.http.HttpServlet
C?u hình sevlet javax.servlet.ServletConfig
Servlet Exception javax.servlet.ServletException
Requests javax.servlet.ServletRequest javax.servlet.http.HttpServletRequest javax.servlet.ServletInputStream
19L?p trình v?i Java servlet API (ti?p)
M?c dích Class/Interface
Responses javax.servlet.ServletResponse javax.servlet.http.HttpServletResponse javax.servlet.ServletOutput
Session tracking Javax.servlet.http.HttpSession Java.servlet.http.HttpSessionBindingListener
Servlet context Javax.servlet.ServletContext
Servlet collaboration Javax.servlet.RequestDispatcher
Khác Javax.servlet.http.Cookie Java.servlet.http.HttpUtils
20API cho HttpServletRequest
- Object getAttribute(String name)
- void setAttribute(String name, Object att )
- Enumeration getAttributeNames()
- int getContentLength()
- String getParameter(String name)
- Enumeration getParameterNames()
- Enumeration getParameterValues()
- String getRemoteHost()
- RequestDispatcher getRequestDispatcher( String
path ) - boolean isSecure()
- ServletInputStream getServletInputStream()
- int getContentLength()
-
21API cho HttpServletResponse
- String getCharaterEncoding()
- ServletOutputStream getOutputStream()
- PrintWriter getWriter()
- setContentLength( int len )
- setContentType( String type )
- setBufferSize( int len )
- int getBufferSize()
- flushBuffer()
22Bài t?p ?ng d?ng tra c?u DBÐT b?ng servlet
- ?ng d?ng danh b? di?n tho?i
- Vi?t m?t InputForm servlet d? t?o m?t HTML form
nh?p d? tra c?u danh b? di?n tho?i. - Vi?t m?t SearchAccount servlet d? tra c?u thông
tin danh b?.
23Bài t?p U.D DBÐTVi?t servlet InputForm
- import javax.servlet. import javax.servlet.http.
- import java.io.IOException
- public class InputForm extends HttpServlet
- static final private String CONTENT_TYPE
"text/html" - //Initialize global variables
- public void init() throws ServletException
- // TO DO ...
-
- public void doGet (HttpServletRequest request,
-
HttpServletResponse response) - throws ServletException,
IOException - // TO DO ...
-
24Bài t?p U.D DBÐT Vi?t servlet InputForm (ti?p)
- //Process the HTTP Get request
- public void doGet ( HttpServletRequest request,
HttpServletResponse response) - throws ServletException,
IOException - response.setContentType(CONTENT_TYPE)
- PrintWriter out response.getWriter() //
Write to client - out.println(lthtmlgtltheadgtlttitlegtInputFormlt/tit
legtlt/headgt") - out.println("ltbodygt")
- out.println("lth1gtTrang Web demo viec tra danh
ba dien thoai.lt/h1gt") - out.println("ltform actionsearchaccount
method'post'gt") - out.println("Nhap ten thue bao ltINPUT
NAMEttbao"gtltbrgt") - out.println("Nhap so dien thoai ltINPUT
NAMEsodthoaigtltbrgt") - out.println("Nhap dia chi ltINPUT
NAMEdiachigt ltbrgt") - out.println("ltinput type'submit'
name'Submit' value'Bat dau tra'gt") - out.println("lt/formgt") out.println("lt/body
gtlt/htmlgt")
25Bài t?p U.D DBÐT K?t qu? hi?n th? trên trình
duy?t
lthtmlgt ltheadgtlttitlegtInputFormlt/titlegtlt/headgt ltbody
gt lth1gtTrang Web demo viec tra danh ba dien
thoai.lt/h1gt ltform actionsearchaccount
method'post'gt Nhap ten thue bao ltinput
name'ttbao gtltbrgt Nhap so dien thoai ltinput
name'sodthoai gtltbrgt Nhap dia chi
ltinput name'diachi gtltbrgt ltinput type'submit'
name'Submit' value'Bat dau tra'gt lt/formgt lt/bodygt
lt/htmlgt
26Bài t?p ?.D DBÐTVi?t servlet SearchAccount
- import javax.servlet. import javax.servlet.http.
- import java.io. import java.util. import
java.sql. - public class SearchAccount extends HttpServlet
- static final private String CONTENT_TYPE
"text/html" -
- // Process the HTTP Post request
- public void doPost (HttpServletRequest request,
-
HttpServletResponse response) - throws ServletException, IOException
-
- // TODO
- // Lay gia tri tu cac textbox
tren InputForm -
27Bài t?p ?.D DBÐTVi?t servlet SearchAccount
(ti?p)
- //Process the HTTP Post request
- public void doPost (HttpServletRequest request,
HttpServletResponse response) - throws ServletException, IOException
- response.setContentType(CONTENT_TYPE)
- PrintWriter out response.getWriter()
- out.println("lthtmlgtltheadgtlttitlegtSearchAccountlt
/titlegtlt/headgt") - out.println("ltbodygtlth1gtKet qua tra dien thoai
theo yeu cau cua ban lt/h1gt") - out.println("lttable border1 cellPadding1
cellSpacing1gt") - String tentbao request.getParameter("ttbao")
- // xay dung lenh SQL
- String newSQL "SELECT FROM CUSTOMER"
- if (tentbao ! null tentbao.length() ! 0)
- newSQL newSQL " where tentbao like
'" tentbao "'" -
- String conStr "jdbcodbcDanhBaDT"
- Statement stmt null ResultSet rs
null -
28Bài t?p ?.D DBÐTVi?t servlet SearchAccount
(ti?p)
- try Class.forName("sun.jdbc.odbc.JdbcOdbcDri
ver") - con DriverManager.getConnection(conStr,
"", "") - stmt con.createStatement()
- rs stmt.executeQuery(newSQL)
-
- out.println("lttrgtltthgtSo thu tult/thgtltthgtTen
thue baolt/thgtltthgtSo dien - thoailt/thgtltthgtDia
chilt/thgtlt/trgt\n") - if (rs ! null)
- for ( int i 1 rs.next() )
- out.println("lttrgtlttdgt" i
"lt/tdgtlttdgt" rs.getString(2) - "lt/tdgtlttdgt"
rs.getString(3) "lt/tdgtlttdgt" - rs.getString(4)
"lt/tdgtlt/trgt\n") - // end for
- // end if
- out.println("lt/tablegt")
- rs.close() stmt.close()
con.close() - catch (Exception e)
System.out.println("Error " e) -
- // End doPost()
29Bài t?p ?.D DBÐTK?t qu? ch?y th? (ti?p)
30K?t lu?n
- Java servlet cho phép m? r?ng ch?c nang co b?n
c?a Web server nh?m tang cu?ng vi?c x? lý các
thông tin trong HTTP request và/hay response. Nó
cung c?p nhi?u ti?n ích hon CGI. - Tuy nhiên Java servlet có di?m y?u trong vi?c
ph?i l?p trình d? t?o trang HTML k?t qu?. Ði?m
y?u này s? du?c kh?c ph?c trong công ngh? khác
c?a Java là JSP.
31Th?o lu?n