Servlet初始化实例源码实例



Servlet什么时候才会初始化?在容器启动的时候,就会加载web.xml然后将里面的servlet进行初始化加载,

然后调用其init方法。

初始化的相关知识:

(1)当web应用处于运行阶段时,特定的servlet被客户端首次请求访问。

(2)在web.xml文件中为servlet设置了<load-on-startup>元素

<servlet>

<servlet-name>servlet1</servlet-name>

<servlet-class>servlet.servlet1</servlet-class>

<load-on-startup>0</load-on-startup>

</servlet>

初始化说明:

在servlet的配置当中,<load-on-startup>5</load-on-startup>的含义是:

标记容器是否在启动的时候就加载这个servlet。

当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;

当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。

正数的值越小,启动该servlet的优先级越高。

(3)  当web应用被重新启动时,web应用中的所有servlet会在特定的时间被重新初始化。


Servlet初始化实例源码实例:

Servlet_init.java程序:

import java.io.IOException;

import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet_init extends HttpServlet {

public Servlet_init() {
super();
}
private HashMap hashMap = new HashMap();
//初始化方法
public void init() throws ServletException {
// 获取初始化参数
Enumeration enumeration = getInitParameterNames();
try {
if (enumeration != null) {
while (enumeration.hasMoreElements()) {
String name = (String) enumeration.nextElement();
String value = (String) getInitParameter(name);
hashMap.put(name,value);
}
}
} catch (Exception except) {

}
}

// 以 GET 方式访问页面时执行该函数.处理方法为HTTP GET的请求
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置文件类型
response.setContentType(“text/html”);
// 获得Servlet的out对象
PrintWriter out = response.getWriter();
out.println(“<!DOCTYPE HTML PUBLIC \”-//W3C//DTD HTML 4.01 Transitional//EN\”>”);
out.println(“<HTML>”);
out.println(” <HEAD><TITLE>A Servlet</TITLE></HEAD>”);
out.println(” <BODY>”);
out.println(” <table width=’60%’>”);
if (hashMap != null) {
for(Iterator iterator = hashMap.keySet().iterator();iterator.hasNext();){
String namestr = (String)iterator.next();
String valuestr = (String)hashMap.get(namestr);
out.println(“<tr><td align=’center’>” + namestr + “</td>”);
out.println(“<td align=’center’>” + valuestr + “</td></tr>”+”<br>”);
}
}
out.println(” </table>”);
out.println(” </BODY>”);
out.println(“</HTML>”);
// 将内存中的数据一次性输出
out.flush();
//关闭输出对象
out.close();
}

// 以 POST 方式访问页面时执行该函数。处理方法为HTTP POST的请求
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置文件类型和编码方式
response.setContentType(“text/html”);
// 获得Servlet的out对象
PrintWriter out = response.getWriter();
out
.println(“<!DOCTYPE HTML PUBLIC \”-//W3C//DTD HTML 4.01 Transitional//EN\”>”);
out.println(“<HTML>”);
out.println(” <HEAD><TITLE>a Servlet</TITLE></HEAD>”);
out.println(” <BODY>”);
out.println (” <h1>This is my first Servlet</h1>”);
out.println(” <br>”);
out.print(” This is “);
out.print(this.getClass());
out.println(“, using the POST method”);
out.println(” </BODY>”);
out.println(“</HTML>”);
//将内存中的数据一次性输出
out.flush();
//关闭输出对象
out.close();
}

//销毁Servlet的方法
public void destroy() {
super.destroy();

}
}

web.xml文件:

<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app version=”2.5″
xmlns=”http://java.sun.com/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>

<servlet>
<servlet-name>Servlet_init</servlet-name>
<servlet-class>com.cn.student.Servlet_init</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>Jack</param-value>
</init-param>
<init-param>
<param-name>E-mail </param-name>
<param-value>Jack@yahoo.com.cn</param-value>
</init-param>
<init-param>
<param-name>tell</param-name>
<param-value>010-12345678</param-value>
</init-param>
<init-param>
<param-name>address</param-name>
<param-value>China</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Servlet_init</servlet-name>
<url-pattern>/Servlet_init</url-pattern>
</servlet-mapping>

</web-app>