文档章节

java实现页面访问量统计的实例,防刷新

明舞
 明舞
发布于 2014/08/19 19:37
字数 302
阅读 242
收藏 0

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.http.HttpSession;

public class Count extends HttpServlet
{
         public void doGet(HttpServletRequest request,HttpServletResponse response)
                 throws ServletException,IOException
         {
                 /*//得到当前web应用程序的上下文
                 ServletContext context=this.getServletContext();
                
                 //取出当前保存的属性
                 //如果此页面是第一次被访问,那些count为空,我们帮他初始化为1
                 //如果不是第一次被访问,那么就加1
                 Integer count=(Integer)context.getAttribute("count");
                 if(count==null)
                 {
                         count=new Integer(1);
                 }
                 else
                 {
                         count=new Integer(count.intValue()+1);
                 }*/
             
//             上面的方式是放到了context中,我可以放到session中
             HttpSession session=request.getSession();
             Integer count = (Integer)session.getAttribute("count");
             if(count==null){
                 count = 1;
             }else{
                 
                 if(session.getAttribute("ip")!=null&&!session.getAttribute("ip").equals(getRemortIP(request))){
                     count = new Integer(count.intValue())+1;
                 }
             }
                
                 //设置编码,不然中文会变成乱码
                 response.setContentType("text/html;charset=GB2312");

                 //得到输出流对象
                 PrintWriter out=response.getWriter();
                
                 out.println("<html><head><title>");
                 out.println("页面访问统计");
                 out.println("</title></head><body>");
                 out.println("当前页面被访问了");
                 out.println("<font color=red size=20>"+count+"</font>次");
                 //设置属性,将count保存到当前的上下文中
//                 context.setAttribute("count",count);
                 session.setAttribute("count",count);
                 session.setAttribute("ip",getRemortIP(request));
                 out.close();
         }
         
         /**
          * 获得客户端ip
          * @param request
          * @return
          */
         public String getRemortIP(HttpServletRequest request) {

             if (request.getHeader("x-forwarded-for") == null) {

                 return request.getRemoteAddr();

             }

             return request.getHeader("x-forwarded-for");

        } 

}

© 著作权归作者所有

明舞
粉丝 231
博文 424
码字总数 516555
作品 0
程序员
私信 提问
基于MongoDB MapReduce的统计分析

前面已经简单介绍了MongoDB在OECP社区的一个应用:动态消息的设计实现。在上次的应用中,我们只介绍了MongoDB最基本的查询的功能,今天我再介绍一下MongoDB更加高级的应用:用MongoDB做统计分...

菜根乱谭
2012/11/30
492
0
UAVStack功能上新:新增JVM监控分析工具

UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。 引言 作为...

宜信技术学院
10/15
1K
0
“Java 已死”简史

“Java已死”已经成为一个著名的口水战,挑起这场议论的人希望能有一种更酷的语言出现、流行。它有可能是D语言,4GL,Ruby,Groovy。 有这种愿望的人看起来在不断的增加。 这显示的是由Google估...

红薯
2012/02/18
11.9K
53
利用 Jython 与 Ajax 技术构建一个简单的 Web 应用程序

Ajax 是现如今构建互动性强,更为动态的 Web 应用程序的必备技术。而 Jython 是 Python 语言的纯 Java 实现,它结合了二者的优势,使用它可以作为服务器端的实现。本文以一个典型的用户注册应...

红薯
2011/01/16
1K
4
Controller 之间的跳转

在开发中,有时会遇到 controller 之间跳转的情况,而且有时在跳转的时候需要把不同的参数传递过去,比如从跳转到,再从到前端页面,并且把里的数据比如、、或者对象传递到页面,等等类似情况...

七弦桐
01/05
48
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 运行时获取方法参数名

本文整理 Java 运行时获取方法参数名的两种方法,Java 8 的最新的方法和 Java 8 之前的方法。 Java 8 的新特性 翻阅 Java 8 的新特性,可以看到有这么一条“JEP 118: Access to Parameter Na...

xiaomin0322
13分钟前
3
0
varchar和nvarchar有什么区别?

只是nvarchar支持多字节字符吗? 如果是这种情况,除了存储问题之外,使用varchars什么意义吗? #1楼 nVarchar将帮助您存储Unicode字符。 如果要存储本地化数据,这是可行的方法。 #2楼 nvar...

javail
16分钟前
3
0
如何通过curl调用使用HTTP请求发送标头?

我希望在Linux机器上向我的Apache服务器发送一个标头。 如何通过卷曲调用实现此目的? #1楼 得到: 使用JSON: curl -i -H "Accept: application/json" -H "Content-Type: application/json......

技术盛宴
32分钟前
4
0
SQL语句的执行过程

(一)架构组件 (二)执行流程

麦馍
37分钟前
4
0
如何快速核对Excel数据表?这样操作不同的数据一目了然

怎么快速的核对两个Excel数据表呢?组长给了同事两份报表让他在半小时内核对完毕,不同的地方要标记起来,这时候同事抱怨起来:“数据那么多半小时怎么够呢”?虽然嘴上在抱怨,但是他还是乖...

百因必有果
43分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部