基于mysql数据库的JSP留言本代码

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

message.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>留言给我</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
<!--
textarea {
	FONT: 12px Tahoma;
	COLOR: #333333;
	margin-top: 3px;
	margin-bottom: 3px;
}
.input1 {
	width: 300px;
	height: 25px;
	margin-top: 3px;
	margin-bottom: 3px;
}
.input2 {
	width: 150px;
	height: 25px;
	margin-top: 3px;
	margin-bottom: 3px;
}
.submit1 {
	width: 50px;
	border: #CCCCCC solid 1px;
	height: 30px;
	background: #FFFFFF
}
#form1 tr th {
	text-align: right;
}
input {
	text-align: left;
}
body {
	font-family: "微软雅黑", Verdana, sans-serif, "宋体";
	color: #333;
}
.mybutton {
	width: 70px;
	height: 25px;
	margin-top: 5px;
	margin-bottom: 5px;
	text-align: center;
}
h1 {
	margin-top: 100px;
	margin-bottom: 50px;
	color: #999;
	font-weight: bold;
	font-size: 36px;
}
-->
</style>
<script>
	function addCheck() {
		var name = document.getElementById("name").value;
		var title = document.getElementById("title").value;
		var content = document.getElementById("content").value;
		if (name == "") {
			alert("姓名容都不能为空!")
			document.getElementById("name").focus();
			return false;
		}
		if (title == "") {
			alert("主题都不能为空!")
			document.getElementById("title").focus();
			return false;
		}
		if (content == "") {
			alert("内容不能为空!")
			document.getElementById("content").focus();
			return false;
		}
	}
</script>
</head>

<body>
<table width="400" align="center" cellpadding="2"
			cellspacing="0">
  <tr>
    <td colspan="2"><h1> 留言本 </h1></td>
  </tr>
  <form name="form1" id="form1"
				action="<%=basePath%>servlet/MessageServlet" method="post"
				onSubmit="javascript: return addCheck()">
    <tr>
      <th width="70" align="right"> 姓名: </th>
      <td width="280" align="left"><input name="name" type="text" class="input2" id="name"></td>
    </tr>
    <tr>
      <th > 主题: </th>
      <td><input name="title" type="text" class="input1"></td>
    </tr>
    <tr>
      <th ><span class="STYLE1">留言</span>: </th>
      <td ><textarea name="content" id="content" cols="60" rows="5"></textarea></td>
    </tr>
    <tr>
      <td colspan="2" align="center"><input type="submit" name="submit" id="submit" value="提交留言" class="mybutton">
        &nbsp;
        <input type="button" name="submit" id="submit" value="查看留言"
							onclick="window.location.href('<%=basePath%>servlet/MessageServlet?action=list&&p=1')" class="mybutton">
        &nbsp;
        <input type="reset" name="reset" id="reset" value="重新填写" class="mybutton">
        <input name="action" type="hidden" id="check" value="add"></td>
    </tr>
  </form>
</table>
</body>
</html>

showMessage.jsp
<%@ page language="java" import="java.util.*,com.demo.Message"
	pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>查看留言</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
.line {
	border-bottom-width: 1px;
	border-bottom-style: dashed;
	border-bottom-color: #666;
	height: 10px;
}
body {
	margin-right: auto;
	margin-left: auto;
	text-align: center;
	max-width: 960px;
}
#main {
	border: 3px solid #999;
	background-color: #f5f5f5;
	padding: 1px;
	margin-right: auto;
	margin-left: auto;
	width: 960px;
}
#main table tr td {
	white-space: normal;
}
</style>
</head>

<body>
<div id="main">
  <div align="center">
    <h1> 留言列表 </h1>
  </div>
  <%
				response.setCharacterEncoding("utf-8");
				int p = 1;
				ArrayList messageList = (ArrayList) request.getAttribute("list");
				int prep = p; // 上一页
				int nextp = p; // 下一页
				if (messageList.size() == 5) {
					nextp = p + 1;
				}
				if (p > 1) {
					prep = p - 1;
				}
				if (!messageList.isEmpty()) {
					for (int i = 0; i < messageList.size(); i++) {
						Message message = (Message) messageList.get(i);
			%>
  <table width="700" border="1" align="center" cellpadding="2"
				cellspacing="0">
    <tr>
      <td width="130" align="right"> 姓名: </td>
      <td width="556" align="left"><%=message.getName()%></td>
    </tr>
    <tr>
      <td align="right"> 主题: </td>
      <td colspan="3" align="left"><%=message.getTitle()%></td>
    </tr>
    <tr>
      <td align="right"><span class="STYLE1">内容</span>: </td>
      <td colspan="3" align="left"><%=message.getContent()%></td>
    </tr>
    <div> <span style="float: right; clear: both"> <%=message.getTime()%> </span> <span><%=i + 1%>楼</span> </div>
  </table>
  <br>
  <div class="line"> </div>
  <br>
  <%
				}
				} else {
					out.print("<br><br>还没有留言!<br><br>");
				}
			%>
  <div align="center">
    <input type="button" value="上一页"
					onclick="window.location.href('MessageServlet?action=list&p=<%=prep%>')">
    &nbsp;
    <input type="button" value="下一页"
					onclick="window.location.href('MessageServlet?action=list&p=<%=nextp%>')">
    &nbsp;
    <input type="button" value="返回"
					onclick="window.location.href('../message.jsp')">
  </div>
