jsp留言板源代码大全

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 = ldut

il.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: " + e

x.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 pagenam

e='"+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