- 用一个例子来说明问题,本例要求统计tomcat启动的次数,并保存在d:/test.txt中。一个很简单的逻辑,重点在于tomcat启动自动加载一个类来实现一定的操作。
- 首先编写一个servlet类--Startup.java
- 将需要自动运行的操作代码写在init方法中。
- 如下配置web.xml
<servlet>
<servlet-name>startup</servlet-name>
<servlet-class>com.usease.Startup</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-name>startup</servlet-name>
<servlet-class>com.usease.Startup</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
- 附servlet全代码:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class Startup extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";
//Initialize global variables
public void init() throws ServletException {
try {
File file = new File("d:/test.txt");
int count = 0;
if (file.exists()) {
BufferedReader in = new BufferedReader(new FileReader(file));
String inString = in.readLine();
count = Integer.parseInt(inString);
in.close();
}
count++;
PrintWriter out = new PrintWriter(new FileOutputStream("d:/test.txt"));
out.print(count);
out.close();
}
catch (IOException e) {}
System.out.println("Count completed!");
}
public void init() throws ServletException {
try {
File file = new File("d:/test.txt");
int count = 0;
if (file.exists()) {
BufferedReader in = new BufferedReader(new FileReader(file));
String inString = in.readLine();
count = Integer.parseInt(inString);
in.close();
}
count++;
PrintWriter out = new PrintWriter(new FileOutputStream("d:/test.txt"));
out.print(count);
out.close();
}
catch (IOException e) {}
System.out.println("Count completed!");
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
//Clean up resources
public void destroy() {
}
}
- 这样,当Tomcat加载这个Context路径的时候,就会自动相应的操作了。
说明:一般这个操作用于Tomcat启动后自动加载一些全局变量,初始化信息等,当然你可以象本例中做一些其他操作。
没有评论:
发表评论