Bài giảng Lập trình Java nâng cao - Bài 2: Servlet (Tiếp theo) - Nguyễn Hữu Thể
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Java nâng cao - Bài 2: Servlet (Tiếp theo) - Nguyễn Hữu Thể", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_lap_trinh_java_nang_cao_bai_2_servlet_tiep_theo_ng.pdf
Nội dung text: Bài giảng Lập trình Java nâng cao - Bài 2: Servlet (Tiếp theo) - Nguyễn Hữu Thể
- LẬP TRÌNH JAVA NÂNG CAO Nguyễn Hữu Thể Bài 2: Servlet 1
- Nội dung ▪ Servlet and Architecture ▪ Interface Servlet and the Servlet Life Cycle ▪ HttpServlet Class ▪ HttpServletRequest Interface ▪ HttpServletResponse Interface ▪ Project Servlet in Eclipse ▪ HTTP get Requests ▪ HTTP get Requests Containing Data ▪ HTTP post Requests ▪ Redirecting Requests to Other Resources ▪ Welcome Files 2
- Servlet and Architecture − Servlets: chạy trên Web server hoặc Application server. − Tầng trung gian giữa HTTP Client với các Database hoặc các ứng dụng trên HTTP server. − Ưu điểm Servlets: ▪ Hiệu năng tốt. Tính bảo mật cao (dựa trên Java). Độc lập trên nền tảng. ▪ Thư viện Java, giao tiếp với Applet, Database hoặc phần mềm khác. 3
- Servlet Package − Java Servlets sử dụng các lớp Java => Run bởi Web Server. − Các gói thư viện hỗ trợ: ▪ javax.servlet ▪ javax.servlet.http − Servlet được biên dịch giống như các lớp khác trong Java. − Các interface và các lớp trong API Servlet ▪ Servlet, ▪ GenericServlet, ▪ HttpServlet, ▪ ServletRequest, ▪ ServletResponse, 4
- Servlet Life Cycle 1. Servlet được khởi tạo bằng cách gọi phương thức init() 2. Phương thức service() được gọi để xử lý yêu cầu của client. 3. Servlet được hủy bằng phương thức destroy() 4. Cuối cùng, servlet được thu thập bởi bộ sưu tập rác của JVM. 5
- Interface Servlet Method Description initializes the servlet. It is the life cycle method of servlet and public void init(ServletConfig config) invoked by the web container only once. provides response for the incoming public void service(ServletRequest request. It is invoked at each request,ServletResponse response) request by the web container. is invoked only once and indicates public void destroy() that servlet is being destroyed. public ServletConfig getServletConfig() returns the object of ServletConfig. returns information about servlet public String getServletInfo() such as writer, copyright, version etc. 6
- Method Detail – init() public void init(ServletConfig config) throws ServletException ▪ Phương thức init() được gọi chỉ một lần để khởi tạo servlet. ▪ Khi gọi servlet, một thể hiện duy nhất của mỗi servlet sẽ được tạo ra, với mỗi yêu cầu của người dùng tạo ra một luồng mới được trao cho doGet hoặc doPost. ▪ Parameters: • config - a ServletConfig object containing the servlet's configuration and initialization parameters 7
- Method Detail – service() public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException ▪ Phương thức chính để thực hiện nhiệm vụ. Web server gọi phương thức service() để xử lý các yêu cầu đến từ client và trả về kết quả. ▪ Máy chủ tạo ra 1 Thread mới khi nhận được 1 yêu cầu cho 1 servlet, và gọi phương thức service(). ▪ Phương thức service() kiểm tra kiểu yêu cầu HTTP (GET, POST, PUT, DELETE, v.v.) và gọi các phương thức doGet, doPost, doPut, doDelete, ▪ Parameters: • req - the ServletRequest object that contains the client's request • res - the ServletResponse object that contains the servlet's response 8
- Method Detail – getServletConfig() public ServletConfig getServletConfig() ▪ Returns a ServletConfig object, which contains initialization and startup parameters for this servlet. 9
- Method Detail – getServletInfo() public java.lang.String getServletInfo() ▪ Returns information about the servlet, such as author, version, and copyright. ▪ The string that this method returns should be plain text and not markup of any kind (such as HTML, XML, etc.). ▪ Returns: • a String containing servlet information 10
- Method Detail - destroy public void destroy() ▪ Chỉ được gọi một lần ở giai đoạn cuối trong vòng đời Servlet. ▪ Giúp servlet đóng các kết nối tới Database, dừng thread, thực hiện các hoạt động cleanup. ▪ Sau khi destroy() được gọi, đối tượng servlet này được đánh dấu cho Garbage Collector. 11
- HttpServlet Class − Servlets kế thừa từ lớp HttpServlet. − Hai loại HTTP requests phổ biến nhất là get và post. − Lớp HttpServlet định nghĩa phương thức doGet và doPost để respond và requests từ client. − Được gọi bởi servlet container khi request đến server. 12
- HttpServlet Class public abstract class HttpServlet extends GenericServlet implements java.io.Serializable − Cung cấp lớp trừu tượng để tạo một HTTP servlet phù hợp. − Lớp con của HTTPServlet phải ghi đè ít nhất một trong các phương thức sau: ▪ doGet, nếu servlet hỗ trợ HTTP GET requests ▪ doPost, cho HTTP POST requests ▪ doPut, cho HTTP PUT requests ▪ doDelete, cho HTTP DELETE requests ▪ init và destroy, để quản lý tài nguyên được giữ ▪ getServletInfo: servlet cung cấp thông tin về chính nó 13
- HttpServlet Class Method Summary protected voiddoDelete(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a DELETE request. protected voiddoGet(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a GET request. protected voiddoHead(HttpServletRequest req, HttpServletResponse resp) Receives an HTTP HEAD request from the protected service method and handles the request. protected voiddoOptions(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a OPTIONS request. protected voiddoPost(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a POST request. 14
- HttpServlet Class Method Summary protected voiddoPut(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a PUT request. protected voiddoTrace(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a TRACE request. protected longgetLastModified(HttpServletRequest req) Returns the time the HttpServletRequest object was last modified, in milliseconds since midnight January 1, 1970 protected voidservice(HttpServletRequest req, HttpServletResponse resp) Receives standard HTTP requests from the public service method and dispatches them to the doXXX methods defined in this class. voidservice(ServletRequest req, ServletResponse res) Dispatches client requests to the protected service 15 method.
- HttpServletRequest Interface − String getParameter( String name ) ▪ Value of a parameter sent to the servlet as part of a get or post request. The name argument represents the parameter name. − Enumeration getParameterNames() ▪ Returns the names of all the parameters sent to the servlet as part of a post request. − String[] getParameterValues( String name ) ▪ For a parameter with multiple values, this method returns an array of strings containing the values for a specified servlet parameter. − Cookie[] getCookies() ▪ Returns an array of Cookie objects stored on the client by the server. Cookie objects can be used to uniquely identify clients to the servlet. 16
- HttpServletRequest Interface − HttpSession getSession( boolean create ) ▪ Returns an HttpSession object associated with the client's current browsing session. − String getLocalName() ▪ Gets the host name on which the request was received. − String getLocalAddr() ▪ Gets the Internet Protocol (IP) address on which the request was received. − int getLocalPort() ▪ Gets the Internet Protocol (IP) port number on which the request was received. 17
- HttpServletResponse Interface − void addCookie( Cookie cookie ) ▪ Add a Cookie to the header of the response to the client. − ServletOutputStream getOutputStream() ▪ Obtains a byte-based output stream for sending binary data to the client. − PrintWriter getWriter() ▪ Obtains a character-based output stream for sending text data (usually HTML formatted text) to the client. 18
- HttpServletResponse Interface − void setContentType( String type ) ▪ Specifies the content type of the response to the browser. ▪ For examples, content type "text/html", "image/gif", − String getContentType() ▪ Gets the content type of the response. 19
- Project Servlet trong Eclipse 20
- Project Servlet trong Eclipse − File WelcomeServlet.java sau khi biên dịch thành file WelcomeServlet.class được lưu trong thư mục build/class/ 21
- Project Servlet trong Eclipse − Class java lưu trong thư mục src 22
- Project Servlet trong Eclipse − Trang html, jsp lưu trong thư mục WebContent 23
- Project Servlet trong Eclipse − File web.xml lưu trong thư mục WEB-INF 24
- Project Servlet trong Eclipse − Run: right click file html / Run as/ Run on Server 25
- HTTP get Requests − HTTP get request is to retrieve the content of a URL. public class WelcomeServlet extends HttpServlet { // process "get" requests from clients protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { // } } 26
- import java.io.*; import javax.servlet.*; HTTP get Requests import javax.servlet.http.*;HTTP get Requests WelcomeServlet.java @WebServlet("/WelcomeServlet") public class WelcomeServlet extends HttpServlet { public WelcomeServlet() { // } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" "); out.println(" "); out.println(" A Simple Servlet Example "); out.println(" "); out.println(" "); out.println(" Welcome to Servlets! "); out.println(" "); out.println(" "); out.close();} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } 27 }
- HTTP get Requests WelcomeServlet.class 28
- Web.xml 29
- import java.io.*; import javax.*; import javax.servlet.*; @WebServletHTTP("/WelcomeServlet2" get Requests) Containing Data public class WelcomeServlet2 extends HttpServlet { public WelcomeServlet2() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String firstName = request.getParameter("firstname"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" "); out.println(" "); out.println(" Processing get requests with data "); out.println(" "); out.println(" "); out.println(" Hello " + firstName + ", "); out.println("Welcome to Servlets! "); out.println(" "); out.println(" "); out.close(); 30 } }
- HTTP get Requests Containing Data 31
- HTTP get Requests Containing Data 32
- web.xml 33
- import java.io.*; import javax.*; HTTP post Requests import javax.servlet.*; @WebServletHTTP("/WelcomeServlet3" post Requests) public class WelcomeServlet3 extends HttpServlet { public WelcomeServlet3() { super(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String firstName = request.getParameter( "firstname" ); response.setContentType( "text/html" ); PrintWriter out = response.getWriter(); out.println( " " ); out.println( " " ); out.println( " Processing post requests with data " ); out.println( " " ); out.println( " " ); out.println( " Hello " + firstName + ", " ); out.println( "Welcome to Servlets! " ); out.println( " " ); out.println( " " ); out.close(); } 34 }
- HTTP post Requests 35
- Redirecting Requests to Other Resources 36
- Redirecting Requests to Other Resources 37
- Redirecting Requests to Other Resources 38
- Welcome Files − Welcome files to be loaded when the request URL is not mapped to a servlet. − These files are typically HTML or JSP. − Welcome files are defined using the welcome-file-list. − welcome-file-list contains one or more welcome-file. − The following welcome-file-list element indicates that index.html and index.htm. index.html index.htm 39
- Welcome Files 40
- Welcome Files 41