昨天闲着无聊,2点左右开始犯困,想起来得有个把星期没写程序了,写点程序提提神吧^_^。
随便想想,就写个图像跟踪吧,把一个貌似图形的url复制到论坛上或者别的网页上,如果被自动加上<img src="一个定制的url" />,那么浏览器就会自动请求这个url,然后,我的服务器就会记住这个访问者。相当与是跟踪了哈。和“一统天下”的统计原理网站访问量的原理是一样的。
核心代码:把请求内容定义为图片,并且从默认流传输出去。核心代码很少,加上注释,不过100行+。使用java实现的话,就是写一个servlet,然后把这个servlet的url-partrern定义为*.jpg,呵呵,这就实现了移花接木的功能了,每次对jpg文件的请求,都会被转移到那个servlet里,然后在doGet或者doPost方法里面,就能够得到HttpServletRequest对象,然后你愿意记录什么就随意了,当然,最后别忘了把图像给人家传过去^_^。
方案一:最简单的方案,不使用数据库,使用文件保存访问记录,把所有的处理都放在doGet或者doPost里面。最简单,最不灵活。半个小时就能搞定。调试部署也就是一个小时-。
方案二:使用数据库记录访问记录。这样就要安装mysql,把数据库驱动jar放到正确的位置,还要建立数据表,在应用中建立连接操作数据库,写sql语句,释放资源等等。这些东西还是都写在doGet或者doPost里面,这时候已经比较乱了……。大概要多用半个小时。数据存储的还行,但是不具有扩展性。
我是从下面这个方案开始做的。
方案三:配置并使用数据连接池,建个表保存数据,同时:
建立类DBConnectionManager,用来连接数据源,getConnection方法。
建立类DBUtil,用来封装数据库操作,executeUpdate,executeQuery等。
建立类DataUtil,用来处理判断数据合法性。
建立类TrackData,将访问记录保存为一个类,包含三个字段,并且利用DataUtil,将数据类写成一个DAO。
然后,在doGet或者doPost里面加上:
TrackData ip = new TrackData(request, response);
ip.saveTrackData();
就ok了。
写完,测试,成功!因为已经进行了多次数据源配置,并且DBConnectionManager,DBUtil等类已经在别的地方写过,直接拖过来用的,大概时间用了一个半小时+。
改进:添加过滤ip列表(不用保存自己访问的记录),定义图像文件缓存(应对大访问量,呵呵)。
添加messages.properties
passedIP=127.0.0.1 211.87.227.95 211.87.209.99 imageRoot=C://Tomcat5x//webapps//TrackYou//images imageNames=clover.jpg
添加类Messages,封装对messages.properties的操作。
保存访问记录的那段代码就成了:
TrackData ip = new TrackData(request, response); if(DataUtil.isPassedIP(ip.getIP())){ return; } ip.saveTrackData();
改起来很繁琐,但是还是ok了,用了半个多小时。
方案四:然后觉得不爽,这样限制的太死了,于是想到了模仿事件驱动。
添加接口:VisitEvent,里面只有一个方法:onVisit,在在doGet或者doPost的时候触发此事件。
添加类VisitListen,实现接口VisitEvent。在onVisit方法里保存访问记录。
在Servlet里添加List VisitEventList,保存事件接口。
最大的麻烦就是添加事件监听,因为是Web Application,控制权在Tomcat手里,我无法决定怎么时候加载一个类,也就没办法控制什么时候执行static{}块。又不想把初始化的static{}块乱放。
于是添加Servlet:InitApplicationServlet,然后规定<load-on-startup>0</load-on-startup>,唯一作用就是执行static{}块,初始化应用程序。
static{ InitApplication(); }
到这里,算是比较完美了。
写完,发现核心的东西其实并不是最重要的,重要的是周边的。核心的东西,就好像OpenGL库,要想做出点东西,周边的东西是很重要的。
|
相关推荐
【标题】"WebApplication1.zip" 是一个包含Web应用程序资源的压缩文件,它很可能是一个基本的Web项目,可能由开发人员用于部署到Web服务器上运行。这个文件的名称表明这可能是一个初版或者示例应用,名为“Web...
"Microsoft Web Application Stress Tool"是一款由微软开发的压力测试工具,专为评估和测试Web应用程序的性能及稳定性而设计。这款工具能够模拟大量并发用户访问,从而揭示潜在的系统瓶颈、性能问题以及可能导致崩溃...
**Microsoft Web Application Stress Tool** 是一个专为Windows平台设计的高效并发测试工具,它主要用于评估Web应用程序在高负载条件下的性能和稳定性。该工具通过模拟大量用户同时访问应用,帮助开发者发现潜在的...
Web Application Stress Tool是由微软开发的一款专门用于测试Web应用程序性能和稳定性的工具。...不过,对于那些需要简单、快速进行Web应用压力测试的用户来说,Web Application Stress Tool仍然不失为一个实用的选择。
Damn Vulnerable Web Application (DVWA)(译注:可以直译为:"该死的"不安全Web应用网站),是一个编码糟糕的、易受攻击的 PHP/MySQL Web应用程序。 它的主要目的是帮助安全专业人员在合法的环境中,测试他们的技能和...
Prepare for the Pivotal Certified Spring Web Application Developer exam and learn about Spring MVC DispatcherServlet configuration, Spring MVC programming model essentials, Spring MVC views and form ...
**Microsoft Web Application Stress Tool** 是一个强大的性能测试工具,由微软公司开发,专门用于测试Web应用程序的稳定性和负载能力。这个工具的主要目的是模拟大量用户同时访问Web应用,以检查服务器在高压力下的...
在IT领域,Web应用是互联网技术的核心组成部分,而"WebApplication1.rar"很可能是一个包含了整个Web应用程序的压缩文件。这种类型的文件通常包含了一系列用于创建和运行Web应用的文件和资源,如HTML、CSS、...
如果你对WAS和Microsoft的另外一个测试工具Web Capacity Analysis Tool (WCAT)之间的差别感兴趣,可以访问Microsoft Web工具的比较页面。 要对网 站进行负载测试首先必须创建WAS脚本模拟用户活动。我们可以用下面...
总结来说,Web Application Stress Tool是微软提供的一个强大的Web应用性能测试工具,它通过模拟真实的用户负载,帮助我们评估和优化应用的性能。掌握其使用方法,对于提升Web应用的质量和用户体验具有重要意义。在...
一个文件,一个模块 模块内部 注册provider的不同语法 声明配置和运行块的语法 2.5 自动化测试 单元测试 剖析Jasmine测试 测试AngularJS对象 测试服务 测试控制器 Mock对象和异步...
公司的Web服务器搭建完成,上线在即。...下面以Web Application Stress Tool(简称WAST)为例,介绍如何进行Web压力测试。这是由微软的网站测试人员开发的专门用来进行实际网站压力测试的一套工具。
Web应用程序压力工具1.1是一款专门用于检测和评估Web应用性能和稳定性的工具。它通过模拟大量并发用户访问,来测试服务器、数据库和网络在高负载情况下的表现,帮助开发者和运维人员找出潜在的性能瓶颈,确保应用在...
在生产环境中部署web应用程序时,Tomcat卡死在Deploying web application步骤的问题是一个常见的问题。这个问题可能是由于多种原因引起的,包括但不限于securerandom.source[file:/dev/./urandom]没有指定、数据库...
### Web压力测试工具 Microsoft Web Application Stress Tool #### 引言 在互联网技术飞速发展的今天,网站和应用程序的性能成为了...对于希望深入了解Web应用性能测试的开发者来说,WAS无疑是一个值得尝试的选择。
【标题】"WebApplication1_C#_visualbasic_asp.net_" 涉及的是一个使用C#、Visual Basic和ASP.NET技术开发的Web应用程序示例。这个项目可能是一个基础的Web应用教程,展示了如何构建一个网站。 【描述】"sample on ...