[Servlet/JSP] Lập trình Java Servlet cơ bản P1: Tạo và chạy Servlet đầu tiên

Đăng bởi: Admin | Lượt xem: 9515 | Chuyên mục: Servlet/JSP

Trong hướng dẫn này chúng ta sẽ cùng nhau tạo một Class Servlet đầu tiên cho Project, cách khai báo thư viện Servlet trong Eclipse và nguyên tắc hoạt động của Servlet khi nó được khởi chạy.


Để thực hiện ví dụ bài học này ta cần  xem lại 2 bài học trước:

1. Tạo WebProject đầu tiên với Servlet sử dụng Eclipse.

2. Cấu hình Eclipse để chạy Web App trên Tomcat

1. Thêm một số Class tham gia vào các ví dụ

Một số class sẽ tham gia vào các ví dụ tiếp theo của hướng dẫn này.

Constants.java

package org.o7planning.tutorial.beans;
 
public class Constants {
 
  public static final String ATTRIBUTE_USER_NAME_KEY ="ATTRIBUTE_USER_NAME_KEY";
    
  public static final String SESSION_USER_KEY ="SESSION_USER_KEY";
    
  public static final String CALLBACK_URL_KEY ="CALLBACK_URL_KEY";
    
}

UserInfo.java

package org.o7planning.tutorial.beans;
 
public class UserInfo {
 
   public String userName;
   private int post;
   private String country;
    
   public UserInfo(String userName, String country, int post)  {
       this.userName= userName;
       this.country= country;
       this.post= post;
   }
 
   public int getPost() {
       return post;
   }
 
   public void setPost(int post) {
       this.post = post;
   }
 
   public String getCountry() {
       return country;
   }
 
   public void setCountry(String country) {
       this.country = country;
   }
 
   public void setUserName(String userName) {
       this.userName = userName;
   }
 
   public UserInfo(String userName) {
       this.userName = userName;
   }
 
   public String getUserName() {
       return this.userName;
   }
}

2. Tạo Servlet đầu tiên

HelloServlet.java

package org.o7planning.tutorial.servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
 
public class HelloServlet extends HttpServlet {
    
   private static final long serialVersionUID = 1L;
 
    
   public HelloServlet() {
   }
 
   @Override
   protected void doGet(HttpServletRequest request,
           HttpServletResponse response) throws ServletException, IOException {
        
       ServletOutputStream out = response.getOutputStream();
        
       out.println("<html>");
       out.println("<head><title>Hello Servlet</title></head>");
        
       out.println("<body>");
       out.println("<h3>Hello World</h3>");
       out.println("This is my first Servlet");
       out.println("</body>");
       out.println("<html>");
   }
 
   @Override
   protected void doPost(HttpServletRequest request,
           HttpServletResponse response) throws ServletException, IOException {
       this.doGet(request, response);
   }
 
}

Đây là hình ảnh HelloServlet vừa được tạo ra với đầy lỗi. Các lỗi này đơn giản chỉ là bạn chưa khai báo thư viện Servlet.

Cần khai báo thư viện Servlet, các thư viện này chỉ là các thư viện Runtime của Servlet, nó có sẵn trên các Web Server, ở đây chúng ta dùng Tomcat, vì vậy hãy khai báo chúng.

 Nhấn phải chuột vào Project chọn Properties:

Lúc này project đã không còn thông báo lỗi.

Tiếp theo bạn cần khai báo HelloServlet và đường dẫn để truy cập vào nó trong web.xml. Bạn cần thêm đoạn cấu hình sau:

<!-- Định nghĩa servlet có tên helloServlet, gắn với class HelloServlet -->
<servlet>
   <servlet-name>helloServlet</servlet-name>
   <servlet-class>org.o7planning.tutorial.servlet.HelloServlet</servlet-class>
</servlet>
 
<!-- Định nghĩa đường dẫn truy cập vào Servlet này -->
<servlet-mapping>
   <servlet-name>helloServlet</servlet-name>
   <url-pattern>/hello</url-pattern>
</servlet-mapping>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://java.sun.com/xml/ns/javaee"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id="WebApp_ID" version="3.0">
   <display-name>ServletTutorial</display-name>
 
    
   <servlet>
       <servlet-name>helloServlet</servlet-name>
       <servlet-class>org.o7planning.tutorial.servlet.HelloServlet</servlet-class>
   </servlet>
 
   <servlet-mapping>
       <servlet-name>helloServlet</servlet-name>
       <url-pattern>/hello</url-pattern>
   </servlet-mapping>
 
 
   <welcome-file-list>
       <welcome-file>index.html</welcome-file>
       <welcome-file>index.htm</welcome-file>
       <welcome-file>index.jsp</welcome-file>
       <welcome-file>default.html</welcome-file>
       <welcome-file>default.htm</welcome-file>
       <welcome-file>default.jsp</welcome-file>
   </welcome-file-list>
 
 
</web-app>

Chạy lại project bằng cách nhấn phải chuột chọn:

  • Run As/Run on Server

Bạn có thể xem nguyên tắc hoạt động của nó theo hình minh họa dưới đây:

Khi một Servlet được gọi tới, tùy tình huống mà một trong hai phương thức doGet(..) hoặc doPost(..) sẽ được gọi.

  • Cụ thể khi nào gọi doGet(..) và khi nào gọi doPost(..) chúng ta sẽ bàn sau.

Trong doGet() hoặc doPost() bạn có thể lấy ra đối tượng ServletOutputStream, đây là luồng đầu ra (ouput stream), nó gửi dữ liệu về trình duyệt của người dùng. Gọi ServletOutputStream.println(..) để ghi các dòng text vào trong luồng (stream).

// Luồng đầu ra (Output Stream),
// gửi dữ liệu về phía trình duyệt của người dùng.
ServletOutputStream out = response.getOutputStream();

Xem hướng dẫn tiếp theo tại đây

vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!



Khóa học liên quan

Khóa học: Servlet/JSP