[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
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
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:
- http://localhost:8080/ServletTutorial/annExample
- http://localhost:8080/ServletTutorial/annotationExample
Xem hướng dẫn tiếp theo tại đây.
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!