jsp留言板源代码大全
jsp留言板源代码一: 给jsp初学者.
作 者: precom (皮蛋) oracle数据表创建.create table guestbook (
lw_title varchar2(100) not null, --留言主题 lw_author varchar2(20) not null, --网上大名 pk author_http varchar2(40) , --主页地址 author_email varchar2(40) not null,--电子信箱 pk expression varchar2(2) not null,--表情 lw_time varchar2(14) not null,--发表回应时间 answer_num number(3) not null,--回应数 click_num number(4) not null,--点击数 author_ip varchar2(16) ,--来源ip lw_class1 varchar2(10) not null,--留言板大类 pk lw_class2 varchar2(20) not null,--论坛栏目 pk lw_type varchar2(1) not null,--留言类别,即是否为主贴zt_time varchar2(14) ,--主贴时间
zt_author varchar2(40) ,--主贴email lw_content varchar2(4000) ,--内容 constraint pk_guestbook primary key(lw_class1,lw_class2,lw _time,lw_author) ) storage (initial 5M next 5M pctincrease 1);作 者: precom (皮蛋) 2000.12.10
guestbook.jsp
=========================== <html><head> <META content="text/html; charset=gb2312 " http-equiv=Content-Type><title>张家界电话黄页(网上114)</title></head>
<style type="text/css"> <!-- BODY { FONT-FAMILY: "宋体","Arial Narrow", "Times New Roman"; FONT-SI ZE: 9pt } .p1 { FONT-FAMILY: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZ E: 12pt } A:link { COLOR: #00793d; TEXT-DECORATION: none } A:visited { TEXT-DECORATION: none } A:hover { TEXT-DECORATION: underline} TD { FONT-FAMILY: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZE : 9pt } .p2 { FONT-FAMILY: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZ E: 9pt; LINE-HEIGHT: 150% } .p3 { FONT-FAMILY: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZ E: 9pt; LINE-HEIGHT: 120% }-->
</style><body>
<%@ page contentType="text/html; charset=GB2312" %> <%@ page language="java" import="java.sql.*" %> <jsp:useBean id="testInq" scope="page" class="ymbean.opDb" /> <% int pages=1; int pagesize=10; int count=0; int totalpages=0;
String countsql="",inqsql="",lwhere="",insertsql="",st="";
String lw_title="",lw_author="",pagetitle="",author_http="",author_e
mail="",lw_ico="", lw_content="",lw_class1=""; String author_ip="",lw_time="",lw_class2="",lw_type="",zt_time="",zt _author=""; int answer_num=0,click_num=0; int inquire_item=1; String inquire_itemt="",inquire_value=""; String lurlt="<a href=guestbook.jsp?",llink="";lwhere=" where lw_type='z' "; //只显示主贴
/*
Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); */ try{ //取显示的页页序数 pages = new Integer(request.getParameter("pages")).intValue(); } catch (Exception e) {} try{ //取查询参数 inquire_item=new Integer(request.getParameter("range")).intValu e(); inquire_value=new String(request.getParameter("findstr").getByt es("ISO8859_1")); if(inquire_item==0) inquire_itemt="lw_title"; else if(inquire_item==1) inquire_itemt="lw_content"; else if(inquire_item==2) inquire_itemt="lw_author"; else if(inquire_item==3) inquire_itemt="lw_time"; else if(inquire_item==4) inquire_itemt="lw_title"; lwhere=lwhere+" and "+inquire_itemt+" like '%"+inquire_value+"% '"; lurlt=lurlt+"range="+inquire_item+"&findstr="+inquire_value+"&" ;} catch (Exception e) {}
try{
//取得参数 留言内容 lw_class1=new String(request.getParameter("gbname").getBytes("ISO885 9_1")); lw_title=new String(request.getParameter("lw_title").getBytes("ISO88 59_1")); lw_author=new String(request.getParameter("lw_author").getBytes("ISO 8859_1")); pagetitle=new String(request.getParameter("pagetitle").getBytes("ISO 8859_1")); author_http=new String(request.getParameter("author_http").getBytes( "ISO8859_1")); author_email=new String(request.getParameter("author_email").getByte s("ISO8859_1")); lw_ico=request.getParameter("gifface"); lw_content=new String(request.getParameter("lw_content").getBytes("I SO8859_1")); String requestMethod=request.getMethod(); requestMethod=requestMethod.toUpperCase(); if(requestMethod.indexOf("POST")<0) { out.print("非法操作!"); return; }//形成其他数据项
author_ip=request.getRemoteAddr() ; lw_time=testInq.getCurrentDate("yyyyMMddHHmmss"); lw_class2="2"; lw_type=""+"z"; //主贴 zt_time=lw_time; zt_author=lw_author; answer_num=0; click_num=0; //================ st="','"; //保证留言所有数据项的长度在正常范围内 if(lw_title.length()>50) lw_title=lw_title.substring(0,50); if(lw_author.length()>20) lw_author=lw_author.substring(0,20); if(author_http.length()>40) author_http=author_http.substring(0,40);if(author_email.length()>50) author_email=author_email.substring(0,4
0); if(lw_content.length()>4000) lw_content=lw_content.substring(0,4000) ;insertsql="insert into guestbook values('"+lw_title+st+lw_author+st+
author_http+st+ author_email+st+lw_ico+st+lw_time+"',"+answer_num+","+cli ck_num+",'"+ author_ip+st+lw_class1+st+lw_class2+st+lw_type+st+zt_time +st+zt_author+st+ lw_content+"')"; //out.print(insertsql); //插入留言 try{ String lmsg=testInq.executeUpdate(insertsql); if(lmsg.indexOf("executeUpdate ok")<0) out.print("lmsg="+lmsg);}catch (Exception e) { out.print("错误:"+e);}
} catch (Exception e) {} %><%
//验证留言输入项合法性的javascript String ljs=" <SCRIPT language=JavaScript> "+ " <!-- "+ " function ValidInput() "+ " {if(document.sign.lw_author.value=="") "+ " {alert("请填写您的大名。"); "+ " document.sign.lw_author.focus(); "+ " return false;} "+ " if(document.sign.lw_title.value=="") "+ " {alert("请填写留言主题。"); "+ " document.sign.lw_title.focus(); "+ " return false;} "+ " if (document.sign.author_email.value!="") "+ " { if ((document.sign.author_email.value.indexOf("@")<0)//(document .sign.author_email.value.indexOf(":")!=-1)) "+ " {alert("您填写的EMail无效,请填写一个有效的Email!"); "+ " document.sign.author_emaill.focus(); "+ " return false; "+ " } "+ " } "+ " return true; "+ " } "+ " function ValidSearch() "+ " { if(document.frmsearch.findstr.value=="") "+ " {alert("不能搜索空串!"); "+ " document.frmsearch.findstr.focus(); "+ " return false;} "+ " } "+ " //--> "+ " </SCRIPT> "; out.print(ljs); %><%
//留言板界面首部 String ltop=" <DIV align=center> "+ " <CENTER> "+ " <FORM action=guestbook.jsp method=post name=frmsearch> "+ " <INPUT name=gbname type=hidden value=cnzjj_gt> "+ " <TABLE align=center border=0 cellSpacing=1 width="95%"> "+ " <TBODY> "+ " <TR> "+ " <TD bgColor=#336699 colSpan=2 width="100%"> "+ " <P align=center><FONT color=#ffffff face=楷体_GB2312 "+ " size=5>欢迎远方的朋友来张家界旅游观光</FONT></P></TD></TR> " + " <TR bgColor=#6699cc> "+ " <TD align=left noWrap width="50%">主页: <A "+ " href="http://www.zj.hn.cn" target=_blank><FONT "+ " color=#ffffff>张家界旅游</FONT></A> 管理员: <A " + " href="mailto:dzx@mail.zj.hn.cninfo.net"><FONT color=#ffffff> 一民</FONT></A> "+ " >><A "+ " href="http://www.zj.hn.cn "><FONT "+ " color=#ffffff>管理</FONT></A> >><A "+ " href=" http://www.zj.hn.cn "><FONT "+ " color=#ffffff>申请</FONT></A> </TD> "+ " <TD align=right width="50%"><SELECT class=ourfont name=range s ize=1> "+ " <OPTION selected value=0>按主题</OPTION> <OPTION value=1>按内 容</OPTION> "+ " <OPTION value=2>按作者</OPTION> <OPTION value=3>按日期</OPTI ON> <OPTION "+ " value=4>按主题&内容</OPTION></SELECT> <INPUT name=findst r> <INPUT name=search onclick="return ValidSearch()" type=submit val ue="搜 索"> "+ " </TD></TR></TBODY></TABLE></FORM> "+ " <HR align=center noShade SIZE=1 width="95%"> "+ " </CENTER></div> "; out.print(ltop); %><%
//显示最近时间发表的一页留言 countsql="select count(lw_title) from guestbook "+lwhere; inqsql ="select lw_title,answer_num,click_num,lw_author,lw_time,expres sion,"+ " author_email,lw_class1,lw_class2 from guestbook "+lwhere+" o rder by lw_time desc" ;if(pages>0)
{ try { try{ ResultSet rcount=testInq.executeQuery(countsql); if(rcount.next()) { count = rcount.getInt(1); } rcount.close(); } catch (Exception el1) { out.println("count record error : "+el1+"<br>" ); out.println(countsql); }totalpages=(int)(count/pagesize);
if(count>totalpages*pagesize) totalpages++; st=""+ " <TABLE align=center border=0 cellPadding=0 cellSpacing= 0 width="95%"> "+ " <TBODY> <TR> <TD align=middle bgColor=#97badd width="1 00%"><FONT color=#ff0000>"+ " 共 "+totalpages+" 页,"+count+" 条. "+" 当前页: "+pages+ " </FONT></TD></TR></TBODY></TABLE><BR> ";out.print(st);
//out.print(" 共 "+totalpages+" 页,"+
count+" 条. "+" 当前页: "+pages+"<br>");st=" <center> "+
" <TABLE border=0 cellPadding=2 cellSpacing=1 width="95%"> "+ " <TBODY> "+ " <TR> "+ " <TD align=middle bgColor=#6699cc width="55%"><FONT "+ " color=#ffffff>留言主题</FONT></TD> "+ " <TD align=middle bgColor=#6699cc width=50><FONT "+ " color=#ffffff>回应数</FONT></TD> "+ " <TD align=middle bgColor=#6699cc width=40><FONT "+ " color=#ffffff>点击数</FONT></TD> "+ " <TD align=middle bgColor=#6699cc width=100><FONT "+ " color=#ffffff>作者名</FONT></TD> "+ " <TD align=middle bgColor=#6699cc width=140><FONT "+ " color=#ffffff>发表/回应时间</FONT></TD></TR> "; out.print(st);if(count > 0 )
{ ResultSet rs = testInq.executeQuery(inqsql); ResultSetMetaData metaData = rs.getMetaData();int i;
// 跳过pages -1 页,使cursor指向pages并准备显示 for(i=1;i<=(pages - 1)*pagesize;i++) rs.next(); //显示第pages页开始 String linestr=""; for(i=1;i<=pagesize;i++) if(rs.next()) { lw_title=rs.getString("lw_title"); answer_num=rs.getInt("answer_num"); click_num=rs.getInt("click_num"); lw_author=rs.getString("lw_author"); lw_time=rs.getString("lw_time"); st=lw_time.substring(0,4)+"-"+lw_time.substring(4,6)+"-" +lw_time.substring(6,8)+":"+ lw_time.substring(8,10)+":"+lw_time.substring(10,12)+ ":"+lw_time.substring(12,14); lw_ico=rs.getString("expression"); author_email=rs.getString("author_email"); lw_class1=rs.getString("lw_class1"); lw_class2=rs.getString("lw_class2"); llink="reply.jsp?lw_class1="+lw_class1+"&lw_class2="+lw_ class2+"&zt_time="+lw_time+ "&zt_author="+author_email; linestr=" <TR bgColor=#d5e8fd> " + " <TD bgColor=#d5e8fd><IMG src=""+lw_ico+".gif "><A "+ " href=""+llink+" ">"+lw_title+"</A></TD> "+ " <TD align=middle>["+answer_num+"]</TD>"+ " <TD align=middle>"+click_num+"</TD>"+ " <TD align=middle><A href="mailto:"+author_ema il+"">"+lw_author+"</A></TD>"+ " <TD align=middle>"+st+"</TD></TR>";out.println(linestr);
}
rs.close(); //显示第pages页结束 st="</TBODY></TABLE><BR>"; out.print(st);int iFirst=1,iLast=totalpages,iPre,iNext;
if(pages<=1) iPre=1; else iPre=pages - 1;if(pages>=totalpages) iNext=totalpages;
else iNext=pages + 1;int n=(int)(count/pagesize);
if(n*pagesize<count) n++; if(n>1) { //for(i=1;i<=n;i++) out.print("<a href=inquire.jsp?pages= "+i+">"+i+" </a>"); //out.print("<HR align=center noShade SIZE=1 width="95% ">"); String lt1="返回主页",lt2="第一页",lt3="上一页",lt4="下一 页",lt5="最后一页",lt6=""; lt6="<a href=http://www.zj.hn.cn>"+ lt1 + " </ a>"+ lurlt + "pages="+iFirst+"><FONT color=red>"+lt2+"&nbs p; </a>"+ lurlt + "pages="+iPre+"><FONT color=red>"+lt3+" </a>" + lurlt + "pages="+iNext+"><FONT color=red>"+lt4+" ; </a>" + lurlt + "pages="+iLast+"><FONT color=red>"+lt5+" ; </a>"; st=""+ " <TABLE align=center border=0 cellPadding=0 cellSpacing= 0 width="95%"> "+ " <TBODY> <TR> <TD align=middle bgColor=#97badd width="1 00%"><FONT color=#ff0000>"+ lt6+ " </FONT></TD></TR></TBODY></TABLE><BR> ";out.print(st);
}
}
} catch (Exception e) { out.println("error: "+e); } }%>
<% //留言板界面尾部 String lbottom=""; lbottom=lbottom+ " "+ " <FORM action=guestbook.jsp method=post name=sign> "+ " <INPUT name=gbname type=hidden value=cnzjj_gt> "+ " <INPUT name=pages type=hidden value=1> "+ " <TABLE bgColor=#d5e8fd border=0 cellSpacing=1 width="95%"> "+
" <TBODY> "+
" <TR> "+ " <TD align=middle bgColor=#e6e6fa colSpan=2 noWrap><STRONG><FONT color=blue "+ " face=楷体_GB2312 size=5>发 表 意 见</FONT></STRONG> &nbs p; [加*的内容必须填写] </TD></TR> "+ " <TR> "+ " <TD noWrap width="45%"> "+ " <DIV align=left> "+ " <TABLE bgColor=#d5e8fd border=0 cellSpacing=1 width="100%"> "+ " <TBODY> "+ " <TR> "+ " <TD noWrap width="100%">*留言主题:<INPUT maxLength=40 n ame=lw_title "+ " size=36></TD></TR> "+ " <TR> "+ " <TD noWrap width="100%">*网上大名:<INPUT maxLength=18 n ame=lw_author "+ " size=36></TD></TR> "+ " <TR> "+ " <TD noWrap width="100%"> 主页标题:<INPUT maxLength =40 name=pagetitle "+ " size=36></TD></TR> "+ " <TR> "+ " <TD noWrap width="100%"> 主页地址:<INPUT maxLength =255 name=author_http "+ " size=36></TD></TR> "+ " <TR> "+ " <TD noWrap width="100%">*电子邮件:<INPUT maxLength=40 n ame=author_email "+ " size=36></TD></TR></TBODY></TABLE></DIV></TD> "+ " <TD noWrap vAlign=top width="55%"> "+ " <DIV align=left> "+ " <TABLE bgColor=#b6d7fc border=0 cellSpacing=1 width="100%"> "+ " <TBODY> "+ " <TR> "+ " <TD width="100%">请在下面填写你的留言:</TD></TR> "+" <TR> "+
" <TD width="100%"><TEXTAREA cols=50 name=lw_content rows= 7></TEXTAREA></TD></TR></TBODY></TABLE></DIV></TD></TR> "+ " <TR> "+ " <TD bgColor=#fbf7ea colSpan=2 noWrap>表情 "+ " <INPUT name=gifface type=radio value=1 checked><IMG "+ " alt="1.gif (152 bytes)" height=15 src="1.gif" width=15> <I NPUT "+ " name=gifface type=radio value=2><IMG alt="2.gif (174 bytes)" height=15 "+ " src="2.gif" width=15> <INPUT name=gifface type=radio value=3 ><IMG "+ " alt="3.gif (147 bytes)" height=15 src="3.gif" width=15> <I NPUT "+ " name=gifface type=radio value=4><IMG alt="4.gif (172 bytes)" height=15 "+ " src="4.gif" width=15> <INPUT name=gifface type=radio value=5 ><IMG "+ " alt="5.gif (118 bytes)" height=15 src="5.gif" width=15> <I NPUT "+ " name=gifface type=radio value=6><IMG alt="6.gif (180 bytes)" height=15 "+ " src="6.gif" width=15> <INPUT name=gifface type=radio value=7 ><IMG "+ " alt="7.gif (180 bytes)" height=15 src="7.gif" width=15> <I NPUT "+ " name=gifface type=radio value=8><IMG alt="8.gif (96 bytes)" height=15 "+ " src="8.gif" width=15> <INPUT name=gifface type=radio value=9 ><IMG "+ " alt="9.gif (162 bytes)" height=15 src="9.gif" width=15> <I NPUT "+ " name=gifface type=radio value=10><IMG alt="10.gif (113 bytes) " height=15 "+ " src="10.gif" width=15> <INPUT name=gifface type=radio value= 11><IMG "+ " alt="11.gif (93 bytes)" height=15 src="11.gif" width=15> < INPUT "+ " name=gifface type=radio value=12> <IMG alt="12.gif (149 bytes )" height=14 "+ " src="12.gif" width=15> "+ " <INPUT "+ " name=gifface type=radio value=13> <IMG alt="13.gif (149 bytes )" height=14 "+ " src="13.gif" width=15> "+ " <INPUT "+ " name=gifface type=radio value=14> <IMG alt="14.gif (149 bytes )" height=14 "+ " src="14.gif" width=15> "+ " <INPUT "+ " name=gifface type=radio value=15> <IMG alt="15.gif (149 bytes )" height=14 "+ " src="15.gif" width=15> "+ " <INPUT "+ " name=gifface type=radio value=16> <IMG alt="16.gif (149 bytes )" height=14 "+ " src="16.gif" width=15> </TD> "+ " </TR> "+ " <TR> "+ " <TD align=middle colSpan=2 noWrap><INPUT name=cmdGO onclick="re turn ValidInput()" type=submit value="提 交"> "+" <INPUT name=cmdPrev onclick="return ValidInput()" type=submit valu
e="预 览"> "+ " <INPUT name=cmdCancel type=reset value="重 写"> <INPU T name=cmdBack onclick=javascript:history.go(-1) type=button value="返 回"> "+ " </TD></TR></TBODY></TABLE></FORM></CENTER></DIV> "; out.print(lbottom);%>
</body></html>
作 者: precom (皮蛋) 2000.12.10 reply.jsp ==================================== <html><head> <META content="text/html; charset=gb2312 " http-equiv=Content-Type>
<title>张家界电话黄页(网上114)</title></head>
<style type="text/css"> <!-- BODY { FONT-FAMILY: "宋体","Arial Narrow", "Times New Roman"; FONT-SI ZE: 9pt } .p1 { FONT-FAMILY: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZ E: 12pt } A:link { COLOR: #00793d; TEXT-DECORATION: none } A:visited { TEXT-DECORATION: none } A:hover { TEXT-DECORATION: underline} TD { FONT-FAMILY: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZE : 9pt } .p2 { FONT-FAMILY: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZ E: 9pt; LINE-HEIGHT: 150% } .p3 { FONT-FAMILY: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZ E: 9pt; LINE-HEIGHT: 120% }-->
</style><body>
<%@ page contentType="text/html; charset=GB2312" %> <%@ page language="java" import="java.sql.*" %> <jsp:useBean id="testInq" scope="page" class="ymbean.opDb" /> <% int pages=1; int pagesize=10; int count=0; int totalpages=0;
String countsql="",inqsql="",updatesql="",lwhere="",insertsql="",st=
"";String lw_title="",lw_author="",pagetitle="",author_http="",author_e
mail="",lw_ico="0", lw_content="",lw_class1=""; String author_ip="",lw_time="",lw_class2="",lw_type="",zt_time="",zt _author=""; int answer_num=0,click_num=0; int inquire_item=1; String inquire_itemt="",inquire_value=""; String lurlt="<a href=reply.jsp?";lwhere=" where "; //只显示主贴
/*
Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); */ try{ //取显示的页页序数 pages = new Integer(request.getParameter("pages")).intValue(); } catch (Exception e) {} try{ //取查询参数 lw_class1=new String(request.getParameter("lw_class1").getBytes ("ISO8859_1")); lw_class2=new String(request.getParameter("lw_class2").getBytes ("ISO8859_1")); zt_time=new String(request.getParameter("zt_time").getBytes("IS O8859_1")); zt_author=new String(request.getParameter("zt_author").getBytes ("ISO8859_1"));lwhere=" where ( lw_class1='"+lw_class1+"' and lw_class2='"+lw_
class2+ "' and (lw_time='"+ zt_time+"' or zt_time='"+zt_time+ "') and (author_email='"+zt_author+"' or zt_author='"+zt _author+"') ) "; lurlt=lurlt+"lw_class1="+lw_class1+"&lw_class2="+lw_class2+"&zt _time="+zt_time+ "&zt_author="+zt_author+"&"; //out.print(lwhere); } catch (Exception e) { //out.print("error1: "+e+"<hr>"); }try{
//取得参数 留言内容 lw_class1=new String(request.getParameter("lw_class1").getBytes("ISO 8859_1")); lw_class2=new String(request.getParameter("lw_class2").getBytes("ISO 8859_1")); lw_title=new String(request.getParameter("lw_title").getBytes("ISO88 59_1")); lw_author=new String(request.getParameter("lw_author").getBytes("ISO 8859_1")); pagetitle=new String(request.getParameter("pagetitle").getBytes("ISO 8859_1")); author_http=new String(request.getParameter("author_http").getBytes( "ISO8859_1")); author_email=new String(request.getParameter("author_email").getByte s("ISO8859_1")); zt_time=new String(request.getParameter("zt_time").getBytes("ISO8859 _1")); zt_author=new String(request.getParameter("zt_author").getBytes("ISO 8859_1")); lw_ico=request.getParameter("gifface");} catch (Exception e) {}
try{
lw_content=new String(request.getParameter("lw_content").getBytes("I SO8859_1")); String requestMethod=request.getMethod(); requestMethod=requestMethod.toUpperCase(); if(requestMethod.indexOf("POST")<0) { out.print("非法操作!"); return; }//形成其他数据项
author_ip=request.getRemoteAddr() ; lw_time=testInq.getCurrentDate("yyyyMMddHHmmss"); lw_type=""+"c"; //从贴 answer_num=0; click_num=0; //================ st="','"; //保证留言所有数据项的长度在正常范围内 if(lw_title.length()>50) lw_title=lw_title.substring(0,50); if(lw_author.length()>20) lw_author=lw_author.substring(0,20); if(author_http.length()>40) author_http=author_http.substring(0,40);if(author_email.length()>50) author_email=author_email.substring(0,4
0); if(zt_author.length()>50) zt_author=zt_author.substring(0,40); if(lw_content.length()>4000) lw_content=lw_content.substring(0,4000) ;insertsql="insert into guestbook values('"+lw_title+st+lw_author+st+
author_http+st+ author_email+st+lw_ico+st+lw_time+"',"+answer_num+","+cli ck_num+",'"+ author_ip+st+lw_class1+st+lw_class2+st+lw_type+st+zt_time +st+zt_author+st+ lw_content+"')"; //out.print(insertsql); //插入留言 try{ st=testInq.executeUpdate(insertsql); if(st.indexOf("executeUpdate ok")<0) out.print("msg="+st); else { updatesql="update guestbook set answer_num=answer_num + 1 "+l where; //增加回复人数统计 try{ st=testInq.executeUpdate(updatesql); if(st.indexOf("executeUpdate ok")<0) out.print("msg="+st); }catch (Exception e) { } } }catch (Exception e) { out.print("留言出错:"+e);} } catch (Exception e) {} %><%
//验证留言输入项合法性的javascript String ljs=" <SCRIPT language=JavaScript> "+ " <!-- "+ " function ValidInput() "+ " {if(document.sign.lw_author.value=="") "+ " {alert("请填写您的大名。"); "+ " document.sign.lw_author.focus(); "+ " return false;} "+ " if(document.sign.lw_title.value=="") "+ " {alert("请填写留言主题。"); "+ " document.sign.lw_title.focus(); "+ " return false;} "+ " if (document.sign.author_email.value!="") "+ " { if ((document.sign.author_email.value.indexOf("@")<0)//(document .sign.author_email.value.indexOf(":")!=-1)) "+ " {alert("您填写的EMail无效,请填写一个有效的Email!"); "+ " document.sign.author_emaill.focus(); "+ " return false; "+ " } "+ " } "+ " return true; "+ " } "+ " function ValidSearch() "+ " { if(document.frmsearch.findstr.value=="") "+ " {alert("不能搜索空串!"); "+ " document.frmsearch.findstr.focus(); "+ " return false;} "+ " } "+ " //--> "+ " </SCRIPT> "; out.print(ljs); %><% //显示最近时间发表的一页留言 countsql="select count(lw_title) from guestbook "+lwhere; inqsql ="select lw_title,lw_author,lw_time,lw_content,author_ip, "+ " author_email from guestbook "+lwhere+" order by lw_time desc " ; updatesql="update guestbook set click_num=click_num + 1 "+lwhere;
//增加浏览人数统计
try{ st=testInq.executeUpdate(updatesql); if(st.indexOf("executeUpdate ok")<0) out.print("msg="+st); }catch (Exception e) { }//out.print(inqsql);
if(pages>0) { try { try{ ResultSet rcount=testInq.executeQuery(countsql); if(rcount.next()) { count = rcount.getInt(1); } rcount.close(); } catch (Exception el1) { out.println("count record error : "+el1+"<br>" ); out.println(countsql); }totalpages=(int)(count/pagesize);
if(count>totalpages*pagesize) totalpages++; st=""+ " <TABLE align=center border=0 cellPadding=0 cellSpacing= 0 width="95%"> "+ " <TBODY> <TR> <TD align=middle bgColor=#97badd width="1 00%"><FONT color=#ff0000>"+ " 共 "+totalpages+" 页,"+count+" 条. "+" 当前页: "+pages+ " </FONT></TD></TR></TBODY></TABLE><BR> ";out.print(st);
//out.print(" 共 "+totalpages+" 页,"+
count+" 条. "+" 当前页: "+pages+"<br>");st=" <center> "+
" <TABLE border=0 cellPadding=2 cellSpacing=1 width="95%"> "+ " <TBODY> "+ " <TR> "+ " <TD align=middle bgColor=#6699cc width="55%"><FONT "+ " color=#ffffff>留言主题</FONT></TD> "+ " <TD align=middle bgColor=#6699cc width=50><FONT "+ " color=#ffffff>回应数</FONT></TD> "+ " <TD align=middle bgColor=#6699cc width=40><FONT "+ " color=#ffffff>点击数</FONT></TD> "+ " <TD align=middle bgColor=#6699cc width=100><FONT "+ " color=#ffffff>作者名</FONT></TD> "+ " <TD align=middle bgColor=#6699cc width=140><FONT "+ " color=#ffffff>发表/回应时间</FONT></TD></TR> "; //out.print(st);if(count > 0 )
{ ResultSet rs = testInq.executeQuery(inqsql); ResultSetMetaData metaData = rs.getMetaData();int i;
// 跳过pages -1 页,使cursor指向pages并准备显示 for(i=1;i<=(pages - 1)*pagesize;i++) rs.next(); //显示第pages页开始 st= " <CENTER> <TABLE border=0 cellSpacing=1 width="95%" > <TBODY> "; out.print(st); String linestr=""; for(i=1;i<=pagesize;i++) if(rs.next()) { lw_title=rs.getString("lw_title"); lw_author=rs.getString("lw_author"); lw_time=rs.getString("lw_time"); lw_content=rs.getString("lw_content"); author_ip=rs.getString("author_ip"); author_email=rs.getString("author_email"); st=lw_time.substring(0,4)+"-"+lw_time.substring(4,6)+"-" +lw_time.substring(6,8)+":"+ lw_time.substring(8,10)+":"+lw_time.substring(10,12)+ ":"+lw_time.substring(12,14); try{lw_content=testInq.addBr(testInq.removeComment(lw_co ntent));} catch (Exception e) {} linestr =""+ " <TR bgColor=#bed9fc> "+ " <TD align=left width="75%"><FONT "+ " color=#0000cd>留言主题:</FONT><STRONG>" +lw_title+"</STRONG></TD> "+ " <TD align=left width="25%"><FONT color= #0000cd>留言时间:</FONT>"+st+"</TD></TR> "+ " <TR bgColor=#e7f1fe> "+ " <TD colSpan=2 "+ " width="700" wrap=yes><BR>"+lw_content+" <BR><br></TD></TR> "+ " <TR bgColor=#bed9fc> "+ " <TD align=right colSpan=2 width="100%"> <FONT "+ " color=#0000cd>作者:</FONT>"+lw_author+" <FONT "+ " color=#0000cd>来源:</FONT>"+author_ip+" </TD></TR>"; out.println(linestr);}
rs.close(); //显示第pages页结束 st= " </TBODY></TABLE></CENTER></DIV><BR> "+" <CENTER><A "+
" href="guestbook.jsp"><FONT "+ " color=blue face=楷体_GB2312 size=4>返回留言板 首页</FONT></A></CENTER><BR> "+ " <HR align=center noShade SIZE=1 width="95%" > ";out.print(st);
int iFirst=1,iLast=totalpages,iPre,iNext;
if(pages<=1) iPre=1; else iPre=pages - 1;if(pages>=totalpages) iNext=totalpages;
else iNext=pages + 1;int n=(int)(count/pagesize);
if(n*pagesize<count) n++; if(n>1) { //for(i=1;i<=n;i++) out.print("<a href=inquire.jsp?pages= "+i+">"+i+" </a>"); //out.print("<HR align=center noShade SIZE=1 width="95% ">"); String lt1="返回主页",lt2="第一页",lt3="上一页",lt4="下一 页",lt5="最后一页",lt6=""; lt6="<a href=http://www.zj.hn.cn>"+ lt1 + " </ a>"+ lurlt + "pages="+iFirst+"><FONT color=red>"+lt2+"&nbs p; </a>"+ lurlt + "pages="+iPre+"><FONT color=red>"+lt3+" </a>" + lurlt + "pages="+iNext+"><FONT color=red>"+lt4+" ; </a>" + lurlt + "pages="+iLast+"><FONT color=red>"+lt5+" ; </a>"; st=""+ " <TABLE align=center border=0 cellPadding=0 cellSpacing= 0 width="95%"> "+ " <TBODY> <TR> <TD align=middle bgColor=#97badd width="1 00%"><FONT color=#ff0000>"+ lt6+ " </FONT></TD></TR></TBODY></TABLE><BR> ";out.print(st);
}
}
} catch (Exception e) { out.println("error: "+e); } }%>
<% //留言板界面尾部 String lbottom=""; lbottom=lbottom+ " <center> "+ " <FORM action=reply.jsp method=post name=sign> "+ " <INPUT name=lw_class1 type=hidden value=cnzjj_gt> "+ " <INPUT name=lw_class2 type=hidden value="+lw_class2+"> " + " <INPUT name=pages type=hidden value=1> "+ " <INPUT name=zt_time type=hidden value="+zt_time+"> "+ " <INPUT name=zt_author type=hidden value="+zt_author+"> " + " <TABLE bgColor=#d5e8fd border=0 cellSpacing=1 width="95%"> "+
" <TBODY> "+
" <TR> "+ " <TD align=middle bgColor=#e6e6fa colSpan=2 noWrap><STRONG><FONT color=blue "+ " face=楷体_GB2312 size=5>发 表 意 见</FONT></STRONG> &nbs p; [加*的内容必须填写] </TD></TR> "+ " <TR> "+ " <TD noWrap width="45%"> "+ " <DIV align=left> "+ " <TABLE bgColor=#d5e8fd border=0 cellSpacing=1 width="100%"> "+ " <TBODY> "+ " <TR> "+ " <TD noWrap width="100%">*留言主题:<INPUT maxLength=40 n ame=lw_title "+ " size=36></TD></TR> "+ " <TR> "+ " <TD noWrap width="100%">*网上大名:<INPUT maxLength=18 n ame=lw_author "+ " size=36></TD></TR> "+ " <TR> "+ " <TD noWrap width="100%"> 主页标题:<INPUT maxLength =40 name=pagetitle "+ " size=36></TD></TR> "+ " <TR> "+ " <TD noWrap width="100%"> 主页地址:<INPUT maxLength =255 name=author_http "+ " size=36></TD></TR> "+ " <TR> "+ " <TD noWrap width="100%">*电子邮件:<INPUT maxLength=40 n ame=author_email "+ " size=36></TD></TR></TBODY></TABLE></DIV></TD> "+ " <TD noWrap vAlign=top width="55%"> "+ " <DIV align=left> "+ " <TABLE bgColor=#b6d7fc border=0 cellSpacing=1 width="100%"> "+ " <TBODY> "+ " <TR> "+ " <TD width="100%">请在下面填写你的留言:</TD></TR> "+" <TR> "+
" <TD width="100%"><TEXTAREA cols=50 name=lw_content rows= 7></TEXTAREA></TD></TR></TBODY></TABLE></DIV></TD></TR> "+ " <TR> "+ " <TD bgColor=#fbf7ea colSpan=2 noWrap>表情 "+ " <INPUT name=gifface type=radio value=1 checked><IMG "+ " alt="1.gif (152 bytes)" height=15 src="1.gif" width=15> <I NPUT "+ " name=gifface type=radio value=2><IMG alt="2.gif (174 bytes)" height=15 "+ " src="2.gif" width=15> <INPUT name=gifface type=radio value=3 ><IMG "+ " alt="3.gif (147 bytes)" height=15 src="3.gif" width=15> <I NPUT "+ " name=gifface type=radio value=4><IMG alt="4.gif (172 bytes)" height=15 "+ " src="4.gif" width=15> <INPUT name=gifface type=radio value=5 ><IMG "+ " alt="5.gif (118 bytes)" height=15 src="5.gif" width=15> <I NPUT "+ " name=gifface type=radio value=6><IMG alt="6.gif (180 bytes)" height=15 "+ " src="6.gif" width=15> <INPUT name=gifface type=radio value=7 ><IMG "+ " alt="7.gif (180 bytes)" height=15 src="7.gif" width=15> <I NPUT "+ " name=gifface type=radio value=8><IMG alt="8.gif (96 bytes)" height=15 "+ " src="8.gif" width=15> <INPUT name=gifface type=radio value=9 ><IMG "+ " alt="9.gif (162 bytes)" height=15 src="9.gif" width=15> <I NPUT "+ " name=gifface type=radio value=10><IMG alt="10.gif (113 bytes) " height=15 "+ " src="10.gif" width=15> <INPUT name=gifface type=radio value= 11><IMG "+ " alt="11.gif (93 bytes)" height=15 src="11.gif" width=15> < INPUT "+ " name=gifface type=radio value=12> <IMG alt="12.gif (149 bytes )" height=14 "+ " src="12.gif" width=15> "+ " <INPUT "+ " name=gifface type=radio value=13> <IMG alt="13.gif (149 bytes )" height=14 "+ " src="13.gif" width=15> "+ " <INPUT "+ " name=gifface type=radio value=14> <IMG alt="14.gif (149 bytes )" height=14 "+ " src="14.gif" width=15> "+ " <INPUT "+ " name=gifface type=radio value=15> <IMG alt="15.gif (149 bytes )" height=14 "+ " src="15.gif" width=15> "+ " <INPUT "+ " name=gifface type=radio value=16> <IMG alt="16.gif (149 bytes )" height=14 "+ " src="16.gif" width=15> </TD> "+ " </TR> "+ " <TR> "+ " <TD align=middle colSpan=2 noWrap><INPUT name=cmdGO onclick="re turn ValidInput()" type=submit value="提 交"> "+" <INPUT name=cmdPrev onclick="return ValidInput()" type=submit valu
e="预 览"> "+ " <INPUT name=cmdCancel type=reset value="重 写"> <INPU T name=cmdBack onclick=javascript:history.go(-1) type=button value="返 回"> "+ " </TD></TR></TBODY></TABLE></FORM></CENTER></DIV> "; out.print(lbottom);%>
</body></html>
作 者: precom (皮蛋) 2000.12.10
作 者: precom (皮蛋)
其中的opDb.java ============================================ package ymbean;import java.sql.*;
import java.util.*; import java.text.*; import com.chinazjj.sql.dsql; import com.chinazjj.util.dutil;//其他的包dsql,dutil中的内容我就不再贴了,在本文件中用到的两个函数都很简
单
public class opDb {private String inquire_value="",inquire_item="",disptype="",inqtyp
e="";
private String inquire_num="",inquire_addr="",inquire_name=""; private dutil ldutil=new dutil(); public opDb() {}
public void setinquire_item(String name) { inquire_item= name
;}
public void setinquire_value( String name ) { inquire_value = ldutil.chineseToUnicode(name);}
public void setdisptype(String name) { disptype=name;} public void setinqtype(String name) { inqtype=name;}public void setinquire_num( String name ) { inquire_num = ldutil.c
hineseToUnicode(name);}
public void setinquire_addr( String name ) { inquire_addr = ldutil.chineseToUnicode(name);}
public void setinquire_name( String name ) { inquire_name = ldutil.chineseToUnicode(name);}
public String getinquire_dndata()
{ return ""; }public ResultSet executeQuery(String sql)
{ ResultSet rs = null; Statement lstmt = null; try { lstmt = connectdb(); rs = lstmt.executeQuery(sql); System.out.println("executeQuery: "+sql); } catch(SQLException ex) { System.err.println("executeQuery: " +ex.getMessage());}
return rs; }public Statement getStmt()
{ Statement lstmt = null; lstmt = connectdb(); return lstmt; }public String executeUpdate(String sql)
{ ResultSet rs = null; Statement lstmt = null; try { lstmt = connectdb(); lstmt.executeUpdate(sql); System.out.println("executeUpdate: "+sql); lstmt.executeUpdate("commit"); } catch(SQLException ex) { System.err.println("executeQuery: " + ex.getMessage());
return(ex.getMessage()); } return("executeUpdate ok"); }public Statement connectdb()
{Statement lstmt=null;
Connection conn=null;final String connect_string="jdbc:oracle:thin:scott/tiger@192.168.
0.1:1521:clubdb";
final String driver_string="oracle.jdbc.driver.OracleDriver"; dsql mysql=new dsql(); lstmt=mysql.dconnectdb(driver_string,connect_string); return lstmt; }public Statement connectdb(String connect_string)
{ Statement lstmt=null; Connection conn=null;final String driver_string="oracle.jdbc.driver.OracleDriver";
dsql mysql=new dsql(); lstmt=mysql.dconnectdb(driver_string,connect_string); return lstmt; }//=========other function ===================================
public String getCurrentDate(String ldateform)
{ return(new SimpleDateFormat(ldateform).format(new java.util.Date()));
}//========"/n" to "<br>" =====================================
//去掉奇怪的: public String removeComment(String Content){ String makeContent=new String(); StringTokenizer strToken=new StringTokenizer(Content," "); String tempToken=null;while(strToken.hasMoreTokens()){
tempToken=strToken.nextToken(); if(tempToken.indexOf(":")!=0) makeContent=makeContent+tempToken+" "; } return makeContent; }//将/n转换成为回车<br>
public String addBr(String Content){ String makeContent=new String(); StringTokenizer strToken=new StringTokenizer(Content," "); while(strToken.hasMoreTokens()){ makeContent=makeContent+"<br>"+strToken.nextToken(); } return makeContent; }//将<br>转换成为回车/n
public String addCr(String Content){ String makeContent=new String(); StringTokenizer strToken=new StringTokenizer(Content,"<br>"); while(strToken.hasMoreTokens()){ makeContent=makeContent+" "+strToken.nextToken(); } return makeContent; }//====================================================================
=====
public boolean getIdentify(String name1,String pwd1) { try { String sql="select * from club_users where username='" + name1 + "'and password='" + pwd1 + "'";
ResultSet rs = executeQuery(sql); if(rs.next()) { rs.close(); return(true);} else { rs.close();return(false);} }catch (Exception e) { return(false);} }public void counts(String pagename)
{ executeUpdate("update call_count set counts=counts + 1 where pagename='"+pagename+"'");
}
//==================张家界市民虚拟社区管理============================
======
public String getDeptSuper(String vp) //取版主 { String vst="未知"; try{ String sql="select administrator from club_cvcdept where deptno='"+vp+"'";
ResultSet rs = executeQuery(sql); if(rs.next()) vst=rs.getString(1); rs.close(); } catch (Exception e) {} return vst; } public String getDeptName(String vp) //取版名 { String vst="未知"; try{ String sql="select deptnote from club_cvcdept where deptno='"+vp+"'";
ResultSet rs = executeQuery(sql); if(rs.next()) vst=rs.getString(1); rs.close(); } catch (Exception e) {} return vst; }public String getUserEmail(String vp) //取社区用户email
{ String vst="未知"; try{ String sql="select email from club_users where username='"+vp+"'";
ResultSet rs = executeQuery(sql); if(rs.next()) vst=rs.getString(1); rs.close(); } catch (Exception e) {} return vst; }public Object getaValue(String vp) //取社区用户email及其他
{ Object vst=null; try{ String sql=vp; ResultSet rs = executeQuery(sql); if(rs.next()) vst=rs.getObject(1); rs.close(); } catch (Exception e) {} return vst; }public String getsValue(String vp) //取社区用户email及其他
{ String vst=""; try{ String sql=vp; ResultSet rs = executeQuery(sql); if(rs.next()) vst=rs.getString(1); rs.close(); } catch (Exception e) {} return vst; }}//end opDb.java