You are on page 1of 29

1

Cng ngh Java Servlet


Nguyn Quang Hng
E-mail: hungnq2@cse.hcmut.edu.vn
Web site: http://www.cse.hcmut.edu.vn/~hungnq/courses.htm
Nguyn Quang Hng 2
Mc tiu
Hc v cng ngh Java Servlet.
Bi tp: ng dng danh b in thoi bng Java
Servlet.
Nguyn Quang Hng 3
Mc lc
Ti liu tham kho
Tng quan
Kin trc ca J2EE
Java Servlet
Gii thiu
M hnh
Lp trnh servlet
V d: ng dng danh b in thoi bng servlet
Nguyn Quang Hng 4
Ti liu tham kho v Servlet v JSP
1. Professional Java Server Programming - J2EE
edition, Wrox Press, 2000.
2. Core Servlet and JSP, Orielly, 2000.
3. Sun blueprints: http://java.sun.com/tutorials
4. Sun J2SE document API
5. IBM Developer web site: www.ibm.com/developers
Nguyn Quang Hng 5
Tng quan v cng ngh Java
Kin trc J2EE bao gm nhiu k thut lp
trnh pha server nh:
Servlet
JSP
Enterprise Java Bean


Nguyn Quang Hng 6
Kin trc ca J2EE
Web client
(X)HTML /
XML
Web Container
Servlet
objects
JSP
pages
Tag
Library
RMI/IIOP, JDBC, JMS,
JavaMail, JNDI
HTTP(S)
RDBMS
JDBC
Applet
Nguyn Quang Hng 7
Web client
(X)HTML /
XML
Web Container
Servlet
objects
JSP
pages
Tag
Library
RMI/IIOP, JDBC, JMS,
JavaMail, JNDI
HTTP(S)
RDBMS
JDBC
Applet
Kin trc ca J2EE
Web clients: trnh duyt hoc mt ng
dng qun l cc tng tc ca ngi dng,
hin th cc trang web dng HTML.
HTML v Javascript hay DHTML, XML s
to cc chc nng tng tc hu dng pha
client
HTTP hoc HTTPS l giao thc chuyn i thng tin ca web client v cc ng
dng web trn web server.

Nguyn Quang Hng 8
Kin trc ca J2EE
J2EE cung cp:
Web container.
Java Servlet API.
JavaServer Page (JSP) API.
xy dng v qun l cc ng
dng web.
Web client
(X)HTML /
XML
Web Container
Servlet
objects
JSP
pages
Tag
Library
RMI/IIOP, JDBC, JMS,
JavaMail, JNDI
HTTP(S)
RDBMS
JDBC
Applet
Nguyn Quang Hng 9
Kin trc ca J2EE
Web container:
Cung cp mi trng runtime v
framework h tr cc ng dng web.
V d: Tomcat, Jboss, J2EE
implementation, IBM WebSphere
Application Server, BEA Web Logic,
Oracle Application Server
Web client
(X)HTML /
XML
Web Container
Servlet
objects
JSP
pages
Tag
Library
RMI/IIOP, JDBC, JMS,
JavaMail, JNDI
HTTP(S)
RDBMS
JDBC
Applet
Nguyn Quang Hng 10
Java Servlet
Java servlet l nhng chng trnh c lp platform v
nh chy pha server c lp trnh m rng chc
nng ca web server. Ngha l bn c th nhng logic
ca ng dng ring vo vic x l cc HTTP request
v to HTTP response.

Java servlet ging nh CGI nhng tt hn trong vic
x l HTTP request-response.

Java servlet khng th gi t client m web container
cha ng dng web c server s b gi.

Nguyn Quang Hng 11
Quy trnh c bn khi web server nhn mt
HTTP request
Web
browser
Web
Server
HTTP Req
HTTP Res
Uses the mapping
Information
J2EE Web
Container
Static
resources

Web Application
Servlet/JSP
instances
Static
resources

One or more
Servlets or JSP
1
2
3
4
5
6
Nguyn Quang Hng 14
Vng i ca servlet
Khng tn ti
(Doses not exist)
To ra
(Instantiated)
Sn sng phc v
request (Instaniated
& Ready)
Phc v
(Service)
Khng sn
sng
Unavailable
Hu
(Destroyed)
Nguyn Quang Hng 15
Vng i ca servlet
Khng tn ti
(Doses not exist)
To ra (Instantiated)
Sn sng phc v request (Instaniated
& Ready)
Phc v
(Service)
Khng sn sng
Unavailable
Hu
(Destroyed)
Vng i ca servlet gm 6 trng thi:
- To ra: web container to mt thc th servlet
- Sn sng phc v: gi method init() ca servlet
- Phc v: nu c mt request th container s gi method service() ca thc th.
- Hu: container gi method destroy() ca servlet.
-Khng sn sng: thc th c nh du cho garbage collection.
Nguyn Quang Hng 16
ServletContainer thread 1
thread 2 Servlet
create thread pool
Instantiate servlet instance
Call init() method
Perform initialization
allocate request to thread
HTTP request 1
come
call service() method
allocate request to thread
HTTP request 2
come
call service() method
HTTP Response 1
HTTP Response 2
Block all further requests until exists
ready thread
Nguyn Quang Hng 17
Lp trnh vi Java servlet API
Java Servlet API gm:
javax.servlet.*
Cha cc class v interface c lp vi HTTP
javax.servlet.http.*
Cha cc class c th cho HTTP

Tt c sevlet u phi hin thc giao din
javax.servlet.Servlet. Tuy nhin do chng ta dng giao
thc HTTP v javax.servlet.http.HttpServlet l lp
hin thc giao din Servlet, nn thng ta phi k tha
t lp ny v override doGet() v/hay doPost().
Nguyn Quang Hng 18
Lp trnh vi Java servlet API (tip)
Mc ch Class/Interface
Hin thc servlet javax.servlet.Servlet
javax.servlet.SingleThreadModel
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
Cu hnh sevlet javax.servlet.ServletConfig
Servlet Exception javax.servlet.ServletException
Requests javax.servlet.ServletRequest
javax.servlet.http.HttpServletRequest
javax.servlet.ServletInputStream
Nguyn Quang Hng 19
Lp trnh vi Java servlet API (tip)
Mc 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
Khc
Javax.servlet.http.Cookie
Java.servlet.http.HttpUtils
Nguyn Quang Hng 20
API cho HttpServletRequest
1. Object getAttribute(String name)
2. void setAttribute(String name, Object att )
3. Enumeration getAttributeNames()
4. int getContentLength()
5. String getParameter(String name)
6. Enumeration getParameterNames()
7. Enumeration getParameterValues()
8. String getRemoteHost()
9. RequestDispatcher getRequestDispatcher( String path )
10. boolean isSecure()
11. ServletInputStream getServletInputStream()
12. int getContentLength()
13.

Nguyn Quang Hng 21
API cho HttpServletResponse
1. String getCharaterEncoding()
2. ServletOutputStream getOutputStream()
3. PrintWriter getWriter()
4. setContentLength( int len )
5. setContentType( String type )
6. setBufferSize( int len )
7. int getBufferSize()
8. flushBuffer()
9.
Nguyn Quang Hng 22
Bi tp:
ng dng tra cu DBT bng servlet
ng dng danh b in thoi:
Vit mt InputForm servlet to mt HTML
form nhp tra cu danh b in thoi.
Vit mt SearchAccount servlet tra cu thng
tin danh b.

Nguyn Quang Hng 23
Bi tp: .D DBT
Vit servlet InputForm
1. import javax.servlet.*; import javax.servlet.http.*;
2. import java.io.IOException;