</div>
</body>
</html>

---com.demo包---
Message.java
package com.demo;

/**
 * 留言实体封装类
 * 
 */
public class Message {
	private int id;
	private String name;
	private String title;
	private String content;
	private String time;

	public String getTime() {
		return time;
	}

	public void setTime(String time) {
		this.time = time;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() { return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

}

MessageServlet.java
package com.demo;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.demo.Message;
import com.demo.MessageDao;

public class MessageServlet extends HttpServlet {

	public void destroy() {
		super.destroy();
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		String action = request.getParameter("action");
		if (action.equals("add")) {
			this.addMessage(request, response); // 发表留言
		}
		if (action.equals("list")) { // 前台留言列表
			this.listMessage(request, response);
		}
	}

	/**
	 * 发表留言
	 */
	public void addMessage(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		String name = request.getParameter("name");
		String title = request.getParameter("title");
		String content = request.getParameter("content");
		Message message = new Message();
		message.setName(name);
		message.setTitle(title);
		message.setContent(content);
		MessageDao messageDao = new MessageDao();
		messageDao.addMessage(message);
		out.print("");
	}

	/**
	 * 
	 * @前台查看所有留言
	 */
	public void listMessage(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		int page = Integer.parseInt(request.getParameter("p"));
		MessageDao messageDao = new MessageDao();
		List list = null;
		list = messageDao.listByPage(page);
		request.setAttribute("list", list);
		request.getRequestDispatcher("../showMessage.jsp").forward(request,
				response);
	}

	public void init() throws ServletException {
	}

}

MessageDao.java
package com.demo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.demo.DbConnection;
import com.demo.Message;

/**
 * 
 * 留言保存数据库访问类
 * 
 */
public class MessageDao {
	private Connection coon = null;
	private PreparedStatement pstmt = null;
	private ResultSet rs = null;
	private String sql = "";

	public MessageDao() {
		coon = DbConnection.getConnection();
	}

	/**
	 * 保存留言
	 */
	public void addMessage(Message message) {

		System.out.println(message.getName());

		coon = DbConnection.getConnection();
		sql = "INSERT INTO `message` ( name, title,content,time)VALUES (?,?,?,now())";
		try {
			pstmt = coon.prepareStatement(sql);
			pstmt.setString(1, message.getName());
			pstmt.setString(2, message.getTitle());
			pstmt.setString(3, message.getContent());
			pstmt.executeUpdate();

		} catch (SQLException e) {

			e.printStackTrace();
		}

	}

	/**
	 * 查询所有留言
	 */
	public List listByPage(int page) {
		int num = 5;// 每页显示的记录数
		List list = new ArrayList();
		int rowBegin = 0;
		int rowEnd = 0;
		if (page > 1) {
			rowBegin = num * (page - 1);
			rowEnd = rowBegin + num;
			sql = "select * from message where id limit " + rowBegin + ","
					+ rowEnd;
		} else {
			sql = "select * from message order by id limit 5";
		}

		try {
			pstmt = coon.prepareStatement(sql);
			rs = pstmt.executeQuery();
			while (rs.next()) {
				Message message = new Message();
				message.setId(rs.getInt(1));
				message.setName(rs.getString(2));
				message.setTitle(rs.getString(3));
				message.setContent(rs.getString(4));
				message.setTime(rs.getDate(5) + " " + rs.getTime(5));
				list.add(message);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
}

DbConnection.java
package com.demo;

import java.sql.Connection;
import java.sql.DriverManager;

/**
 * 数据库连接类
 * 
 */
public class DbConnection {

	public static Connection getConnection() {
		Connection conn = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");

			conn = DriverManager
					.getConnection(
							"jdbc:mysql://127.0.0.1:3306/message?useUnicode=true&characterEncoding=utf8",
							"**********", "*********"); // **********分别代表数据库用户名,密码
		} catch (Exception e) {
			e.printStackTrace();
		}
		if (conn == null) {
			System.out.println("no get connection!throws Exception");
		}
		return conn;
	}
}

数据库脚本
-- ----------------------------
-- Table structure for `message`
-- ----------------------------
DROP TABLE IF EXISTS `message`;
CREATE TABLE `message` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(200) NOT NULL,
  `title` varchar(200) NOT NULL,
  `content` varchar(500) NOT NULL,
  `time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of message
-- ----------------------------