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

JSP
jsp计数器制作
用jsp编写文件上载
基于JSP的动态网站开发技术
JSP由浅入深(3)—— 通过表达式增加动态内容
JSP由浅入深(5)—— Scriptlets和HTML的混合
JSP由浅入深(1)—— 熟悉JSP服务器
JSP由浅入深(12)—— 表单编辑
JSP由浅入深(11)—— 标记库
JSP由浅入深(10)—— Beans and Forms处理
JSP由浅入深(9)—— JSP Sessions
JSP由浅入深(8)—— JSP Tags
JSP由浅入深(6)—— JSP声明
JSP由浅入深(4)—— Scriptlets
JSP由浅入深(2)—— 第一个JSP
JSP由浅入深(7)—— JSP Directives
JSP中的字符替换函数 str_replace() 实现!
把一张图片变形扭曲成各种不同的长宽
用JSP编写通用信息发布程序
Java Servlet及Cookie的使用
Apache+Servlet+Jsp环境设置(上)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 46 ::
收藏到网摘: 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>