JSP+Access留言板制作详解(图)

在制作本留言板之前,请先熟悉一下JSP连接Access数据库的方法。

推荐文章:http://www.numb1.com/com/jsp/show.php?no=05090201

我们先看一下我们要制作的留言板的外观如图



图一. 留言板样图

 

下载地址:http://www.numb1.com/download/download.php?id=numb1_jaatree

第一步. 表格设计

新建一数据库取名为numb1.mdb。新建一表格(命名为lyb)如图所示



图二. 表格设计

 

字段包括ID(数字,该字段设为主键)、TITLE(文本)、NAME(文本)、MAIL(文本)、WEB(文本)、QQ(文本)、IP(文本)、TIM(日期/时间)、TEXT(备注)、RETXT(备注)和ISRE(文本),其中TEXT用来存放留言内容,RETXT用来存放回复留言内容,ISRE用来记录留言是否已经回复。

第二步. 建立数据源

打开“控制面板”→“管理工具”→“数据源 (ODBC)”,选择“系统DNS”选项卡,单击添加,选择“Dirver do Microsoft Access(*.mdb)”单击完成,数据源命名为:jspdata,单击选择按钮,选择新建数据库位置后点确定就OK了。如图所示



图三. 添加数据源





图四. 添加数据源

 

第三步. 编写代码

 

本留言板是又九个JSP页面组成,分别是显示留言列表(index.jsp,即首页)、显示留言页面(show.jsp)、留言页面(send.jsp)、处理留言页面(act.jsp)、处理回复留言页面(actre.jsp)、登录页面(log.jsp、log.jsp)和删除页面(drop.jsp和dell.jsp)。图片的加工再此不在讲解。  

1) 首页编写

首页运行时如下图:





图五. 首页预览






图六. 登录后的首页


 


首页index.jsp代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%
String showmas="n";//showmas="y"时可在首页中填写留言,showmas="n"不可在首页中填写留言
String password="numb1.com";//管理员密码
String mm=null;mm=(String)session.getAttribute("pass");

int i=0,x=0;//计数器
int showrow=8;//每页显示条数
int pages=0;//当前页数
int start; //本页开始条数

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:numb1","","");//后面参数可为空
Statement st=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=st.executeQuery("select id,title,name,tim,isre from lyb order by id desc");

String strp=(String)request.getParameter("pages");
int sig=1,alt;
if(strp==null){sig=1;}else{
for(int i1=0;i1<strp.length();i1++){
alt=strp.charAt(i1);
if(alt<48||alt>57){
sig=1;break;
}else{ sig=2;}
}
}