3. public class InputForm extends HttpServlet {
4. static final private String CONTENT_TYPE = "text/html";
5. //Initialize global variables
6. public void init() throws ServletException {
7. // TO DO ...
8. }

9. public void doGet (HttpServletRequest request,
10. HttpServletResponse response)
11. throws ServletException, IOException {
12. // TO DO ...
13. }
14. }
Nguyn Quang Hng 24
Bi tp: .D DBT
Vit servlet InputForm (tip)
1. //Process the HTTP Get request
2. public void doGet ( HttpServletRequest request, HttpServletResponse response)
3. throws ServletException, IOException {
4. response.setContentType(CONTENT_TYPE);
5. PrintWriter out = response.getWriter(); // Write to client

6. out.println(<html><head><title>InputForm</title></head>");
7. out.println("<body>");
8. out.println("<h1>Trang Web demo viec tra danh ba dien thoai.</h1>");
9. out.println("<form action=searchaccount method='post'>");
10. out.println("Nhap ten thue bao: <INPUT NAME=ttbao"><br>");
11. out.println("Nhap so dien thoai: <INPUT NAME=sodthoai><br>");
12. out.println("Nhap dia chi: <INPUT NAME=diachi> <br>");
13. out.println("<input type='submit' name='Submit' value='Bat dau tra'>");
14. out.println("</form>"); out.println("</body></html>");
15. }
Nguyn Quang Hng 25
Bi tp: .D DBT
Kt qu hin th trn trnh duyt
<html>
<head><title>InputForm</title></head>
<body> <h1>Trang Web demo viec tra danh ba dien thoai.</h1>
<form action=searchaccount method='post'>
Nhap ten thue bao : <input name='ttbao ><br>
Nhap so dien thoai : <input name='sodthoai ><br>
Nhap dia chi : <input name='diachi ><br>
<input type='submit' name='Submit' value='Bat dau tra'>
</form>
</body></html>
Nguyn Quang Hng 26
Bi tp: .D DBT
Vit servlet SearchAccount
1. import javax.servlet.*; import javax.servlet.http.*;
2. import java.io.*; import java.util.*; import java.sql.*;

3. public class SearchAccount extends HttpServlet {

4. static final private String CONTENT_TYPE = "text/html";
5.
6. // Process the HTTP Post request
7. public void doPost (HttpServletRequest request,
8. HttpServletResponse response)
9. throws ServletException, IOException
10. {
11. // TODO
12. // Lay gia tri tu cac textbox tren InputForm
13. }
14. }
Nguyn Quang Hng 27
Bi tp: .D DBT
Vit servlet SearchAccount (tip)
1. //Process the HTTP Post request
2. public void doPost (HttpServletRequest request, HttpServletResponse response)
3. throws ServletException, IOException {
4. response.setContentType(CONTENT_TYPE);
5. PrintWriter out = response.getWriter();
6. out.println("<html><head><title>SearchAccount</title></head>");
7. out.println("<body><h1>Ket qua tra dien thoai theo yeu cau cua ban :</h1>");
8. out.println("<table border=1 cellPadding=1 cellSpacing=1>");
9. String tentbao = request.getParameter("ttbao");

10. // xay dung lenh SQL
11. String newSQL = "SELECT * FROM CUSTOMER";
12. if (tentbao != null && tentbao.length() != 0) {
13. newSQL = newSQL + " where tentbao like '%" + tentbao + "%'";
14. }
15. String conStr = "jdbc:odbc:DanhBaDT";
16. Statement stmt = null; ResultSet rs = null;
17.
Nguyn Quang Hng 28
Bi tp: .D DBT
Vit servlet SearchAccount (tip)
1. try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
2. con = DriverManager.getConnection(conStr, "", "");
3. stmt = con.createStatement();
4. rs = stmt.executeQuery(newSQL);
5.
6. out.println("<tr><th>So thu tu</th><th>Ten thue bao</th><th>So dien +
7. thoai</th><th>Dia chi</th></tr>\n");
8. if (rs != null) {
9. for ( int i = 1; rs.next(); ) {
10. out.println("<tr><td>" + i +"</td><td>" + rs.getString(2) +
11. "</td><td>" + rs.getString(3) + "</td><td>" +
12. rs.getString(4) + "</td></tr>\n");
13. } // end for
14. } // end if
15. out.println("</table>");
16. rs.close(); stmt.close(); con.close();
17. } catch (Exception e) { System.out.println("Error : " + e); }
18.
19. } // End doPost()
Nguyn Quang Hng 29
Bi tp: .D DBT
Kt qu chy th (tip)
Nguyn Quang Hng 30
Kt lun
Java servlet cho php m rng chc nng c
bn ca Web server nhm tng cng vic x l
cc thng tin trong HTTP request v/hay
response. N cung cp nhiu tin ch hn CGI.

Tuy nhin Java servlet c im yu trong vic
phi lp trnh to trang HTML kt qu. im
yu ny s c khc phc trong cng ngh
khc ca Java l JSP.
Nguyn Quang Hng 31
Tho lun

You might also like