点击网站常常发现下面有显示你是第多少位访客,实际上在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("

CounterServlet");

out.println("

");

out.println("

Welcome to this site, you are"+counter.getCount()+" visitors.

");

out.println("");

counter.add(1);

out.close();

}

}

MyServletContextListener.java

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();};

}

}

}

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