[Servlet/JSP] Lập trình Java Servlet cơ bản P2: Tham số khởi tạo Servlet, cấu hình Servlet sử dụng Annotation

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

Trong hướng dẫn này chúng ta cùng tìm hiểu về tham số khởi tạo Servlet và cách cấu hình Servlet sử dụng Annotation cùng các ví dụ minh họa.


Để thực hiện được ví dụ trong bài viết này, bạn cần đọc và thực hiện hướng dẫn trong bài viết trước 

Tạo và chạy Servlet đầu tiên

1. Tham số khởi tạo Servlet

Khi khai báo servlet trong web.xml bạn có thể truyền các tham số khởi tạo cho nó.

InitParamServlet.java

package org.o7planning.tutorial.servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletConfig;
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 InitParamServlet extends HttpServlet {
 
    private static final long serialVersionUID = 1L;
 
    private String emailSupport1;
 
    public InitParamServlet() {
    }
 
    // Phương thức này luôn luôn được gọi 1 lần
    // ngay sau khi đối tượng Servlet được tạo ra.
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
 
        // Lấy ra giá trị của tham số khởi tạo (initialization parameter) của Servlet.
        // (Theo Cấu hình của Servlet này trong web.xml).
        this.emailSupport1 = config.getInitParameter("emailSupport1");
    }
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        // Lấy ra giá trị của tham số khởi tạo (initialization parameter) theo một cách
        // khác.
        String emailSupport2 = this.getServletConfig().getInitParameter("emailSupport2");
 
        ServletOutputStream out = response.getOutputStream();
 
        out.println("<html>");
        out.println("<head><title>Init Param</title></head>");
 
        out.println("<body>");
        out.println("<h3>Init Param</h3>");
        out.println("<p>emailSupport1 = " + this.emailSupport1 + "</p>");
        out.println("<p>emailSupport2 = " + emailSupport2 + "</p>");
        out.println("</body>");
        out.println("<html>");
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }
 
}

Cấu hình servlet trong web.xml:

<servlet>
    <servlet-name>initParamServlet</servlet-name>
    <servlet-class>org.o7planning.tutorial.servlet.InitParamServlet</servlet-class>
     
    <init-param>
        <param-name>emailSupport1</param-name>
        <param-value>abc@example.com</param-value>
    </init-param>
 
    <init-param>
        <param-name>emailSupport2</param-name>
        <param-value>tom@example.com</param-value>
    </init-param>
 
</servlet>    
 
 
<servlet-mapping>
    <servlet-name>initParamServlet</servlet-name>
    <url-pattern>/initParam</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>
 
 
   <servlet>
       <servlet-name>initParamServlet</servlet-name>
       <servlet-class>org.o7planning.tutorial.servlet.InitParamServlet</servlet-class>
        
       <init-param>
           <param-name>emailSupport1</param-name>
           <param-value>abc@example.com</param-value>
       </init-param>
        
       <init-param>
           <param-name>emailSupport2</param-name>
           <param-value>tom@example.com</param-value>
       </init-param>
        
   </servlet>    
    
    
   <servlet-mapping>
       <servlet-name>initParamServlet</servlet-name>
       <url-pattern>/initParam</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 ứng dụng web:

2.  Cấu hình Servlet sử dụng Annotation

Với Servlet phiên bản 3.0 trở lên bạn có thể cấu hình Servlet sử dụng Annotation, trong project này chúng ta đang sử dụng Servlet phiên bản 3.x vì vậy chúng ta có thể sử dụng Annotation để cấu hình. Hãy xem một ví dụ minh họa.

AnnotationExampleServlet.java

package org.o7planning.tutorial.servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
// Bạn có thể cấu hình một hoặc nhiều 'mẫu của URL' (URL pattern)
// có thể truy cập vào Servlet này.
@WebServlet(urlPatterns = { "/annotationExample", "/annExample" }, initParams = {
        @WebInitParam(name = "emailSupport1", value = "abc@example.com"),
        @WebInitParam(name = "emailSupport2", value = "tom@example.com") })
public class AnnotationExampleServlet extends HttpServlet {
 
    private static final long serialVersionUID = 1L;
 
    private String emailSupport1;
 
    public AnnotationExampleServlet() {
    }
 
    // Phương thức này được gọi trước lần phục vụ đầu tiên của Servlet này.
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
 
        this.emailSupport1 = config.getInitParameter("emailSupport1");
    }
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        String emailSupport2 = this.getServletConfig().getInitParameter("emailSupport2");
 
        ServletOutputStream out = response.getOutputStream();
 
        out.println("<html>");
        out.println("<head><title>Init Param</title></head>");
 
        out.println("<body>");
        out.println("<h3>Servlet with Annotation configuration</h3>");
        out.println("<p>emailSupport1 = " + this.emailSupport1 + "</p>");
        out.println("<p>emailSupport2 = " + emailSupport2 + "</p>");
        out.println("</body>");
        out.println("<html>");
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }
 
}

Bạn có thể truy cập Servlet này theo một trong 2 đường dẫn sau:

  1. http://localhost:8080/ServletTutorial/annExample
  2. http://localhost:8080/ServletTutorial/annotationExample

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