统计网站访问次数,次数不会随着服务器正常的断开或网页关闭而重置。

我们建立一个文件recoder.txt文件,用于保存访问量,可以可以保证稳定增长.
实现方法
建立InitServlet ,用于初始化我的Servletcontext,和在关闭tomcat时保存访问量,当用户登录一次我们取出ServletContext取出,并+1,
其中在Web初始化时加入这句话
详细代码如下:
登录界面


	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			//告诉浏览器用UTF-8解析
			response.setContentType("text/html ;charset=utf-8");
			//字符编码是以UTF-8,通常结合使用更好
			response.setCharacterEncoding("utf-8");
			PrintWriter out = response.getWriter();
		out.println("<h1>用户登录</h1>");
		//action应该这样写    /web应用名/Servlet的url
		out.println("<form  action ='/counter/logincl'  method='post'>");
		out.println("用户id:<input type='text' name='id' '/></br>");
		out.println("密 &nbsp&nbsp码:<input type='password' name='password'/></br>");
		out.println("<input type='submit'  value='登录'/></br>");
		out.println("</form>");
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
	}

登录控制界面’

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		String pwd=request.getParameter("password");
		if("123".equals(pwd)){
			//合法
			//向servletContext中添加属性
			//1,先取出
			String nums=(String) this.getServletContext().getAttribute("nums");
		
				//2,再+1
				this.getServletContext().setAttribute("nums",""+(Integer.parseInt(nums)+1));

			//3,在更新
			//这种提交方式,不能防止刷新带来的次数依然增加问题
//			request.getRequestDispatcher("/ok").forward(request, response);
			//这个方式可以简单的解决刷新问题
				response.sendRedirect("/counter/ok");
			
		}
		
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
this.doGet(request, response);
		}

初始化界面

public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
		//把ServletContext的值重新保存到文件
		//1,首先得到该文件的真实路径
				String filePath=this.getServletContext().getRealPath("record.text");
				//2,打开这个文件
				FileWriter filewriter = null;
				BufferedWriter bufferedreader = null;
				try {
					 filewriter=new FileWriter(filePath);
					//转换为 BufferedRaeder 效率更高
					bufferedreader=new BufferedWriter(filewriter);
					String nums=(String) this.getServletContext().getAttribute("nums");
					//从新写回文件
					bufferedreader.write(nums);
					
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}finally{
					//一定要要关闭流
					try {
						bufferedreader.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					try {
						filewriter.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
		
		
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
		//从record。text中读取浏览量
		//1,首先得到该文件的真实路径
		String filePath=this.getServletContext().getRealPath("record.text");
		//2,打开这个文件
		try {
			FileReader filereader=new FileReader(filePath);
			//转换为 BufferedRaeder 效率更高
			BufferedReader bufferedreader=new BufferedReader(filereader);
			String nums=bufferedreader.readLine();
			//把nums添加到servletContext中去
			this.getServletContext().setAttribute("nums",nums);
			//一定要要关闭流
			bufferedreader.close();
			filereader.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

登录成功界面

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("<h1>登录成功</h1>");
		String nums=this.getServletContext().getAttribute("nums").toString();
		out.println("该页面被访问了:"+nums+"次");
		
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
this.doGet(request, response);
	}

如果,服务器非正常关闭怎么办?
建议:使用线程,定时存写数据到文件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值