Trong servlet có một cách khác để đọc các paramter ngay từ lúc servlet được khởi tạo, đó là bằng cách ta khai báo các paramter đó trong một file Deployment Description gọi là web.xml. Khi khởi tạo lần đầu servlet sẽ load các parameter trong file web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>Hello World</servlet-name> <servlet-class>hung.servlet.HelloWorld</servlet-class> <init-param> <param-name>myParam</param-name> <param-value>hungbktt@gmail.com</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Hello World</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>Đầu tiên để khai báo một servlet ta sử dụng thẻ <servlet> trong đó sẽ khai báo tên servlet và class của servlet. Sau đó ta phải mapping servlet với url bằng thẻ <servlet-mapping>. Để khai báo các parameter mà servlet có thể load được khi khởi tạo, ta khai báo chúng trong cặp thẻ <init-param> với tên của parameter và giá trị của chúng. Ta không thể dùng các init parameter cho đến khi servlet được khởi tạo.
Để servlet có thể load được các init parmeter, ta sử dụng đối tượng ServletConfig và phương thức getInitParameter() của đối tượng đó. Chú ý rằng ta không thể gọi phương thức getInitParameter() trong contructor.
public void init(ServletConfig servletConfig) throws ServletException{ this.myParam = servletConfig.getInitParameter("myParam"); }Khi container khởi tạo một servlet, nó tạo ra một ServletConfig duy nhất cho servlet đó. Container đọc các servlet init parameter từ web.xml và đưa chúng vào đối tượng ServletConfig pass ServletConfig qua phương thức init() của servlet. init() được gọi khi Container load servlet lần đầu tiên
Dưới đây là ví dụ minh họa cho Initialization parmeter in servlet.
1. Ta khai báo trong file web.xml
2. Tạo servlet tương ứng với phương thức init()
3. Sau khi chạy ta được kết quả như với việc load parameter trong file web.xml
<servlet> còn có subelement là <load-on-startup> để điều khiển khi nào container load servlet. Nếu không khai báo <load-on-startup> thì container sẽ load servlet khi có request đầu tiên tới nó. Khi khai báo <load-on-startup> thì servlet sẽ được load ngay khi container khởi động
<servlet> <servlet-name>Hello World</servlet-name> <servlet-class>hung.servlet.HelloWorld</servlet-class> <init-param><param-name>adminEmail</param-name> <param-value>hungbktt@gmail.com</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
Số trong <load-on-startup>1</load-on-startup> cho container biết rằng thứ tự servlet sẽ được container load
Ngoài ra ta có thể khai báo parameter mà có tất cả các servlet trong hệ thống đều có thể đọc được bằng thẻ <context-param>
<context-param> <param-name>myParam</param-name> <param-value>the value</param-value> </context-param>Và để đọc được chúng ta sử dụng getServletContext()
String myContextParam = servletConfig.getServletContext().getInitParameter("myParam");
Thank
Trả lờiXóaCảm ơn anh
Trả lờiXóathanks
Trả lờiXóa