jsp+mysql制作简单的留言板(1)2008-07-21 16:31留言板要实现的功能是:浏览的人能留言并能分页的查看留言,管理员能对留言进行处理!
这个留言板由9个小程序组成,分别是:board.jsp;message.html;opendata.jsp;manager.jsp;password.jsp;check.jsp;delete.jsp;convert.jsp
现在说第一个:board.jsp
他的任务是整个留言板的主程序,让使用者留言,并提供分页功能!
在开始之前,我们必须在mysql数据库建立一个mydate的数据库,在mudate中建立名为message的表:
mysql>create table message( name char(20),email char(40 ),subject char(60),time char(60),sex char(10),memo text,id int not null auto_increment,primary key(id));
board.jsp代码:
<HTML>
<HEAD>
<TITLE>流言板</TITLE>
</HEAD>
<BODY>
<%@ page import="java.sql.*"%>
<%@ page contentType="text/html;charset=GB2312"%>
<%@ include file="opendata.jsp"%>
<%
int count=0,lastp,numf,numl,prep,nextp,pageno;
if(request.getParameter("pageno")==null) //pageno:代表页码
pageno=0;
else
pageno=Integer.parseInt(request.getParameter("pageno"));
sql="select * from message";
rs=smt.executeQuery(sql);
while(rs.next())
count++; <%-- count:多少留言--%>
lastp=(int)Math.ceil((double)count/5);
<%--用来计算此表中有几页留言:ceil返回大于等于其数字参数的最小整数。
Math.ceil(number)
必选项number 参数是数值表达式。
说明
返回值为大于等于其数字参数的最小整数。 --%>
if(pageno==0||pageno>lastp)
pageno=lastp;
numf=pageno*5-4; <%--显示留言的第一笔数据的编号_id--%>
numl=numf+4;<%--numl:此页的最后的一笔数据编号id--%>
if(pageno==1)
prep=1; <%-- prep:上一页--%>
else
prep=pageno-1;
if(pageno==lastp)
nextp=lastp;
else
nextp=pageno+1;
sql="select * from message where id between "+numf+" and "+numl;
rs=smt.executeQuery(sql);
%>
<font size=7 color=green>留言板</font>
<hr>
<center>
<form action=board.jsp method=POST>
<table boder=0>
<tr>
<td>目前的页次<font color=red><%=pageno%></font>/<font color=blue><%=lastp%></font></td>
<td><a href="/board.jsp?pageno=<";%=prep%>>[上一页]</a></td>
<%--将参数pageno传递给程序,依据它来计算numl和numf,再将留言数据通过sql取出--%>
<td><a href="/board.jsp?pageno=<";%=nextp%>>[下一页]</a></td>
<td><a href="/board.jsp?pageno=1>";[第一页]</a></td>
<td><a href="/board.jsp>";[最后一页]</a></td>
<td>输入页次<input type=text size=3 name=pageno></td>
<td><input type=submit name=SEND =送出></td>
<td><a href=password.jsp><font color=red size="5"><i>站长专用</i></font></a></td>
</tr>
</table>
</form>
<%
String name,email,subject,time,sex,memo;
while(rs.next())
{
name=rs.getString(1);
email=rs.getString(2);
subject=rs.getString(3);
time=rs.getString(4);
sex=rs.getString(5);
memo=rs.getString(6);
out.print("<center>");
out.print("<table border=1>");
out.print("<tr><td bgcolor=yellow>姓名</td><td>"+name+"</td></tr>");
out.print("<tr><td bgcolor=yellow>E-mail</td><td>"+email+"</td></tr>");
out.print("<tr><td bgcolor=yellow>时间</td><td>"+time+"</td></tr>");
out.print("<tr><td bgcolor=yellow>主题</td><td>"+subject+"</td></tr>");
out.print("<tr><td bgcolor=yellow>留言</td><td>"+memo+"<img src="/+sex+"></td></tr>");
out.print("</table><p>");
}
%>
<hr>
<center><a href="message.html">我要留言</a>
<a href="/board.jsp>";查看留言</a>
</BODY>
</HTML>
jsp+mysql制作简单的留言板(2)2008-07-21 16:31上次已经完成了board.jsp ,现在来看看第二个:message.html,这个是相当的简单的。这个档案是产生一个表单来让使用的人输入资料和留言!
代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 我要留言 </TITLE>
< NAME="Generator" CONTENT="EditPlus">
< NAME="Author" CONTENT="">
< NAME="Keywords" CONTENT="">
< NAME="Deion" CONTENT="">
</HEAD>
<BODY>
<font size=7 color=green>我要留言</font>
<hr>
<center>
<form action=savememo.jsp method=get>
<table border=1>
<tr>
<td bgcolor=yellow>姓名:</td>
<td><input type=text size=20 name=name></td>
</tr>
<tr>
<td bgcolor=yellow>性别</td>
<td>男<input type=radio name=sex =boy.gif checked>女
<input type=radio name=sex =girl.gif checked></td>
</tr>
<tr>
<td bgcolor=yellow>Email:</td>
<td><input type=text size=40 name=email></td>
</tr>
<tr>
<td bgcolor=yellow>主题:</td>
<td><input type=text size=60 name=subject></td>
</tr>
<tr>
<td valign=top bgcolor=yellow>留言:</td>
<td><textarea name=memo rows=4 cols=60></textarea></td>
</tr>
<tr align=center><td colspan=2><input type=submit method=send =我要留言>
<input type=reset =我要重写></td>
</tr>
</table>
</form>
<hr>
<center>
<a href="/board.jsp>";回留言板</a>
</BODY>
</HTML>
convert.jsp
这个程序主要功能是:处理中文字符的转换;
代码:<%!
String convert(String str)<%--将输入的中文转换为byte数据类型字符串,正确显示中文。--%>
{
byte newstr[]=new byte[str.length()];
for(int i=0;i<str.length();i++)
newstr[i]=(byte)str.charAt(i);
return new String(newstr);
}
String Replace(String str)<%--将“\n”换成<br>--%>
{
int index=0;
while((index=str.indexOf("/n"))!=-1)
str=str.substring(0,index)+"<br>"+str.substring(index+1);
return str;
}
%>
jsp+mysql制作简单的留言板(4)2008-07-21 16:33对于留言板来说,是要存取数据库的;所以opendata.jsp是必不可少的。
<%
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url
="jdbc:mysql://localhost/mydate?user=root&password=zsliuyu&useUnicode=true&characterEncoding=GB2312";
Connection con=DriverManager.getConnection(url);
Statement smt=con.createStatement();
ResultSet rs;
String sql;
%>
opendata.jsp;
留言板必须把留言保存在数据库中,连接好数据库后,我们就要把使用者的的流言存入数据库中:
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ include file="opendata.jsp"%>
<%@ include file="convert.jsp"%>
<%@ page contentType="text/html;charset=GB2312"%>
<%
String name,email,subject,memo,sex;
name=request.getParameter("name");
sex=request.getParameter("sex");
email=request.getParameter("email");
subject=request.getParameter("subject");
memo=request.getParameter("memo");
if(name.length()==0||email.length()==0||subject.length()==0||memo.length()==0)
{
out.print("<center><font color=red size=6>输入的字段不可为空</font>");
out.print("<hr><a href="/board.jsp>";回留言板</a>");
out.print("<a href=message.htm>我要留言</a>");
}
else
{
int count=0,year,month,day,hour,minute,second,lastp;
String time;
GregorianCalendar calendar;<%--利用GregorianCalendar类取得时间--%>
calendar=new GregorianCalendar();
year=calendar.get(Calendar.YEAR);
month=calendar.get(Calendar.MONTH)+1;
day=calendar.get(Calendar.DAY_OF_MONTH);
hour=calendar.get(Calendar.HOUR_OF_DAY);
minute=calendar.get(Calendar.MINUTE);
second=calendar.get(Calendar.SECOND);
time=year+"年"+month+"月"+day+"日"+hour+":"+minute+":"+second;
name=convert(name);
time=convert(time);
subject=convert(subject);
memo=Replace(memo);
memo=convert(memo);
sql="insert into message set name='"+name+"',email='"+email+"',subject='"+subject+"',time='"+time+"',sex='"+sex+"',memo='"+memo+"'";
smt.executeUpdate(sql);
sql="select * from message";
rs=smt.executeQuery(sql);
while(rs.next())
count++;
lastp=(int)Math.ceil((double)count/5);
response.sendRedirect("board.jsp?pageno="+lastp);
}
%>
<html>
<title>错误信息</title>
</html>
savememo.jsp
这个程序是用来将message.htm的数据存入数据库中
当管理员对留言进行管理时,为了安全起见,应该有一个身份认证,只限定管理的人才可以对留言进行管理.<html>
<title>站长登陆画面</title>
<body>
<font size=5 color=green>站长登陆</font>
<font color=red>
<%@ page contentType="text/html;charset=GB2312"%>
<%
String errmsg=request.getParamet