当前位置: 首页 > 图文教程 > 网络编程 > JSP > jsp留言板源代码二: 给jsp初学者.

JSP
GET 方式提交的含有特殊字符的参数
java big5到gb2312的编码转换
java Lucene 中自定义排序的实现
hibernate中的增删改查实现代码
jsp 定制标签(Custom Tag)
jsp基础速成精华讲解
IE cache缓存 所带来的问题收藏
关于JSP的一点疑问小结
JSP 多条SQL语句同时执行的方法
jsp include文件时的一个乱码解决方法
在JSTL EL中处理java.util.Map,及嵌套List的情况
jsp 页面显示的一些用法
根据Hibernte的cfg文件生成sql文件
五种 JSP页面跳转方法详解
JSP 防范SQL注入攻击分析
JSP 连接MySQL配置与使用
java eclipse 启动参数
jsp 页面上图片分行输出小技巧
解决jsp开发中不支持EL问题
JSP 页面中使用FCKeditor控件(js用法)

JSP 中的 jsp留言板源代码二: 给jsp初学者.


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 57 ::
收藏到网摘: n/a

作 者: 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> \n"+
" <!-- \n"+
" function ValidInput() \n"+
" {if(document.sign.lw_author.value==\"\") \n"+
" {alert(\"请填写您的大名。\"); \n"+
" document.sign.lw_author.focus(); \n"+
" return false;} \n"+
" if(document.sign.lw_title.value==\"\") \n"+
" {alert(\"请填写留言主题。\"); \n"+
" document.sign.lw_title.focus(); \n"+
" return false;} \n"+
" if (document.sign.author_email.value!=\"\") \n"+
" { if ((document.sign.author_email.value.indexOf(\"@\")<0)//(document
.sign.author_email.value.indexOf(\":\")!=-1)) \n"+
" {alert(\"您填写的EMail无效,请填写一个有效的Email!\"); \n"+
" document.sign.author_emaill.focus(); \n"+
" return false; \n"+
" } \n"+
" } \n"+
" return true; \n"+
" } \n"+
" function ValidSearch() \n"+
" { if(document.frmsearch.findstr.value==\"\") \n"+
" {alert(\"不能搜索空串!\"); \n"+
" document.frmsearch.findstr.focus(); \n"+
" return false;} \n"+
" } \n"+
" //--> \n"+
" </SCRIPT> ";
out.print(ljs);
%>
<%
//留言板界面首部
String ltop=" <DIV align=center> \n"+
" <CENTER> \n"+
" <FORM action=guestbook.jsp method=post name=frmsearch> \n"+
" <INPUT name=gbname type=hidden value=cnzjj_gt> \n"+
" <TABLE align=center border=0 cellSpacing=1 width=\"95%\"> \n"+
" <TBODY> \n"+
" <TR> \n"+
" <TD bgColor=#336699 colSpan=2 width=\"100%\"> \n"+
" <P align=center><FONT color=#ffffff face=楷体_GB2312 \n"+
" size=5>欢迎远方的朋友来张家界旅游观光</FONT></P></TD></TR> \n"
+
" <TR bgColor=#6699cc> \n"+
" <TD align=left noWrap width=\"50%\">主页: <A \n"+
" href=\"http://www.zj.hn.cn\" target=_blank><FONT \n"+
" color=#ffffff>张家界旅游</FONT></A> 管理员: <A \n"
+
" href=\"mailto:[email protected]\"><FONT color=#ffffff>
一民</FONT></A> \n"+
" >><A \n"+
" href=\"http://www.zj.hn.cn \"><FONT \n"+
" color=#ffffff>管理</FONT></A> >><A \n"+
" href=\" http://www.zj.hn.cn \"><FONT \n"+
" color=#ffffff>申请</FONT></A> </TD> \n"+
" <TD align=right width=\"50%\"><SELECT class=ourfont name=range s
ize=1> \n"+
" <OPTION selected value=0>按主题</OPTION> <OPTION value=1>按内
容</OPTION> \n"+
" <OPTION value=2>按作者</OPTION> <OPTION value=3>按日期</OPTI
ON> <OPTION \n"+
" value=4>按主题&内容</OPTION></SELECT> <INPUT name=findst
r> <INPUT name=search onclick=\"return ValidSearch()\" type=submit val
ue=\"搜 索\"> \n"+
" </TD></TR></TBODY></TABLE></FORM> \n"+
" <HR align=center noShade SIZE=1 width=\"95%\"> \n"+
" </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> \n" +
" <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+
" \n"+
" <FORM action=guestbook.jsp method=post name=sign> \n"+
" <INPUT name=gbname type=hidden value=cnzjj_gt> \n"+
" <INPUT name=pages type=hidden value=1> \n"+
" <TABLE bgColor=#d5e8fd border=0 cellSpacing=1 width=\"95%\"> \n"+
" <TBODY> \n"+
" <TR> \n"+
" <TD align=middle bgColor=#e6e6fa colSpan=2 noWrap><STRONG><FONT
color=blue \n"+
" face=楷体_GB2312 size=5>发 表 意 见</FONT></STRONG> &nbs
p; [加*的内容必须填写] </TD></TR> \n"+
" <TR> \n"+
" <TD noWrap width=\"45%\"> \n"+
" <DIV align=left> \n"+
" <TABLE bgColor=#d5e8fd border=0 cellSpacing=1 width=\"100%\">
\n"+
" <TBODY> \n"+
" <TR> \n"+
" <TD noWrap width=\"100%\">*留言主题:<INPUT maxLength=40 n
ame=lw_title \n"+
" size=36></TD></TR> \n"+
" <TR> \n"+
" <TD noWrap width=\"100%\">*网上大名:<INPUT maxLength=18 n
ame=lw_author \n"+
" size=36></TD></TR> \n"+
" <TR> \n"+
" <TD noWrap width=\"100%\"> 主页标题:<INPUT maxLength
=40 name=pagetitle \n"+
" size=36></TD></TR> \n"+
" <TR> \n"+
" <TD noWrap width=\"100%\"> 主页地址:<INPUT maxLength
=255 name=author_http \n"+
" size=36></TD></TR> \n"+
" <TR> \n"+
" <TD noWrap width=\"100%\">*电子邮件:<INPUT maxLength=40 n
ame=author_email \n"+
" size=36></TD></TR></TBODY></TABLE></DIV></TD> \n"+
" <TD noWrap vAlign=top width=\"55%\"> \n"+
" <DIV align=left> \n"+
" <TABLE bgColor=#b6d7fc border=0 cellSpacing=1 width=\"100%\">
\n"+
" <TBODY> \n"+
" <TR> \n"+
" <TD width=\"100%\">请在下面填写你的留言:</TD></TR> \n"+
" <TR> \n"+
" <TD width=\"100%\"><TEXTAREA cols=50 name=lw_content rows=
7></TEXTAREA></TD></TR></TBODY></TABLE></DIV></TD></TR> \n"+
" <TR> \n"+
" <TD bgColor=#fbf7ea colSpan=2 noWrap>表情\n"+
" <INPUT name=gifface type=radio value=1 checked><IMG \n"+
" alt=\"1.gif (152 bytes)\" height=15 src=\"1.gif\" width=15> <I
NPUT \n"+
" name=gifface type=radio value=2><IMG alt=\"2.gif (174 bytes)\"
height=15 \n"+
" src=\"2.gif\" width=15> <INPUT name=gifface type=radio value=3
><IMG \n"+
" alt=\"3.gif (147 bytes)\" height=15 src=\"3.gif\" width=15> <I
NPUT \n"+
" name=gifface type=radio value=4><IMG alt=\"4.gif (172 bytes)\"
height=15 \n"+
" src=\"4.gif\" width=15> <INPUT name=gifface type=radio value=5
><IMG \n"+
" alt=\"5.gif (118 bytes)\" height=15 src=\"5.gif\" width=15> <I
NPUT \n"+
" name=gifface type=radio value=6><IMG alt=\"6.gif (180 bytes)\"
height=15 \n"+
" src=\"6.gif\" width=15> <INPUT name=gifface type=radio value=7
><IMG \n"+
" alt=\"7.gif (180 bytes)\" height=15 src=\"7.gif\" width=15> <I
NPUT \n"+
" name=gifface type=radio value=8><IMG alt=\"8.gif (96 bytes)\"
height=15 \n"+
" src=\"8.gif\" width=15> <INPUT name=gifface type=radio value=9
><IMG \n"+
" alt=\"9.gif (162 bytes)\" height=15 src=\"9.gif\" width=15> <I
NPUT \n"+
" name=gifface type=radio value=10><IMG alt=\"10.gif (113 bytes)
\" height=15 \n"+
" src=\"10.gif\" width=15> <INPUT name=gifface type=radio value=
11><IMG \n"+
" alt=\"11.gif (93 bytes)\" height=15 src=\"11.gif\" width=15> <
INPUT \n"+
" name=gifface type=radio value=12> <IMG alt=\"12.gif (149 bytes
)\" height=14 \n"+
" src=\"12.gif\" width=15> \n"+
" <INPUT \n"+
" name=gifface type=radio value=13> <IMG alt=\"13.gif (149 bytes
)\" height=14 \n"+
" src=\"13.gif\" width=15> \n"+
" <INPUT \n"+
" name=gifface type=radio value=14> <IMG alt=\"14.gif (149 bytes
)\" height=14 \n"+
" src=\"14.gif\" width=15> \n"+
" <INPUT \n"+
" name=gifface type=radio value=15> <IMG alt=\"15.gif (149 bytes
)\" height=14 \n"+
" src=\"15.gif\" width=15> \n"+
" <INPUT \n"+
" name=gifface type=radio value=16> <IMG alt=\"16.gif (149 bytes
)\" height=14 \n"+
" src=\"16.gif\" width=15> </TD> \n"+
" </TR> \n"+
" <TR> \n"+
" <TD align=middle colSpan=2 noWrap><INPUT name=cmdGO onclick=\"re
turn ValidInput()\" type=submit value=\"提 交\"> \n"+
" <INPUT name=cmdPrev onclick=\"return ValidInput()\" type=submit valu
e=\"预 览\"> \n"+
" <INPUT name=cmdCancel type=reset value=\"重 写\"> <INPU
T name=cmdBack onclick=javascript:history.go(-1) type=button value=\"返
回\"> \n"+
" </TD></TR></TBODY></TABLE></FORM></CENTER></DIV> ";
out.print(lbottom);
%>
</body></html>