Lập trình web phía server 1 Công nghệ Java Servlet Nguyễn Quang Hùng E mail hungnq2@cse hcmut edu vn Web site http //www cse hcmut edu vn/~hungnq/courses htm Nguyễn Quang Hùng 2 Mục tiêu Học về công[.]
Công nghệ Java Servlet Nguyễn Quang Hùng E-mail: hungnq2@cse.hcmut.edu.vn Web site: http://www.cse.hcmut.edu.vn/~hungnq/courses.htm Mục tiêu Học công nghệ Java Servlet Bài tập: ứng dụng danh bạ điện thoại Java Servlet Nguyễn Quang Hùng Mục lục Tài liệu tham khảo Tổng quan Kiến trúc J2EE Java Servlet Giới thiệu Mơ hình Lập trình servlet Ví dụ: ứng dụng danh bạ điện thoại servlet Nguyễn Quang Hùng Tài liệu tham khảo Servlet 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 Nguyễn Quang Hùng Tổng quan công nghệ Java Kiến trúc J2EE bao gồm nhiều kỹ thuật lập trình phía server như: Servlet JSP Enterprise Java Bean … Nguyễn Quang Hùng Kiến trúc J2EE Web Container Servlet JSP Tag objects pages Library Web client (X)HTML / XML HTTP(S) Applet RMI/IIOP, JDBC, JMS, JavaMail, JNDI JDBC RDBMS Nguyễn Quang Hùng Kiến trúc J2EE Web client (X)HTML / XML Web Container Servlet JSP Tag objects pages Library HTTP(S) RMI/IIOP, JDBC, JMS, JavaMail, JNDI Applet • Web clients: trình duyệt ứng dụng quản lý tương tác người dùng, hiển thị trang web dạng HTML JDBC RDBMS • HTML Javascript hay DHTML, XML tạo chức tương tác hữu dụng phía client • HTTP HTTPS giao thức chuyển đổi thông tin web client ứng dụng web web server Nguyễn Quang Hùng Kiến trúc J2EE Web client (X)HTML / XML Web Container Servlet JSP Tag objects pages Library HTTP(S) RMI/IIOP, JDBC, JMS, JavaMail, JNDI Applet J2EE cung cấp: • Web container • Java Servlet API • JavaServer Page (JSP) API Để xây dựng quản lý ứng dụng web JDBC RDBMS Nguyễn Quang Hùng Kiến trúc J2EE Web client (X)HTML / XML Web Container Servlet JSP Tag objects pages Library HTTP(S) RMI/IIOP, JDBC, JMS, JavaMail, JNDI Applet Web container: • Cung cấp mơi trường runtime framework hỗ trợ ứng dụng web • Ví dụ: Tomcat, Jboss, J2EE implementation, IBM WebSphere Application Server, BEA Web Logic, Oracle Application Server… JDBC RDBMS Nguyễn Quang Hùng Java Servlet Java servlet chương trình độc lập platform nhỏ chạy phía server lập trình để mở rộng chức web server Nghĩa bạn nhúng logic ứng dụng riêng vào việc xử lý HTTP request tạo HTTP response Java servlet giống CGI tốt việc xử lý HTTP request-response Java servlet gọi từ client mà web container chứa ứng dụng web có server bị gọi Nguyễn Quang Hùng 10 Lập trình với Java servlet API Java Servlet API gồm: javax.servlet.* javax.servlet.http.* Chứa class interface độc lập với HTTP Chứa class cụ thể cho HTTP Tất sevlet phải thực giao diện javax.servlet.Servlet Tuy nhiên dùng giao thức HTTP javax.servlet.http.HttpServlet lớp thực giao diện Servlet, nên thường ta phải kế thừa từ lớp override doGet() và/hay doPost() Nguyễn Quang Hùng 17 Lập trình với Java servlet API (tiếp) Mục đí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 Nguyễn Quang Hùng 18 Lập trình với Java servlet API (tiếp) Mục đí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 Nguyễn Quang Hùng 19 API cho HttpServletRequest 10 11 12 13 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() … Nguyễn Quang Hùng 20 API cho HttpServletResponse String getCharaterEncoding() ServletOutputStream getOutputStream() PrintWriter getWriter() setContentLength( int len ) setContentType( String type ) setBufferSize( int len ) int getBufferSize() flushBuffer() … Nguyễn Quang Hùng 21 Bài tập: Ứng dụng tra cứu DBĐT servlet Ứng dụng danh bạ điện thoại: Viết InputForm servlet để tạo HTML form nhập để tra cứu danh bạ điện thoại Viết SearchAccount servlet để tra cứu thông tin danh bạ Nguyễn Quang Hùng 22 Bài tập: Ư.D DBĐT Viế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 } 10 11 12 13 14 } Nguyễn Quang Hùng 23 10 11 12 13 14 15 Bài tập: Ư.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(“InputForm"); out.println(""); out.println("Trang Web demo viec tra danh ba dien thoai."); out.println(""); out.println("Nhap ten thue bao: Nhap dia chi :