📄 用java servlet构建旗帜广告系统.txt
字号:
else
j = integer.intValue();
if(j >= vector.size()) {
j = 0;
i = j;
if(++j >= 3){
j = 0;
httpsession.putValue("bi", new Integer(j));
}
else
i = 0;
String s2 = (String)vector.elementAt(i);
String s3;
if(httpsession != null && (s3 = getUrl(hashtable, s2)) != null)
{
Hashtable hashtable1;
if((hashtable1 = (Hashtable)httpsession.getValue("旗帜广告系统 ,Wayne Zheng")) == null){
hashtable1 = new Hashtable();
hashtable1.put(s, s3);
httpsession.putValue("旗帜广告系统 ,Wayne Zheng", hashtable1);
}
if(hashtable.get("log") != null) {
writeLog(hashtable, s2, "v", httpservletrequest);
outputBanner(s2, hashtable, httpservletresponse);
vector = null;
}
private void writeLog(Hashtable logHashtable, String logString, String logString1, String logString2, HttpServletRequest httpservletrequest)//写日志的函数
{
String logString3 = (String)hashtable.get("log");
String logString4 = getLogString(logString, httpservletrequest) + " \"" + logString1 + "\"";
GregorianCalendar gregoriancalendar = new GregorianCalendar();
//获取当前的时间
gregoriancalendar.setTime(new Date());
String logString5 = logString3 + stringDate(gregoriancalendar) + logString2 + ".txt";//以时间戳和“c”或“v”为文件名来写日志文件
saveLog(hashtable, logString5, logString4);
}
private void writeLog(Hashtable logHashtable, String logString, String logString1, HttpServletRequest httpservletrequest) file://写日志文件
{
String logString2 = (String)logHashtable.get("log");
String logString3 = getLogString(logString, httpservletrequest);
GregorianCalendar gregoriancalendar = new GregorianCalendar();
gregoriancalendar.setTime(new Date());
String logString4 = logString2 + stringDate(gregoriancalendar) + logString1 + ".txt";
saveLog(logHashtable, logString4, logString3);
}
private void saveLog(Hashtable hashtable, String s, String s1)//把日志文件保存在硬盘上
{
synchronized(hashtable.get("log"))
{
try
{
FileWriter filewriter = new FileWriter(s, true);
PrintWriter printwriter = new PrintWriter(filewriter);
printwriter.println(s1);
printwriter.flush();
printwriter.close();
filewriter.close();
}
catch(Exception _ex) { }
}
}
private String getLogString(String s, HttpServletRequest httpservletrequest)
//取得日志字符串
{
String s1 = httpservletrequest.getRemoteAddr();
//取得远程的访问者的IP地址
String s2 = httpservletrequest.getHeader("User-Agent");
String s3 = httpservletrequest.getHeader("Referer");
String s4 = "\"" + s + "\"";
if(s1 == null)
s1 = "-";
if(s2 == null)
s2 = "-";
else
s2 = "\"" + s2 + "\"";
if(s3 == null)
s3 = "-";
else
s3 = "\"" + s3 + "\"";
return s1 + " [" + new Date() + "] " + s4 + " " + s3 + " " + s2;
}
private String stringDate(Calendar calendar) //取得时间戳
{
String s = String.valueOf(calendar.get(1));
String s1 = String.valueOf(calendar.get(2));
if(s1.length() == 1)
s1 = "0" + s1;
s = s + s1;
s1 = String.valueOf(calendar.get(5));
if(s1.length() == 1)
s1 = "0" + s1;
return s + s1;
}
private String getFileByUrl(Hashtable hashtable, String s)
{
for(Enumeration enumeration = hashtable.keys(); enumeration.hasMoreElements();)
//hashtable的keys()方法返回了哈希表关键字的枚举,enumeration的hasMoreElements()方法测试枚举重是否还有其他元素
{
String s1 = (String)enumeration.nextElement();
//让s1的值为enumeration的下一个元素值
if(s.equals(hashtable.get(s1)))//如果s的值为s1的值,则
return s1;//返回s1的值
}
return null;
}
private String getFirstSite(Hashtable hashtable)//取得第一个站点的名字
{
String s = (String)hashtable.get("dir");
File file = new File(s);
if(file == null)
return null;
String as[] = file.list();
Vector vector = getGraphFiles(as);
//设置Vector向量变量来获取图形文件
if(vector.size() == 0)//如果没有图形文件,则返回空值
return null;
else
return getUrl(hashtable, (String)vector.elementAt(0));
}
private String getUrl(Hashtable hashtable, String s)//取得URL
{
String s1 = s.toLowerCase();//设置s1为s的小写形式
for(Enumeration enumeration = hashtable.keys(); enumeration.hasMoreElements();)
{
String s2 = (String)enumeration.nextElement();
if(s1.equals(s2.toLowerCase()))
return (String)hashtable.get(s2);
}
return null;
}
private void outputBanner(String s, Hashtable hashtable, HttpServletResponse httpservletresponse)//输出banner广告
throws IOException//如果有错则抛出IOException错误
{
String s1 = (String)hashtable.get("dir") + s;
httpservletresponse.setHeader("Cache-control", "no-store");
httpservletresponse.setHeader("Pragma", "no-cache");
httpservletresponse.setDateHeader("Expires", 1L);
httpservletresponse.setContentType("image/" + s.substring(s.indexOf(".") + 1));
javax.servlet.ServletOutputStream servletoutputstream = httpservletresponse.getOutputStream();
dumpFile(s1, servletoutputstream);
servletoutputstream.flush();
servletoutputstream.close();
}
private boolean dumpFile(String s, OutputStream outputstream)
{
byte abyte0[] = new byte[4096];
boolean flag = true;
try
{
FileInputStream fileinputstream = new FileInputStream(s);
int i;
while((i = fileinputstream.read(abyte0)) != -1)
outputstream.write(abyte0, 0, i);
fileinputstream.close();
}
catch(Exception _ex)
{
flag = false;
}
return flag;
}
private Vector getGraphFiles(String as[])//获得图片文件
{
Vector vector = new Vector();
if(as == null)//如果as为空值,则返回vector中的值
return vector;
for(int i = 0; i < as.length; i++)//as.length为as[]数组长度
{
String s = as[i].toUpperCase();//设置图片文件文件名的每个字符为大写
if(isGraphFile(s))//如果为图片格式
vector.addElement(as[i]);//加入向量中
}
return vector;
}
private boolean isGraphFile(String stringFileName)
//判断文件是否为图形格式
{
int i = stringFileName.indexOf(".");//
if(i <= 0 || i == stringFileName.length() - 1)
return false;
//判断文件是否以GIF、JPG、JPEG或 PNG结尾
String stringExtendFileName1 = stringFileName.substring(i + 1);
return stringExtendFileName1.equals("GIF") || stringExtendFileName1.equals("JPG") || stringExtendFileName1.equals("JPEG") || stringExtendFileName1.equals("PNG");
}
private void errorMessage(String s, HttpServletResponse httpservletresponse)
throws IOException
{
httpservletresponse.setContentType("text/html");
PrintWriter out = httpservletresponse.getWriter();
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("
" + s + "
");
out.println("");
out.println("");
out.flush();
out.close();
}
private String getFromQuery(String strQuery, String strQuery1)
{
if(strQuery == null)
return "";
int i;
if((i = strQuery.indexOf(strQuery1)) < 0)
return "";
String strQuery2 = strQuery.substring(i + strQuery1.length());
if((i = strQuery2.indexOf("&")) < 0)
return strQuery2;
else
return strQuery2.substring(0, i);
}
public String getServletInfo()
{
return "旗帜广告系统 ,Wayne Zheng";
}
private static final String CPR = "? Wayne Zheng ";
private static final String DEFAULT_SITE = "www.yesky.com";
private static final String BANNER_SESSION = "旗帜广告系统 ,Wayne Zheng";
private static final String DIR = "dir";
private static final String LOG = "log";
private static final String BANNERINDEX = "bi";
private static final String EDITED = "edited";
private static final String VIEW_POSTFIX = "v";
private static final String CLICK_POSTFIX = "c";
private static final String CONFIG = "config";
private static final String MODE = "mode";
private static final String ID = "id";
private static final int BUFFER_SIZE = 4096;
static String separator = "/";
private static Hashtable cfgs;
private static Hashtable logs;
}
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( ProgramFan.Com )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -