C - PowerPoint PPT Presentation

About This Presentation
Title:

C

Description:

Title: L p tr nh web ph a server Author: Nguyen Quang Hung Last modified by: Guest Created Date: 11/8/2005 1:46:13 PM Document presentation format – PowerPoint PPT presentation

Number of Views:60
Avg rating:3.0/5.0
Slides: 30
Provided by: NguyenQu7
Category:
Tags: jndi

less

Transcript and Presenter's Notes

Title: C


1
Cô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

2
M?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.

3
M?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

4
Tài li?u tham kh?o 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

5
T?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

6
Ki?n trúc c?a J2EE
7
Ki?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.

8
Ki?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.

9
Ki?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

10
Java 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.

11
Quy 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
12
Quy 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

13
Java servlet - m?t quy trình co b?n khi web
server nh?n m?t HTTP request
  1. 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.
  2. 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.

14
Vòng d?i c?a servlet
15
Vò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)
17
L?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().

18
L?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
19
L?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
20
API 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()

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()

22
Bà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?.

23
Bài t?p U.D DBÐTVi?t 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. public void doGet (HttpServletRequest request,

  9. HttpServletResponse response)
  10. throws ServletException,
    IOException
  11. // TO DO ...

24
Bài t?p U.D DBÐT Vi?t servlet InputForm (ti?p)
  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(lthtmlgtltheadgtlttitlegtInputFormlt/tit
    legtlt/headgt")
  7. out.println("ltbodygt")
  8. out.println("lth1gtTrang Web demo viec tra danh
    ba dien thoai.lt/h1gt")
  9. out.println("ltform actionsearchaccount
    method'post'gt")
  10. out.println("Nhap ten thue bao ltINPUT
    NAMEttbao"gtltbrgt")
  11. out.println("Nhap so dien thoai ltINPUT
    NAMEsodthoaigtltbrgt")
  12. out.println("Nhap dia chi ltINPUT
    NAMEdiachigt ltbrgt")
  13. out.println("ltinput type'submit'
    name'Submit' value'Bat dau tra'gt")
  14. out.println("lt/formgt") out.println("lt/body
    gtlt/htmlgt")

25
Bà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
26
Bài t?p ?.D DBÐTVi?t 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. // Process the HTTP Post request
  6. public void doPost (HttpServletRequest request,

  7. HttpServletResponse response)
  8. throws ServletException, IOException
  9. // TODO
  10. // Lay gia tri tu cac textbox
    tren InputForm

27
Bài t?p ?.D DBÐTVi?t servlet SearchAccount
(ti?p)
  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("lthtmlgtltheadgtlttitlegtSearchAccountlt
    /titlegtlt/headgt")
  7. out.println("ltbodygtlth1gtKet qua tra dien thoai
    theo yeu cau cua ban lt/h1gt")
  8. out.println("lttable border1 cellPadding1
    cellSpacing1gt")
  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. String conStr "jdbcodbcDanhBaDT"
  15. Statement stmt null ResultSet rs
    null

28
Bài t?p ?.D DBÐTVi?t servlet SearchAccount
(ti?p)
  1. try Class.forName("sun.jdbc.odbc.JdbcOdbcDri
    ver")
  2. con DriverManager.getConnection(conStr,
    "", "")
  3. stmt con.createStatement()
  4. rs stmt.executeQuery(newSQL)
  5. out.println("lttrgtltthgtSo thu tult/thgtltthgtTen
    thue baolt/thgtltthgtSo dien
  6. thoailt/thgtltthgtDia
    chilt/thgtlt/trgt\n")
  7. if (rs ! null)
  8. for ( int i 1 rs.next() )
  9. out.println("lttrgtlttdgt" i
    "lt/tdgtlttdgt" rs.getString(2)
  10. "lt/tdgtlttdgt"
    rs.getString(3) "lt/tdgtlttdgt"
  11. rs.getString(4)
    "lt/tdgtlt/trgt\n")
  12. // end for
  13. // end if
  14. out.println("lt/tablegt")
  15. rs.close() stmt.close()
    con.close()
  16. catch (Exception e)
    System.out.println("Error " e)
  17. // End doPost()

29
Bài t?p ?.D DBÐTK?t qu? ch?y th? (ti?p)
30
K?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.

31
Th?o lu?n
Write a Comment
User Comments (0)
About PowerShow.com