点击网站常常发现下面有显示你是第多少位访客,实际上在Java上可轻松实现。首先定义一个容器来定义get和post方法。
public class Counter{
private int count;
public Counter(){
this(0);
}
public Counter(int count){
this.count=count;
}
public void setCount(int count){
this.count=count;
}
public int getCount(){
return count;
}
public void add(int step){
count+=step;
}
}
然后编写Servlet.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class CounterServlet extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response)throws ServletException,IOException {
ServletContext context = getServletContext();
Counter counter = (Counter)context.getAttribute("counter");
if(counter == null){
counter = new Counter(1);
context.setAttribute("counter",counter);
}
response.setContentType("text/html;charset=GB2312");
PrintWriter out = response.getWriter();
out.println("<html><head><title>CounterServlet</title></head>");
out.println("<body>");
out.println("<h1>Welcome to this site, you are"+counter.getCount()+" visitors.</h1>");
out.println("</body></html>");
counter.add(1);
out.close();
}
}
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class MyServletContextListener implements ServletContextListener{
public void contextInitialized(ServletContextEvent sce){
System.out.println("helloapp application is Initialized.");
ServletContext context=sce.getServletContext();
try{
BufferedReader reader = new BufferedReader(
new InputStreamReader(context.getResourceAsStream("/count/count.txt")));
int count = Integer.parseInt(reader.readLine());
reader.close();
Counter counter = new Counter(count);
context.setAttribute("counter",counter);
}catch(IOException e){e.printStackTrace();}
}
public void contextDestroyed(ServletContextEvent sce){
System.out.println("helloapp application is Destroyed.");
ServletContext context=sce.getServletContext();
Counter counter=(Counter)context.getAttribute("counter");
if(counter != null){
try{
String filepath = context.getRealPath("/count");
filepath = filepath+"/count.txt";
PrintWriter pw= new PrintWriter(filepath);
pw.println(counter.getCount());
pw.close();
}catch(IOException e){e.printStackTrace();};
}
}
}