昨天闲着无聊,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 application stress tool 1.1
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 ...
Web Application Design
Ext.NET Web Application DevelopmentExt.NET Web Application DevelopmentExt.NET Web Application DevelopmentExt.NET Web Application DevelopmentExt.NET Web Application DevelopmentExt.NET Web Application ...
Web Application Stress Tool,微软官方的.web压力测试工具
如果你对WAS和Microsoft的另外一个测试工具Web Capacity Analysis Tool (WCAT)之间的差别感兴趣,可以访问Microsoft Web工具的比较页面。 要对网 站进行负载测试首先必须创建WAS脚本模拟用户活动。我们可以用下面...
Microsoft Web Application Stress Tool算是比较好用的windows平台的并发测试工具,欢迎下载.(包含安装说明)
一个文件,一个模块 模块内部 注册provider的不同语法 声明配置和运行块的语法 2.5 自动化测试 单元测试 剖析Jasmine测试 测试AngularJS对象 测试服务 测试控制器 Mock对象和异步...
Over 75% of network attacks are targeted at the web application layer. This book provides explicit hacks, tutorials, penetration tests, and step-by-step demonstrations for security professionals and ...
如果你对WAS和Microsoft的另外一个测试工具Web Capacity Analysis Tool (WCAT)之间的差别感兴趣,可以访问Microsoft Web工具的比较页面。 要对网 站进行负载测试首先必须创建WAS脚本模拟用户活动。我们可以用...
公司的Web服务器搭建完成,上线在即。...下面以Web Application Stress Tool(简称WAST)为例,介绍如何进行Web压力测试。这是由微软的网站测试人员开发的专门用来进行实际网站压力测试的一套工具。
Web Application Obfuscation英文版
web压力测试工具,web application stress tool
Web application security
Microsoft Web Application Stress Tool能有效测试一个网站的负载性能,这个软件可以通过脚本模拟100个强并发用户的访问,并模拟实际用户的一些点击操作,WAS还可以连接上远程Windows网站服务器的性能计数器
WebApplication1.rar
Web application struts 2. Web chay tren framework strut.