Hit Counter Servlet
page counter hit
Muitas vezes, você pode estar interessado em saber a quantidade total de cliques em uma página específica do seu site. uso Servlet para calcular esses cliques são muito simples, porque o ciclo de vida de um recipiente Servlet pelo seu controle está sendo executado.
O que se segue é baseada na realização de uma vida Servlet passos simples contador de ciclos página hit a ser realizada:
- Inicializar uma variável global no método init ().
- Método Cada doGet call () ou doPost (), aumentamos variáveis globais.
- () Se desejar, você pode usar uma tabela de banco de dados para armazenar o valor da variável global destruir. Na próxima Servlet inicialização, este valor pode ser lido no método init (). Este passo é opcional.
- Se você quiser uma sessão uma vez que os página visitas contagem de sessão, use o método isNew () para verificar se a conversa sessão foi clicado na mesma página. Este passo é opcional.
- Você pode exibir o valor global do balcão, para mostrar o total de páginas de tráfego em seu site. Este passo é opcional.
Aqui, assumimos que o contêiner Web não pode ser reiniciado. Se você reiniciar ou Servlet está sendo destruído, o contador será reiniciado.
Exemplos
Este exemplo demonstra como implementar um contador de visitas simples página web:
package com.w3big.test; import java.io.IOException; import java.io.PrintWriter; 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 PageHitCounter */ @WebServlet("/PageHitCounter") public class PageHitCounter extends HttpServlet { private static final long serialVersionUID = 1L; private int hitCount; public void init() { // 重置点击计数器 hitCount = 0; } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); // 增加 hitCount hitCount++; PrintWriter out = response.getWriter(); String title = "总点击量"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" + "<h2 align=\"center\">" + hitCount + "</h2>\n" + "</body></html>"); } public void destroy() { // 这一步是可选的,但是如果需要,您可以把 hitCount 的值写入到数据库 } }
Agora vamos compilar o Servlet acima, e crie a seguinte entrada no arquivo web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>PageHitCounter</servlet-name> <servlet-class>com.w3big.test.PageHitCounter</servlet-class> </servlet> <servlet-mapping> <servlet-name>PageHitCounter</servlet-name> <url-pattern>/TomcatTest/PageHitCounter</url-pattern> </servlet-mapping> </web-app>
Agora, visitando http: para chamar o Servlet 8080 / TomcatTest / PageHitCounter: // localhost. Isto irá actualizar a página de cada vez, para aumentar o valor do contador 1, o resultado é o seguinte:
Número total de hits6 |
Site Hit Counter
Muitas vezes, você pode estar interessado em saber o tráfego total de todo o site. Em Servlet, isso é muito simples, podemos usar o filtro para fazer isso.
O seguinte é implementar um Web site do Ciclo de Vida baseado no filtro simples bater passos contra a tomar:
- () Para inicializar uma inicialização do filtro variável global.
- Cada métodos chamada doFilter, aumentaram as variáveis globais.
- Se desejar, você pode usar uma tabela de banco de dados () no filtro de destruir variável global para armazenar o valor. Próximo inicialização do filtro, o valor pode ser lido no método Init (), este passo é opcional.
Aqui, assumimos que o contêiner Web não pode ser reiniciado. Se você reiniciar ou Servlet está sendo destruído, o contador de visitas serão repostas.
Exemplos
Este exemplo demonstra como implementar um contador simples site de sucesso:
// 导入必需的 java 库 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class SiteHitCounter implements Filter{ private int hitCount; public void init(FilterConfig config) throws ServletException{ // 重置点击计数器 hitCount = 0; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException { // 把计数器的值增加 1 hitCount++; // 输出计数器 System.out.println("网站访问统计:"+ hitCount ); // 把请求传回到过滤器链 chain.doFilter(request,response); } public void destroy() { // 这一步是可选的,但是如果需要,您可以把 hitCount 的值写入到数据库 } }
Agora vamos compilar o Servlet acima, e crie a seguinte entrada no arquivo web.xml:
.... <filter> <filter-name>SiteHitCounter</filter-name> <filter-class>SiteHitCounter</filter-class> </filter> <filter-mapping> <filter-name>SiteHitCounter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ....
Agora acessar qualquer página de seu site, como http: // localhost: 8080 /. Esta vontade em qualquer página de cada vez que é clicado, o aumento no valor do contador de 1, ele irá exibir a seguinte mensagem no log:
网站访问统计: 1 网站访问统计: 2 网站访问统计: 3 网站访问统计: 4 网站访问统计: 5 ..................