if(sig==1){pages=1;}else{pages=Integer.parseInt(strp);}
rs.last();
int count=rs.getRow();
int laspc;
int pa=count/showrow;
if(count%showrow>0){pa=pa+1;laspc=count%showrow;}else{laspc=showrow;}
if(pages<0)pages=1;
if(pages>pa)pages=pa;
start=(pages-1)*showrow+1;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>请您留言</title>
<style type="text/css">
<!--
body {
background-image: url(img/bg.gif);
margin-top: 0px;
margin-bottom: 5px;
}
.style1 {color: #FF0000}
.style2 {color: #FFFFFF}

td{font-size:14px}
th{font-size:16px}
a:link{text-decoration:none;color:#006600}
a:visited{text-decoration:none;color:#006600}
a:hover{text-decoration:underline;color:#ff0000}
.l {font-size:13px}
.l a:link{text-decoration:none;color:#006600}
.l a:visited{text-decoration:none;color:#006600}
.l a:hover{text-decoration:none;color:#ff0000}
-->
</style>
<script language="JavaScript" type="text/JavaScript">
function check_form(theform)
{
if (theform.text.value=="")
{
alert("您还没留下您的意见呢!");
theform.text.focus();
return false;
}
if (theform.title.value=="")
{
alert("请留下您意见的主题!");
theform.title.focus();
return false;
}
if (theform.name.value=="")
{
alert("请输入您的大名!");
theform.name.focus();
return false;
}
}

function checkall(check) {
var i = <%=start%>;
var theObj;

for(; i<=<%=(showrow+start)%>; i++)
{
theObj = eval("form1.del" + i);

if (theObj != null)
theObj.checked = check;
}
}
function allcheck() {
if (document.form1.a.checked == true)
checkall(true);
else
checkall(false);
}
</script>
</head>

<body><form name="form1" method="post" action="dell.jsp">
<table width="780" border="0" align="center" cellspacing="0" bgcolor="#f8fff7">
<tr>
<td height="2"></td>
</tr>
<tr>
<td><img src="img/title.jpg" width="778" height="80"></td>
</tr>
<tr>
<td><hr></td>
</tr>
<tr>
<td class="l">&nbsp;<a href="http://www.numb1.com" target="_blank">首页</a> &gt; <span class="style1">您的意见</span> </td>
</tr>
<tr>
<td height="10"><% for(int y=0;y<showrow;y++){%><input name="d<%=y%>" type="hidden" id="a1"><% }%></td>
</tr>
<tr>
<td><table width="100%" border="0" cellspacing="1" bgcolor="#c1d1c1">
<tr>
<td bgcolor="#f8f8f8"><%

%><table width="100%" border="0" cellspacing="0">
<tr>
<td width="41%" class="l">&nbsp;&nbsp;第<%=pages%>页 共<%=pa%>页&nbsp;&nbsp;<% if(pages>1){%>
<a href="index.jsp">首页</a> <a href="index.jsp?pages=<%=pages-1%>">上页</a> <% } if(pages<pa){%>
<a href="index.jsp?pages=<%=pages+1%>">下页</a> <a href="index.jsp?pages=<%=pa%>">尾页</a> <% }%></td>
<td width="59%" class="l"><div align="right"><% if(password.equals(mm)){ %><input name="imageField" type="image" src="img/del1.jpg" width="76" height="21" border="0" onMouseOut="this.src='img/del1.jpg'" onMouseOver="this.src='img/del2.jpg'">
<input name="showrow" type="hidden" id="showrow" value="<%=showrow%>">
<input name="pages" type="hidden" id="pages" value="<%=pages%>">
<% }else{
if(showmas.equals("n")){%>
<a href="send.jsp"><img src="img/send1.jpg" width="77" height="21" border="0" onMouseOut="this.src='img/send1.jpg'" onMouseOver="this.src='img/send2.jpg'"></a> <% } %>
<a href="log.jsp"><img src="img/admin1.jpg" width="77" height="21" border="0" onMouseOut="this.src='img/admin1.jpg'" onMouseOver="this.src='img/admin2.jpg'"></a>
<% }%>
&nbsp;</div></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td height="10"></td>
</tr>
</table>
<table width="780" border="0" align="center" bgcolor="#EFF0E2" style="BORDER-BOTTOM: #4F7B0D 1px solid; BORDER-LEFT: #4F7B0D 1px solid; BORDER-RIGHT: #4F7B0D 1px solid; BORDER-TOP: #4F7B0D 1px solid">
<tr bgcolor="#4F7B0D">
<th width="53" height="20"><span class="style2"><% if(password.equals(mm)){out.print("<input type=/"checkbox/" id=/"a/" οnclick=/"return allcheck()/">");}else{out.print("编号");}%></span></th>
<th width="336" bgcolor="#4F7B0D"><span class="style2">主题</span></th>
<th width="83"><span class="style2">留言者</span></th>
<th width="217"><span class="style2">留言时间</span></th>
<th width="69"><span class="style2">回复</span></th>
</tr>
<%
rs.absolute(start);
rs.previous();
while(rs.next()){
%>
<tr bgcolor="#F8FFF7">
<td><div align="center"><% if(password.equals(mm)){%><input name="del<%=rs.getRow()%>" type="checkbox" value="<%=rs.getString(1)%>"><%}else{out.print(rs.getRow());}%></div></td>br><td>
<div align="center"><a href="show.jsp?id=<%=rs.getString(1)%>" target="_blank"><%=rs.getString(2)%></a></div></td>
<td><div align="center"><%=rs.getString(3)%></div></td>
<td><div align="center"><%=rs.getString(4)%></div></td>
<td><div align="center" class="style1"><% if(rs.getString(5).equals("y")){out.print("已回复");}%></div></td>
</tr>
<%
i++;
if(i==showrow)break;
}
%>
</table>
<%
rs.close();
st.close();
con.close();
%>

<table width="780" border="0" align="center" cellspacing="0">
<tr>
<td height="10"></td>
</tr>
<tr>
<td><table width="100%" border="0" align="center" cellspacing="1" bgcolor="#c1d1c1">
<tr>
<td bgcolor="#f8fff7" class="l"><div align="right">
<%
if(pa<=5){
for(int j=1;j<pa+1;j++){
if(j==pages){%><font color=#ff0000>第<%=pages%>页</font>&nbsp;<% }else{%><a href="index.jsp?pages=<%=j%>">第<%=j%>页</a>&nbsp;<% }
}
}else if(pages<4){
for(int k=1;k<pages+3;k++){
if(k==pages){%><font color=#ff0000>第<%=k%>页</font>&nbsp;<% }else{ %><a href="index.jsp?pages=<%=k%>">第<%=k%>页</a>&nbsp;<% }
}
}else if((pa-pages)<4){
for(int l=pa-5;l<=pa;l++){if(l==pages){ %><font color="#FF0000">第<%=l%>页</font>&nbsp;<% }else{ %><a href="index.jsp?pages=<%=l%>">第<%=l%>页</a>&nbsp;<% }}
}else{
for(int m=pages-3;m<pages+3;m++){if(m==pages){ %><font color="#FF0000">第<%=m%>页</font>&nbsp;<% }else{ %><a href="index.jsp?pages=<%=m%>">第<%=m%>页</a>&nbsp;<% }}
}%>&nbsp;&nbsp;共<%=pa%>页 <%=count%>条&nbsp;&nbsp;</div></td>
</tr>
</table></td>
</tr>
</table></form>
<%
if(!password.equals(mm)){
if(showmas.equals("y")){
%>
<form name="form2" method="post" action="act.jsp" onSubmit="return check_form(this)">
<table width="780" border="0" align="center" cellspacing="1" bgcolor="#4F7B0D">
<tr bgcolor="#EFF3E7">
<td colspan="2"><table width="100%" border="0" cellspacing="1">
<tr>
<th bgcolor="#4F7B0D"><span class="style2">填 写 留 言</span></th>
</tr>
</table></td>
</tr>
<tr bgcolor="#EFF3E7">
<td width="459" bgcolor="#EFF3E7"><div align="center">
<table width="100%" border="0">
<tr>
<td class="l"><div align="center">留言内容 <span class="style1">*</span></div></td>
</tr>
<tr>
<td><div align="center">
<textarea name="text" cols="55" rows="8" id="text" style="BORDER: #4F7B0D 1px solid; background: #f8fff7;color: #4F7B0D; overflow:auto;"></textarea>
</div></td>
</tr>
</table>

</div></td>
<td width="314" bgcolor="#EFF3E7"><table width="98%" border="0" align="center">
<tr>
<td class="l"><div align="right">主题:</div></td>
<td><input name="title" type="text" id="title" style="BORDER: #4F7B0D 1px solid;color:#4F7B0D;background: #f8fff7;">
<span class="style1">*</span></td>
</tr>
<tr>
<td class="l"><div align="right">昵称:</div></td>
<td><input name="name" type="text" id="name" style="BORDER: #4F7B0D 1px solid;color:#4F7B0D;background: #f8fff7;">
<span class="style1">*</span></td>
</tr>
<tr>
<td class="l"><div align="right">E-mail:</div></td>
<td><input name="mail" type="text" id="mail" style="BORDER: #4F7B0D 1px solid;color:#4F7B0D;background: #f8fff7;"></td>
</tr>
<tr>
<td class="l"><div align="right">网站:</div></td>
<td><input name="web" type="text" id="web" style="BORDER: #4F7B0D 1px solid;color:#4F7B0D;background: #f8fff7;"></td>
</tr>
<tr>
<td class="l"><div align="right">Q Q: </div></td>
<td><input name="qq" type="text" id="qq" style="BORDER: #4F7B0D 1px solid;color:#4F7B0D;background: #f8fff7;"></td>
</tr>
<tr>
<th colspan="2"><input name="imageField" type="image" src="img/ok1.jpg" width="69" height="20" border="0" onMouseOut="this.src='img/ok1.jpg'" onMouseOver="this.src='img/ok2.jpg'">&nbsp; <a href="http://www.numb1.com"><img src="img/back1.jpg" width="69" height="20" border="0" onMouseOver="this.src='img/back2.jpg'" onMouseOut="this.src='img/back1.jpg'"></a></th>
</tr>
</table></td>
</tr>
</table>
</form>
<% }}%>
<table width="780" border="0" align="center" cellspacing="1" bgcolor="#4F7B0D">
<tr>
<td bgcolor="#639A10" class="l"><div align="center" class="style2">欢迎进入本站留言板&nbsp;&nbsp;<a href="http://www.numb1.com" target="_blank"><font color="#ffffff">版权所有 &copy;&nbsp;2004-2005</font></a></div></td>
</tr>
</table>
</body>
</html>

简述: String mm=null;mm=(String)session.getAttribute("pass"); 该语句是用来验证是否登录,当管理员登录后,删除留言按钮出现,发表留言按钮隐藏。在此页面,管理员可以一次删除多条留言。如:<% if(password.equals(mm)){ %><input name="imageField" type="image" src="img/del1.jpg" width="76" height="21" border="0" onMouseOut="this.src='img/del1.jpg'" onMouseOver="this.src='img/del2.jpg'"> <input name="showrow" type="hidden" id="showrow" value="<%=showrow%>"><input name="pages" type="hidden" id="pages" value="<%=pages%>"><% },验证,当登录密码与所设置(默认密码为:numb1.com)相同时,显示删除按钮,同时包含两个隐藏字段,用来控制所选与删除留言的语句对应,发送给删除页面(dell.jsp),连接数据库的几条语句再次不在多讲,可以参考:http://www.numb1.com/com/jsp/show.php?no=05090201

String strp=(String)request.getParameter("pages");

int sig=1,alt;

if(strp==null){sig=1;}else{

for(int i1=0;i1

alt=strp.charAt(i1);

if(alt<48||alt>57){

sig=1;break;

}else{ sig=2;}

}

}

if(sig==1){pages=1;}else{pages=Integer.parseInt(strp);}

此处语句用来从地址栏里得到页码,当留言多了的时候,需要分页处理。其中if(alt<48||alt>57){是用来严整输入的参数是否是数字,如果不是数字,页面默认进入第一页。

2) 显示页面编写

显示页面运行时如下图:



图七. 显示页面预览






图八. 登录后的显示页面


 


显示留言页面代码show.jsp

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%
String id=(String)request.getParameter("id");


String password="numb1.com";//管理员密码
String mm=null;mm=(String)session.getAttribute("pass");

if(id==null){
out.print("<font color=#FF0000><h3>ERROR!</h3></font>");}else{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:numb1");//,"","");
Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql="select * from lyb where id="+id;
ResultSet rs=st.executeQuery(sql);
rs.next();

%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>留言内容</title>
<style type="text/css">
<!--
body {
background-image: url(img/bg.gif);
margin-top: 0px;
margin-bottom: 5px;
}
.style2 {color: #FFFFFF}

td{font-size:14px}
th{font-size:16px}
a:link{text-decoration:none;color:#006600}
a:visited{text-decoration:none;color:#006600}
a:hover{text-decoration:underline;color:#ff0000}
.l {font-size:13px}
.l a:link{text-decoration:none;color:#006600}
.l a:visited{text-decoration:none;color:#006600}
.l a:hover{text-decoration:none;color:#ff0000}
.style3 {color: #FF0000}
-->
</style>
</head>

<body>
<table width="780" border="0" align="center" cellspacing="0" bgcolor="#f8fff7">
<tr>
<td height="2"></td>
</tr>
<tr>
<td><img src="img/title.jpg" width="778" height="80"></td>
</tr>
<tr>
<td><hr></td>
</tr>
<tr>
<td class="l">&nbsp;<a href="http://www.numb1.com" target="_blank">首页</a> &gt; <a href="index.jsp">留言列表</a> &gt; <span class="style3">留言内容</span></td>
</tr>
<tr>
<td height="10"></td>
</tr>
<tr>
<td><table width="100%" border="0" cellspacing="1" bgcolor="#c1d1c1">
<tr>
<td bgcolor="#f8f8f8"><table width="100%" border="0" cellspacing="0">
<tr>
<td class="l"><div align="right"><a href="index.jsp"><img src="img/back1.jpg" width="69" height="20" border="0" onMouseOut="this.src='img/back1.jpg'" onMouseOver="this.src='img/back2.jpg'"></a>
<% if(password.equals(mm)){%><a href="drop.jsp?id=<%=id%>"><img src="img/del1.jpg" width="76" height="21" border="0" onMouseOver="this.src='img/del2.jpg'" onMouseOut="this.src='img/del1.jpg'"></a>
<% }else{%>
<a href="send.jsp"><img src="img/send1.jpg" width="77" height="21" border="0" onMouseOut="this.src='img/send1.jpg'" onMouseOver="this.src='img/send2.jpg'"></a> <a href="log.jsp?id=<%=id%>"><img src="img/admin1.jpg" width="77" height="21" border="0" onMouseOut="this.src='img/admin1.jpg'" onMouseOver="this.src='img/admin2.jpg'"></a>
<% }%>&nbsp;&nbsp;</div></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td height="10"></td>
</tr>
</table>
<table width="780" border="0" align="center" bgcolor="#F8FFF7" style="BORDER-BOTTOM: #4F7B0D 1px solid; BORDER-LEFT: #4F7B0D 1px solid; BORDER-RIGHT: #4F7B0D 1px solid; BORDER-TOP: #4F7B0D 1px solid">
<tr>
<td height="20">
<table width="100%" border="0" cellspacing="1" bgcolor="#4F7B0D">
<tr>
<td width="40%"> &nbsp;&nbsp;<span class="style2"><%=rs.getString(2)%></span></td>
<td width="60%"><div align="right"><span class="style2"><%=rs.getString(3)%> 发表于:<%=rs.getString(8)%>&nbsp;&nbsp;&nbsp;&nbsp;IP地址:<% if(password.equals(mm)){out.print(rs.getString(7));}else{String str=rs.getString(7);int l=str.lastIndexOf(".");l++; String ip=str.substring(0,l);out.print(ip+"*");}%></span> &nbsp;&nbsp;</div></td>
</tr>
</table></td>
</tr>
<tr bgcolor="#F8FFF7">
<td><div align="center">
<table width="100%" border="0" cellspacing="0">
<tr>
<td width="7%"><div align="right">网站:</div></td>
<td width="33%"><%=rs.getString(5)%></td>
<td width="9%"><div align="right">Q Q:</div></td>
<td width="19%"><%=rs.getString(6)%></td>
<td width="13%"><div align="right">E-mail:</div></td>
<td width="19%"><%=rs.getString(4)%></td>
</tr>
</table>
</div> <div align="center"></div> <div align="center"></div> <div align="center"></div> <div align="center"></div></td>
</tr>
<tr bgcolor="#F8FFF7">
<td height="1" background="img/b.gif"></td>
</tr>
<tr bgcolor="#F8FFF7">
<td><table width="97%" border="0" align="center" cellspacing="5">
<tr>
<td><%=rs.getString(9)%></td>
</tr>
</table></td>
</tr>
<tr bgcolor="#F8FFF7">
<td><table width="98%" border="0" align="center" cellspacing="5">
<tr>
<td bgcolor="#d1e8c1"><table width="100%" border="0" cellspacing="8">
<tr>
<td><%=rs.getString(10)%></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
<% if(password.equals(mm)){%>
<br><form name="form1" method="post" action="actre.jsp">
<table width="780" border="0" align="center" cellspacing="1" bgcolor="#4F7B0D">
<tr bgcolor="#EFF3E7">
<td><table width="100%" border="0" cellspacing="1">
<tr>
<th bgcolor="#4F7B0D"><span class="style2">回 复 留 言</span></th>
</tr>
</table></td>
</tr>
<tr bgcolor="#EFF3E7">
<td bgcolor="#EFF3E7"><div align="center">
<table width="100%" border="0" cellspacing="5">
<tr>
<td><div align="center">
<textarea name="text" cols="100" rows="8" id="text" style="BORDER: #4F7B0D 1px solid; background: #f8fff7;color: #4F7B0D; overflow:auto;"></textarea>
</div></td>
</tr>
<tr>
<th><input name="imageField" type="image" src="img/ok1.jpg" width="69" height="20" border="0" onMouseOut="this.src='img/ok1.jpg'" onMouseOver="this.src='img/ok2.jpg'">
<input name="id" type="hidden" id="id" value="<%=id%>">
<a href="http://www.numb1.com"><img src="img/back1.jpg" width="69" height="20" border="0" onMouseOver="this.src='img/back2.jpg'" onMouseOut="this.src='img/back1.jpg'"></a></th>
</tr>
</table>
</div></td>
</tr>
</table>
</form><%}%>
<br>
<table width="780" border="0" align="center" cellspacing="1" bgcolor="#4F7B0D">
<tr>
<td bgcolor="#639A10" class="l"><div align="center" class="style2">欢迎进入本站留言板&nbsp;&nbsp;<a href="http://www.numb1.com" target="_blank"><font color="#ffffff">版权所有 &copy;&nbsp;2004-2005</font></a></div></td>
</tr>
</table>
</body>
</html>
<% }%>

简述: 该页面必须要有一个参数,即show.jsp?id=1,否则要出错,if(id==null){ out.print("<font color=#FF0000><h3>ERROR!</h3></font>");},该语句是用来严重id是否为空的。管理员登录后,可以删除此留言,也可以回复此留言。

3) 填写留言页面编写

显示页面运行时如下图:



图九. 显示页面预览

 


填写留言页面send.jsp代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>发表留言</title>
<style type="text/css">
<!--
body {
background-image: url(img/bg.gif);
margin-top: 0px;
margin-bottom: 5px;
}
.style1 {color: #FF0000}
.style2 {color: #FFFFFF}

td{font-size:14px}
th{font-size:16px}
a:link{text-decoration:none;color:#006600}
a:visited{text-decoration:none;color:#006600}
a:hover{text-decoration:underline;color:#ff0000}
.l {font-size:13px}
.l a:link{text-decoration:none;color:#006600}
.l a:visited{text-decoration:none;color:#006600}
.l a:hover{text-decoration:none;color:#ff0000}
-->
</style>
<script language="JavaScript" type="text/JavaScript">
function check_form(theform)
{
if (theform.text.value=="")
{
alert("您还没留下您的意见呢!");
theform.text.focus();
return false;
}
if (theform.title.value=="")
{
alert("请留下您意见的主题!");
theform.title.focus();
return false;
}
if (theform.name.value=="")
{
alert("请输入您的大名!");
theform.name.focus();
return false;
}
}
</script>
</head>

<body>
<form name="form1" method="post" action="act.jsp" onSubmit="return check_form(this)">
<table width="780" border="0" align="center" cellspacing="0" bgcolor="#f8fff7">
<tr>
<td height="3"></td>
</tr>
<tr>
<td><img src="img/title.jpg" width="778" height="80"></td>
</tr>
<tr>
<td><hr></td>
</tr>
<tr>
<td height="10"></td>
</tr>
<tr>
<td><table width="100%" border="0" align="center" cellspacing="1" bgcolor="#c1d1c1">
<tr>
<td bgcolor="#E6F9C8" class="l">&nbsp;<a href="http://www.numb1.com" target="_blank">首页</a> &gt; <a href="index.jsp">网友留言</a> &gt; <span class="style1">发表留言</span> </td>
</tr>
</table></td>
</tr>
<tr>
<td height="10"></td>
</tr>
</table>
<table width="780" border="0" align="center" cellspacing="1" bgcolor="#4F7B0D">
<tr bgcolor="#EFF3E7">
<td colspan="2"><table width="100%" border="0" cellspacing="1">
<tr>
<th bgcolor="#4F7B0D"><span class="style2">填 写 留 言</span></th>
</tr>
</table></td>
</tr>
<tr bgcolor="#EFF3E7">
<td width="459" bgcolor="#EFF3E7" valign="top"><div align="center">
<table width="100%" border="0">
<tr>
<td class="l"><div align="center">留言内容 <span class="style1">*</span></div></td>
</tr>
<tr>
<td><div align="center">
<textarea name="text" cols="55" rows="8" id="text" style="BORDER: #4F7B0D 1px solid; background: #f8fff7;color: #4F7B0D; overflow:auto;"></textarea>
</div></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table>

</div></td>
<td width="314" bgcolor="#EFF3E7" valign="top"><table width="98%" border="0" align="center">
<tr>
<td class="l"><div align="right">主题:</div></td>
<td><input name="title" type="text" id="title" style="BORDER: #4F7B0D 1px solid;color:#4F7B0D;background: #f8fff7;">
<span class="style1">*</span></td>
</tr>
<tr>
<td class="l"><div align="right">昵称:</div></td>
<td><input name="name" type="text" id="name" style="BORDER: #4F7B0D 1px solid;color:#4F7B0D;background: #f8fff7;">
<span class="style1">*</span></td>
</tr>
<tr>
<td class="l"><div align="right">E-mail:</div></td>
<td><input name="mail" type="text" id="mail" style="BORDER: #4F7B0D 1px solid;color:#4F7B0D; background: #f8fff7;"></td>
</tr>
<tr>
<td class="l"><div align="right">网站:</div></td>
<td><input name="web" type="text" id="web" style="BORDER: #4F7B0D 1px solid;color:#4F7B0D;background: #f8fff7;"></td>
</tr>
<tr>
<td class="l"><div align="right">Q Q: </div></td>
<td><input name="qq" type="text" id="qq" style="BORDER: #4F7B0D 1px solid;color:#4F7B0D;background: #f8fff7;"></td>
</tr>
<tr>
<td height="8" colspan="2"></td>
</tr>
<tr>
<th colspan="2"><input name="imageField" type="image" src="img/ok1.jpg" width="69" height="20" border="0" onMouseOut="this.src='img/ok1.jpg'" onMouseOver="this.src='img/ok2.jpg'">
&nbsp; <a href="index.jsp"><img src="img/back1.jpg" width="69" height="20" border="0" onMouseOver="this.src='img/back2.jpg'" onMouseOut="this.src='img/back1.jpg'"></a></th>
</tr>
</table></td>
</tr>
</table>
</form>
<p>&nbsp;</p>
<table width="780" border="0" align="center" cellspacing="1" bgcolor="#4F7B0D">
<tr>
<td bgcolor="#639A10" class="l"><div align="center" class="style2">欢迎进入本站留言板&nbsp;&nbsp;<a href="http://www.numb1.com" target="_blank"><font color="#ffffff">版权所有 &copy;&nbsp;2004-2005</font></a></div></td>
</tr>
</table>
</body>
</html>

JSP+Access留言板制作详解(图)

文章来源:南部湾     作者:乐凯       发表时间: 2005-09-28 10:21:53
 


4) 处理留言页面act.jsp代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:numb1");
Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

ResultSet rs = st.executeQuery("select id from lyb");
rs.last();
int no;
if(rs.getRow()!=0){
no=rs.getInt(1);
no++;
}else{no=1;}
rs.close();

request.setCharacterEncoding("gb2312");
String title=request.getParameter("title");
String name=request.getParameter("name");
String mail=request.getParameter("mail");
String web=request.getParameter("web");
String qq=request.getParameter("qq");
String txt=request.getParameter("text");
String ip=request.getRemoteAddr();
String id=""+no;

String sql="insert into lyb values("+id+",'"+title+"','"+name+"','"+mail+"','"+web+"','"+qq+"','"+ip+"',now(),'"+txt+"','','n')";
st.executeUpdate(sql);
st.close();
con.close();
response.sendRedirect("index.jsp");
%>

简述:由于id是主键,所以其值不可重复,所以先读取最后一条的di,并增加一,其中if(rs.getRow()!=0)是用来严整此次留言是否是第一条留言,String id=""+no;是将整数型变量no转变为字符串型变量id。request.setCharacterEncoding("gb2312"),该语句是用来转换通过post方法传递的编码,如果没有次语句,我们的留言(中文内容)只能是乱码。response.sendRedirect("index.jsp")该语句是当更新数据库完毕后,使页面跳转至index.jsp。


5)处理回复留言页面actre.jsp代码

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:numb1");
Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

request.setCharacterEncoding("gb2312");
String id=request.getParameter("id");
String txt=request.getParameter("text");

String sql="update lyb set retxt='"+txt+"',isre='y' where id="+id;
st.executeUpdate(sql);
st.close();
con.close();
response.sendRedirect("show.jsp?id="+id);
%>

简述: 修改字段isre为y,目的是在首页中显示该留言已经被回复。6) 登录页面log.jsp代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>管理员登陆</title>
<style type="text/css">
<!--
.style1 {color: #FFFFFF}
th{font-size:16px;}
td{font-size:14px;}
-->
</style>
</head>

<body>
<%
String id=request.getParameter("id");
%>
<form name="form1" method="post" action="logo.jsp">
<table width="300" border="0" align="center" cellspacing="1" style="BORDER-BOTTOM: #4F7B0D 1px solid; BORDER-LEFT: #4F7B0D 1px solid; BORDER-RIGHT: #4F7B0D 1px solid; BORDER-TOP: #4F7B0D 1px solid">
<tr>
<td colspan="2"><table width="100%" border="0" cellspacing="0">
<tr>
<th height="20" bgcolor="#4F7B0D"><span class="style1">登陆管理页面</span></th>
</tr>
</table></td>
</tr>
<tr>
<td height="10" colspan="2"></td>
</tr>
<tr>
<td width="152"><div align="right">请输入管理员密码:</div></td>
<td width="159">
<input name="mm" type="password" id="mm" style="BORDER: #4F7B0D 1px solid;color: #4F7B0D;" size="15">
</td>
</tr>
<tr>
<td height="10" colspan="2"></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="imageField" type="image" src="img/ok1.jpg" width="69" height="20" border="0" onMouseOut="this.src='img/ok1.jpg'" onMouseOver="this.src='img/ok2.jpg'">
<% if(id!=null){%><input name="id" type="hidden" id="id" value="<%=id%>"><% }%>
<a href="index.jsp"><img src="img/back1.jpg" width="69" height="20" border="0" onMouseOut="this.src='img/back1.jpg'" onMouseOver="this.src='img/back2.jpg'"></a></div></td>
</tr>
</table>
</form>
</body>
</html>

简述:id是用来判断是从首页登录还是从显示页面登录,当id为空时,是从首页登录,成功后跳转会首页,如果id不为空,登录成功后跳转到显示页面显示相应的留言。


7) 处理登录页面logo.jsp代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%
String id=(String)request.getParameter("id");
String password="numb1.com";//管理员密码
String mm=null;mm=(String)request.getParameter("mm");

if(password.equals(mm)){
session.setAttribute("pass",mm);
if(id==null){response.sendRedirect("index.jsp");
}else{
response.sendRedirect("show.jsp?id="+id);}
}else{
response.sendRedirect("log.jsp");
}
%>8) 单条删除处理页面drop.jsp代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%
String password="numb1.com";//管理员密码
String mm=null;mm=(String)session.getAttribute("pass");
if(password.equals(mm)){
String id=request.getParameter("id");
if(id==null){out.print("<h3><font color=#FF0000>ERROR!</font></h3>");}else{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:numb1");
Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql="delete from lyb where id="+id;
st.executeUpdate(sql);
st.close();
con.close();
response.sendRedirect("index.jsp");
}
}else{
response.sendRedirect("log.jsp");
}
%>

 


9) 多条删除处理页面dell.jsp代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" import="java.lang.*"%>
<%
String password="numb1.com";//管理员密码
String mm=null;mm=(String)session.getAttribute("pass");
if(password.equals(mm)){

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:numb1","","");
Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql;

int showrow,p,no;
String rw=(String)request.getParameter("showrow");
String pages=(String)request.getParameter("pages");
if(rw==null){showrow=1;}else{showrow=Integer.parseInt(rw);}
if(pages==null){p=1;}else{p=Integer.parseInt(pages);}


for(int i=1;i<=showrow;i++){ //该循环游历该页(pages)首页留言
no=i+(p-1)*showrow;

String del=request.getParameter("del"+no);
if(del!=null){ //判断该留言是否被选为删除之列,如果是即执行下列删除语句
sql="delete from lyb where id="+del;
st.executeUpdate(sql);
}
}
st.close();
con.close();
response.sendRedirect("index.jsp");
}else{
response.sendRedirect("log.jsp");
}
%>

如果数据库,表格,数据源都设置好了后,按上面代码既可成功操作,有疑问,可以给作者写信jq_1979@numb1.com,可以按文头所给的地址去下在现成代码。参考相关资料,相信对初学者会有很大的帮助的。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实现方法: 1. 数据库设计 2007-12-23 14:42 2. MessageVO.java 定义留言属性的一个bean文件,定义了各个字段的get和set方法。 3. DBConn.java 定义了连接ACCESS数据库的方法,可以通过调用此方法访问数据库。 4. MessageBean.java 用来进行留言管理的bean,定义了添加留言,获取留言数据,以及删除留言的方法。 5. adminInfo.java 定义了管理员字段(adminName,adminPwd)的set和get方法。并定义了一个判断是否是管理员的方法judgeAdmin()。 6. commonBean.java 定义了一些常用的方法,比如中文字体处理(解决乱码问题),数据库数据转换为HTML格式显示的方法等。 7. javascript脚本 用来检查表单数据是否为空。 <script> //用于管理员登陆的验证 function check() {   var adminName=document.getElementById("adminName").value;   var adminPwd=document.getElementById("adminPwd").value;   if(adminName=="" || adminPwd=="")   {     alert("用户名、密码不能为空!")     document.getElementById("adminName").focus();     return false;   } } //用于添加留言时的验证 function addCheck() {   var name=document.getElementById("name").value;   var title=document.getElementById("title").value;   var email=document.getElementById("email").value;   var content=document.getElementById("content").value;   if(name=="")   {     alert("姓名容都不能为空!")     document.getElementById("name").focus();     return false;   }   if(email=="")   {     alert("E-mail不能为空!")     document.getElementById("email").focus();     return false;   }   if(title=="")   {     alert("主题都不能为空!")     document.getElementById("title").focus();     return false;   }   if(content=="")   {     alert("内容不能为空!")     document.getElementById("content").focus();     return false;   }   //验证email格式   if(!/(\S)+[@]{1}(\S)+[.]{1}(\w)+/.test(email))   {     alert("请输入格式正确的 e-mail 地址!");     var e = document.getElementById ( "email" );     //e.value = "";     e.focus ();     return false;   } } </script> 8. 整站下载 在WinXP中文+tomcat6.0中测试通过。将解压缩后的整个文件夹放在tomcat/webapps/下面即可,通过http://localhost:8080/lyb访问。 修正版修改了一处bug: 在将文件放入tomcat/webapp下面后,用浏览器打开看时会出错,原因是tomcat默认装在'program files'下面,于是得到的路径含有空格。 经过修改连接函数,现在已经可以正常显示。 如果又兴趣学习jsp的朋友可以下载看看,里面包航所以的源代码和实现方法。
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值