创建数据库表guestbook:
发表留言页面:say.html
<html>
<head>
<title>发表留言</title>
</head>
<body>
<form action="process.jsp" method="post">
<table align="center" border="2" bgcolor="#B3B3FF">
<caption>欢迎访问留言板</caption>
<tr>
<td>用户名:</td>
<td><input type="text" name="user" /></td>
</tr>
<tr>
<td>主题:</td>
<td><input type="text" name="title" size="45"></td>
</tr>
<tr>
<td>内容:</td>
<td><textarea rows="20" cols="40" name="content"></textarea></td>
</tr>
<tr>
<td><input type="submit" value="提交" ></td>
<td><input type="reset" value="重填"></td>
</tr>
</table>
</form>
</body>
</html>
留言处理过程:process.jsp
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.sql.*"%>
<%
request.setCharacterEncoding("gb2312");
String user = request.getParameter("user");
//user = new String(user.getBytes("iso-8859-1"),"gb2312");
String title = request.getParameter("title");
String content = request.getParameter("content");
if(user==null || title==null || content==null ){
%>
无权访问,<a href="say.html">请访问留言页面</a>
<%
return;
}
user = user.trim();
title = title.trim();
content.replaceAll("\n","<br>");
if(user.length()==0 || title.length()==0){
%>
<font size="7" color="red">用户名、主题不能为空。3秒后自动返回,请重新输入!</font>
<%
response.setHeader("refresh","3;say.html");
return;
}
String ip = request.getRemoteAddr();
Class.forName("com.mysql.jdbc.Driver");//加载驱动
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mybase","root","123456");//连接数据库
Statement stmt=conn.createStatement();
String sql = "insert into guestbook values(null,'"+user+"','"+title+"','"+content+"',now(),'"+ip+"')";
stmt.executeUpdate(sql);
stmt.close();
conn.close();
response.sendRedirect("index.jsp");
%>
留言板主页:index.jap
<%@ page contentType="text/html;charset=utf-8" import="java.sql.*"%>
<%@ page import="java.sql.*"%>
<html>
<head><title>留言板主页</title></head>
<body>
<a href="say.html">我要留言</a><br>
<%
Class.forName("com.mysql.jdbc.Driver");//加载驱动
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mybase","root","123456");//连接数据库
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery("select * from guestbook order by gst_time desc");
rs.last();
int count= rs.getRow();
if(count==0){
out.print("当前没有留言");
}else{
%>
共有<%= count%>条留言
<%
}
String curPagestr=request.getParameter("page");
int curPage;
if(curPagestr==null){
curPage=1;
}else{
curPage=Integer.parseInt(curPagestr);
}
if(curPage==1){
%>
第一页 上一页
<%
}else{
%>
<a href="index.jsp?page=1">第一页</a>
<a href="index.jsp?page=<%=curPage-1%>">上一页</a>
<%
}
int countPerPage=3;
int pageCount= (count+countPerPage-1)/countPerPage;
if(curPage==pageCount){
%>
下一页 最后页
<%
}else{
%>
<a href="index.jsp?page=<%=curPage+1%>">下一页</a>
<a href="index.jsp?page=<%=pageCount%>">最后页</a>
<%
}
rs.absolute((curPage-1)*countPerPage+1);
rs.previous();
int i=0;
while(rs.next()&i<countPerPage){
out.print("<hr><br>");
out.print("用户名:"+rs.getString("gst_user"));
out.print(" ");
out.print("留言时间:"+rs.getDate("gst_time"));
out.print(" ");
out.print("用户IP:"+rs.getString("gst_ip"));
out.print("<br>");
out.print("标题:"+rs.getString("gst_title"));
out.print("<br>");
out.print("内容:"+rs.getString("gst_content"));
i++;
}
%>
</body>
</html>
留言板还有相应的管理程序,在下一篇。