编写一个servlet,实现统计网站被访问次数的功能。 步骤: 1.新建一个类ShowTimesServlet继承HttpServlet,重写doGet和doPost方法。 2.在doPost方法中调用doGet方法,在doGet方法中实现统计网站被访问次数的功能,用户每请求一次servlet,使访问次数times加1。 3.获取ServletContext,通过它的功能记住上一次访问后的次数。
时间: 2023-12-16 16:05:10 浏览: 64
下面是一个简单的示例代码,实现了统计网站被访问次数的功能:
```java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletContext;
public class ShowTimesServlet extends HttpServlet {
private int times = 0;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext context = this.getServletContext();
Integer count = (Integer) context.getAttribute("times");
if (count != null) {
times = count;
}
times++;
context.setAttribute("times", times);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>网站被访问次数</title></head>");
out.println("<body>");
out.println("<h1>网站被访问次数:" + times + "</h1>");
out.println("</body></html>");
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
```
解释一下代码:
1. `ShowTimesServlet` 类继承了 `HttpServlet` 类,并重写了 `doGet` 和 `doPost` 方法。
2. 在 `doGet` 方法中,获取 `ServletContext` 对象,并通过它的 `getAttribute` 方法获取之前保存的访问次数。如果之前有访问,则将访问次数赋给 `times` 变量;否则, `times` 变量默认为 0。然后将 `times` 变量加 1,并通过 `setAttribute` 方法将其保存到 `ServletContext` 对象中。
3. `doGet` 方法返回一个 HTML 页面,显示当前网站被访问的次数。
4. `doPost` 方法只是简单地调用了 `doGet` 方法。
当用户访问 `ShowTimesServlet` 时,每次访问都会使访问次数加 1,并在页面上显示当前网站被访问的次数。
注意:上述代码只是一个简单的示例,实际应用中需要考虑并发访问的问题,可能需要使用线程安全的方式来保存访问次数。