1. 程式人生 > >統計站點訪問次數(ServletContext實現)(十一)

統計站點訪問次數(ServletContext實現)(十一)

com.it.demo.VisitServlet

package com.it.demo;

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

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

/**
 * 用於統計站點訪問次數
 * @author xie
 *
 */
public class VisitServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1.獲取ServletContext物件
		ServletContext context = this.getServletContext();
		//2.直接取出訪問次數
		Integer count = (Integer) context.getAttribute("count");
		//3.判斷count是否為null,如果為null,則說明是第一次訪問
		if(count == null) {
			count = 1;
		}else {
			count += 1;
		}
		//4.將count重新儲存
		context.setAttribute("count", count);
	}

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

}

com.it.demo.ShowServlet

package com.it.demo;

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

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

/**
 * 用於顯示站點訪問次數
 * @author xie
 *
 */
public class ShowServlet extends HttpServlet {


	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		//1.得到ServletContext
		ServletContext context = this.getServletContext();
		//2.取出訪問次數
		Integer count = (Integer)context.getAttribute("count");
		//3.寫出到頁面
		response.getWriter().write("站點被訪問" + count + "次");
	}

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

}

相關推薦

統計站點訪問次數ServletContext實現

com.it.demo.VisitServlet package com.it.demo; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConte

Java Web統計站點訪問次數並記錄訪問者的IP

<%@ page import="java.text.SimpleDateFormat" %> <%@ page import="java.util.Date" %> <%@ page import="java.util.Set" %> &

JSP簡單實現統計網頁訪問次數

setattr cat app spa int 應用 簡單 jsp 頁面 JSP簡單實現統計網頁訪問次數 需求:統計網頁的訪問次數 核心思想:利用application對象,將訪問次數的信息放入application對象中,每次訪問就+1。這裏利用了application對

分ip統計網站訪問次數

troy 服務啟動 工作 統計 地址 ext contain com ini package web.listener; import javax.servlet.ServletContext; import javax.servlet.ServletContextEv

Docker:Docker實戰部署HTTPS的Tomcat站點

pos 容器 image avi tor 基礎 oot stat ask 1、選擇基礎鏡像    docker pull tomcat:7.0-jre8 2、生成HTTPS證書   keytool -genkey -alias tomcat -keyalg RSA -key

學習筆記——數據庫的索引碎片、計劃緩存、統計信息

部分 null 文章 mage like 分享 show not 決定 1.索引碎片 數據庫存儲本身是無序的,建立了聚集索引,會按照聚集索引物理順序存入硬盤。既鍵值的邏輯順序決定了表中相應行的物理順序 而且在大多數的情況下,數據庫寫入頻率遠低於讀取頻率,索引的存在為了讀

Flaskflash與APScheduler 實現定時任務

.config spa ash ret cond 細節 bsp conf 視圖 from flask import Flask from flask_apscheduler import APScheduler # 引入APScheduler class Conf

text-stroke實現文字描邊鏤空、text-fill-color實現文字填充&漸變+animation實現流光字體

stroke 顏色 width mas key ani kit mat idt text-stroke:<‘ text-stroke-width ‘> || <‘ text-stroke-color ‘>(text-stroke-width:設置或檢

鏈表的操作自己實現的-c語言版

自己實現 main clas 一個 class node ret scan bsp 描述:pass #include<stdio.h> #include <stdlib.h> typedef struct _node{ int v

資料結構與演算法JavaScript描述讀書筆記js實現連結串列-單鏈表

單鏈表 //建立建構函式建立節點 function Node(element){ this.element = element; this.next = null; } //連結串列的建構函式 function LList(){ this.head = new Node

java基礎學習總結:自己寫一個java.lang.reflect.Proxy代理的實現

     動態代理裡面用到了一個類就是java.lang.reflect.Proxy,這個類是根據代理內容為傳入的介面生成代理用的。本文就自己寫一個Proxy類出來,功能和java.lang.reflect.Proxy一樣,傳入介面、代理內容,生成代理。  

Spring MVC 學習總結——IDEA+Maven+多模組實現SSM框架整合

一、SSM概要 與SSH(Struts/Spring/Hibernate/)一樣,Spring+SpringMVC+MyBatis也有一個簡稱SSM,Spring實現業務物件管理,Spring MVC負責請求的轉發和檢視管理, MyBatis作為資料物件持久化引擎。這樣搭配的優點是:輕量、自由度高、Spri

資料結構3--棧java實現棧的順序儲存

1.棧      棧也叫堆疊,是一種限制只能在某一端進行插入和刪除操作的線性表                          

搭建自己的部落格:通過django表單實現登入註冊

1、變化的部分 2、上程式碼: {# 引用模板 #} {% extends 'base.html' %} {% load staticfiles %} {% block header_extends %} <link rel="stylesheet" h

Go語言基礎—— 實現命令列引數對資料的簡單查詢小案例

案例要求: 結合命令列引數、複合型別、包管理、排序等知識,寫一個商品管理系統 商品屬性包括:整型商品ID(gid)、字串型名稱(name)、整型類別(cid)、浮點型價格(price) 自己造一些假資料,實現如下功能: shop.exe -cmd single -gi

Java併發:執行緒池實現原理 Java併發:阻塞佇列BlockingQueue Java併發:阻塞佇列BlockingQueue Java併發程式設計:執行緒池的使用

一、總覽 執行緒池類ThreadPoolExecutor的相關類需要先了解:  (圖片來自:https://javadoop.com/post/java-thread-pool#%E6%80%BB%E8%A7%88) Executor:位於最頂層,只有一個 execute(Runnab

Java併發:執行緒池實現原理

Java併發(二十一):執行緒池實現原理 一、總覽 執行緒池類ThreadPoolExecutor的相關類需要先了解:  (圖片來自:https://javadoop.com/post/java-thread-pool#%E6%80%BB%E8%A7%88) E

TCP/IP實現 UDP使用者資料報協議

一.已連線UDP       我們可以對UDP套接字呼叫connect進行連線,但與TCP連線的差別很大。UDP進行連線並不進行三次握手,核心只是核心只是檢查一些立即可知的錯誤(如一個顯然不可達的目的地),並將對端的IP地址和埠號記錄在PCB協議控制塊中,之後立即返

Django 統計網站訪問次數訪問 ip 、訪問端點及次數

個人部落格:http://www.iamnancy.top 有時候寫完部落格,想知道網站每天的訪問量,都有哪些人訪問,都是來自什麼地方的訪客,都訪問了哪些端點。 效果如下: 編寫 blog/models.py # 訪問網站的 ip 地址、端點和次數 class User

RabbitMQ訊息佇列-如何實現高可用

在前面講到了RabbitMQ高可用叢集的搭建,但是我們知道只是叢集的高可用並不能保證應用在使用訊息佇列時完全沒有問題,例如如果應用連線的RabbitMQ叢集突然宕機了,雖然這個叢集時可以使用的,但是應用訂閱的連線就斷開了,如果有個機房外網出口頻寬被挖掘機弄斷了,那叢集依然是不可用的。所以我們