servlet实现统计网页访问次数

一、基础知识

  • (1)ServletContext和ServletConfig的区别
    • ServletContext作为整个web应用的共享数据
    • ServletConfig只是作为当前servlet的数据共享,下一个servlet访问时,是访问不到的

二、代码实现

  • 将显示的统计次数显示在HTML页面上:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class countServlet1
 */
@WebServlet("/countServlet1")
public class countServlet1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public countServlet1() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置字符编码
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		
		
		
		//获取全局的共享数据
		ServletContext servletContext = this.getServletContext();
		
		//获取计数器count
		Integer count = (Integer) servletContext.getAttribute("count");
		
		//如果获取的计算器对象为空 ,说明是第一次访问,并将count,放入servletCount
		if( servletContext.getAttribute("count") == null) {
			count = 1;
			servletContext.setAttribute("count", count);
		}else {
			//否则就不是第一次访问,将登陆的计数器进行加1的数据更新
			servletContext.setAttribute("count", count+1);
		}
		
		//将登陆的次数显示在页面上
		PrintWriter out =response.getWriter();
		out.print("<!DOCTYPE html>\r\n" + 
				  "<html>\r\n" + 
				  "<head>\r\n" + 
				  "<meta charset=\"UTF-8\">\r\n" + 
				  "<title>登陆网页次数统计</title>\r\n" + 
				  "</head>\r\n" + 
				  "<body>");
		out.print("<h1>");
		out.print("您是第 "+ servletContext.getAttribute("count")+"位访客");
		out.print("<h1>");
		out.print("</body>\r\n" + 
				  "</html>");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

三、在不同浏览器显示的次数

  • (1)在eclipse中显示的次数
    在这里插入图片描述
  • (2)在火狐中显示的次数
    在这里插入图片描述
  • (3)在360中显示的次数
    在这里插入图片描述
  • 17
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 可以通过以下步骤编写一个servlet实现统计网站被访问次数的功能: 1. 创建一个Java类,继承HttpServlet类,重写doGet()方法。 2. 在doGet()方法中,获取ServletContext对象,并从中获取一个名为“visitCount”的属性。 3. 如果“visitCount”属性不存在,则将其设置为1,并将其存储在ServletContext中。 4. 如果“visitCount”属性存在,则将其值加1,并将其存储在ServletContext中。 5. 在doGet()方法中,将“visitCount”属性的值输出到浏览器。 6. 在web.xml文件中配置servlet映射。 7. 部署应用程序并启动服务器。 8. 访问网站时,servlet将自动统计访问次数,并将其显示在浏览器中。 示例代码如下: ```java import java.io.IOException; 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 VisitCountServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext context = getServletContext(); Integer visitCount = (Integer)context.getAttribute("visitCount"); if (visitCount == null) { visitCount = 1; } else { visitCount++; } context.setAttribute("visitCount", visitCount); response.setContentType("text/html"); response.getWriter().println("<h1>网站被访问次数:" + visitCount + "</h1>"); } } ``` 在web.xml文件中添加以下配置: ```xml <servlet> <servlet-name>VisitCountServlet</servlet-name> <servlet-class>VisitCountServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>VisitCountServlet</servlet-name> <url-pattern>/visitcount</url-pattern> </servlet-mapping> ``` 在浏览器访问http://localhost:8080/visitcount,即可看到网站被访问次数。 ### 回答2: Servlet是Java Web应用程序中的一种Java程序,可以处理HTTP求和响应,常用于动态生成Web页面和交互式应用程序编写一个Servlet实现统计网站被访问次数的功能,可以分为以下几个步骤: 1. 创建一个计数器变量count,用于统计网站被访问次数。 2. 在Servlet的init()方法中初始化计数器变量count。 3. 在Servlet的doGet()方法中实现对计数器变量count的操作,每次访问Servlet时,计数器变量count的值加1。 4. 在Servlet的doGet()方法中向浏览器输出网站被访问次数的信息,可以使用PrintWriter类的print()方法或者response对象的getWriter()方法。 5. 在Web应用程序web.xml文件中配置Servlet,指定Servlet的URL匹配模式和Servlet类名。 以下是实现的代码: 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; public class CountServlet extends HttpServlet { private static int count; public void init() throws ServletException { count = 0; } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { count++; response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>统计网站被访问次数</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>网站被访问次数为:" + count + "</h1>"); out.println("</body>"); out.println("</html>"); } } 在web.xml中添加如下配置: <servlet> <servlet-name>countServlet</servlet-name> <servlet-class>CountServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>countServlet</servlet-name> <url-pattern>/count</url-pattern> </servlet-mapping> 配置完成后,就可以通过访问http://localhost:8080/应用程序名称/count来查看网站被访问次数了。每一次访问Servlet,计数器变量count都会加1,并将累加的次数输出到浏览器页面中。最后,可以使用数据库或缓存技术将计数器变量count的值永久化保存,以便在Web应用程序重启或停止后,仍然能够正确地统计网站被访问次数。 ### 回答3: Servlet是Java Web应用程序的重要组成部分,可用于处理网络求和生成Web响应。编写一个servlet实现统计网站被访问次数的功能,需要以下步骤: 1. 创建一个计数器变量count,来记录网站被访问次数。 2. 实现一个HttpServlet类,这个类将被用来处理HTTP求。可以继承HttpServlet类,然后重写doGet()方法。 3. 在doGet()方法中,将count计数器加1,然后输出计数器的值,以便用户能够看到被访问次数。 4. 编写web.xml文件,将servlet映射到特定的URL。 完整代码如下所示: ```java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class VisitCounterServlet extends HttpServlet { private int count = 0; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); count++; out.println("<html><body>"); out.println("<h2>Welcome to my website!</h2><br/>"); out.println("<p>You are the " + count + " visitor to this site.</p>"); out.println("</body></html>"); } } ``` 为了使用这个servlet,需要将它注册到Web应用程序中。下面是注册的一种方法: ```xml <servlet> <servlet-name>VisitCounterServlet</servlet-name> <servlet-class>VisitCounterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>VisitCounterServlet</servlet-name> <url-pattern>/counter</url-pattern> </servlet-mapping> ``` 在上面的代码中,servlet-name指定了servlet的名称,servlet-class指定了所用的Java类名。servlet-mapping将servlet映射到一个URL上,这里是/counter。 最后,在网页访问/counter的URL,会看到一个欢迎信息以及访问次数访问该URL,计数器将会自增,每次刷新页面都会显示统计访问次数的结果。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值