分享
 
 
 

用JavaServlet构建旗帜广告系统

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

对于一个商务网站来说,广告系统是必不可少的。一个好的广告系统是一个网站稳定收入的基础。而旗帜广告(banner)则是网站广告中占绝大部分的广告,因此开发一个旗帜广告系统就非常重要了。利用Java Servlet 我们可以很轻松的构建属于我们自己的旗帜广告系统。

我们一般在网页上放上一些图片,设置它们的链接指向广告客户的网页,然后产生日志文件存放浏览的人数,浏览者的IP等信息,这就是开发旗帜广告系统的一般思路。

下面,我想结合一个例程来介绍一下如何使用Java Servlet来构建旗帜广告系统。这下面这个例子中,你必须使用在你的HTML文件中使用<IMG> 标签。

用法有三种是:

1) Banner?config_file 或Banner?config=config_file

例如:

<IMG height=125 src="http://localhost/servlet/Banner?config_file" width=125>

用这种方法你就可以显示不同的图片了。

2) 你也可以为每一幅图片设置自己的重定向URL。只需在你的设置中添加文件描述,见下面的例子,Servlet也需要更多的描述参数:

<IMG height=60 src="http://localhost/servlet/Banner?config=config_file&mode=1" width=468>

这样你就可以支持标准的旗帜广告了。

3)你也可以在同一个页面上有多个旗帜广告。你只需要在参数中加入“id=某个整数值”就可以了。这个值必须是一个你的页面内唯一的整数值!例如,对于第一个banner的描述为:

<IMG height=60 src="http://localhost/servlet/Banner?config=config_file&mode=1&id=1" width=468>

第二个为:

<IMG height=125 src="http://localhost/servlet/Banner?config=config_file&mode=1&id=2" width=125>

有的朋友会问了,config_file是什么文件呀? 它是一个文本文件,用来描述Servlet的设置信息。你能在你的主机的任何地方保存这个文件。现把参数介绍一下,这个配置文件有三个参数:分别为

1、dir=some_directory

解释: dir是你的旗帜广告文件存放的目录,可以使用的图片格式有JPG ,GIF,PNG ,JPEG等。这个参数是必须有的,否则系统会报错。

2、bannerfilename=some_url

解释: banner文件使用下面的格式,例如:

banner.gif=http://www.yesky.com/

banner.jpg=http://www.yesky.com/

3、log=some_directory_to_store_log_file

解释:存放日志文件的目录,可以是服务器上的任何目录。

附录1、日志文件(log file)及格式

Banner 系统每天会自动产生两个日志文件。分别为ddmmyyyyv.txt和ddmmyyyyc.txt 。第一个文件保存浏览banner的记录,第二个文件保存重定向的记录。两个文件都是文本文件,每一行包括一条记录。纪录格式是:

IP地址 日期 图片文件 用户代理 重定向记录 (只用于 *c.txt文件) ,字段之间用空格隔开。

附录2、Banner.java源程序:

import java.io.*;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class Banner extends HttpServlet

{

public Banner(){ }

file://读取配置文件内容

private boolean readConfig(String sConfig, Hashtable hashtable)

{

try

{

BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(new FileInputStream(sConfig)));// 设置缓冲区读入一个配置文件

String sLineInformation1;//

while((sLineInformation1 = bufferedreader.readLine()) != null)

{

sLineInformation1 = sLineInformation1.trim();//去除字符串中的空格

if(sLineInformation1.length() 0)//如果字符串sLineInformation1的长度大于零 {

int i = sLineInformation1.indexOf("=");

if(i 0 && i

hashtable.put(sLineInformation1.substring(0, i).trim().toLowerCase(), sLineInformation1.substring(i + 1).trim());

}

}

bufferedreader.close();

File file = new File(sConfig);//创建一个配置文件

hashtable.put("edited", String.valueOf(file.lastModified()));

}

catch(Exception _ex)

{

return false;

}

String sDirInfo2 = (String)hashtable.get("dir");//取得目录参数

if(sDirInfo2 != null)//如果目录参数是空值

{

if(!sDirInfo2.endsWith(separator))//如果sDirInfo2不是以分隔符结尾,那么

{

sDirInfo2 = sDirInfo2 + separator;//给sDirInfo2加上分隔符

hashtable.remove("dir");//移去哈希表变量中的dir

hashtable.put("dir", sDirInfo2);

}

File file1 = new File(sDirInfo2);

String as[] = file1.list();

if(as == null) {

hashtable.remove("dir");

}

sDirInfo2 = (String)hashtable.get("log");

if(sDirInfo2 != null)

{

if(!sDirInfo2.endsWith(separator))

{

sDirInfo2 = sDirInfo2 + separator;

hashtable.remove("log");

hashtable.put("log", sDirInfo2);

}

File file2 = new File(sDirInfo2);

String as1[] = file2.list();

if(as1 == null) {

hashtable.remove("log");

}

return true;

}

private Hashtable getConfig(String s)//取得配置

{

Hashtable hashtable = (Hashtable)cfgs.get(s);

if(hashtable != null)//如果配置不为空

try

{

String s1 = (String)hashtable.get("edited");

File file = new File(s);

if(!s1.equals(String.valueOf(file.lastModified()))){

file://如果s1的值不等于文件最后一次修改的值,则hashtable的内容为空值

hashtable = null;

}

catch(Exception _ex)//捕获Exception _ex错误

{

hashtable = null;

}

if(hashtable != null)

return hashtable;

hashtable = new Hashtable();

if(!readConfig(s, hashtable))

{

return null;

}

else

{

cfgs.put(s, hashtable);

return hashtable;

}

}

public void init(ServletConfig servletconfig)//初始化配置参数

throws ServletException {

file://如果出错,抛出一个ServletException错误

super.init(servletconfig);

separator = System.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有