使用jsp实现留言板功能

                                                                                                         使用jsp实现留言板功能

一.开发环境

本项目使用eclipse+MySQL8.0进行开发 

在开发的过程中使用了一个jar包  mysql-connector-java-8.0.16.jar  点我下载

二.项目结构

1.index.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(src/images/back.png);
				text-align:center;
			}
			.mybtn{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
        <title>JSP留言板</title>
    </head>
    <body style="text-align:center;" >
        <h1>JSP留言板</h1><hr><br>
		<h2>欢迎光临我的留言板</h2><br>
		<h2>五秒后自动跳转到<a href="login.jsp">登陆窗口</a>!!!</h2><br>
        <%		
			response.setHeader("refresh", "5;URL=login.jsp");
        %>
	</body>
</html>

2.login_handle.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(images/back.png);
				text-align:center;
			}
			.mybtn{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
        <title>JSP留言板</title>
    </head>
    <body style="text-align:center;" >
        <h1>JSP留言板</h1><hr><br>
        <%!
            String DBDRIVER = "com.mysql.jdbc.Driver";
            String DBURL = "jdbc:mysql://localhost:3306/db_jsp?characterEncoding=utf-8&serverTimezone=UTC";
            String DBUSER = "root";
            String DBPASSWORD = "1234";
            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
        %>
        <%
            // 声明一个boolean变量,用于保存用户是否合法的状态
            boolean flag = false;

            // 接收参数
            String id = request.getParameter("id");   				//用户名
            String password = request.getParameter("password");    //用户密码
            String leixing = request.getParameter("leixing");		//用户类型
        %>
			<%--如果用户类型是学生 --%>
        <%
            if (leixing.equals("xuesheng"))
			{
        %>

			<%
				String sql = "SELECT name FROM person WHERE id=? and password=?";
				try
				{
					Class.forName(DBDRIVER);
					conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
					pstmt = conn.prepareStatement(sql);
					pstmt.setString(1, id);
					pstmt.setString(2, password);
					rs = pstmt.executeQuery();
					if(rs.next())
					{// 用户合法
						flag = true;
						// 将用户名保存在session之中
						session.setAttribute("uname", rs.getString(1));  //判断用户是否存在
						session.setAttribute("uleixing", "同学");  //判断用户类型
					}
					else
					{// 保存错误信息
						request.setAttribute("err", "错误的学生用户名及密码!!!");
					}
					rs.close();
					pstmt.close();
					conn.close();
				}
				catch(Exception e)
				{}
			%>
			<%--如果是管理员登录 --%>
        <%
			}
			else
			{

        %>
        <%
				String sql = "SELECT name FROM guanliyuan WHERE id=? and password=?";
				try
				{
					Class.forName(DBDRIVER);
					conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
					pstmt = conn.prepareStatement(sql);
					pstmt.setString(1, id);
					pstmt.setString(2, password);
					rs = pstmt.executeQuery();
					if (rs.next())
					{// 用户合法
						flag = true;
						// 将用户名保存在session之中
						session.setAttribute("uname", rs.getString(1));  //判断用户是否存在
						session.setAttribute("uleixing", "管理员");  //判断用户类型
					}
					else
					{// 保存错误信息
						request.setAttribute("err", "错误的管理员用户名及密码!!!");
					}
					rs.close();
					pstmt.close();
					conn.close();
				}
				catch (Exception e)
				{}
        %>

        <%
            }
        %>
        <%
            // 跳转
            if (flag)
			{// 用户合法
        %>
				<jsp:forward page="login_success.jsp"/>
        <%
			} 
			else 
			{ // 用户非法
        %>
				<jsp:forward page="login.jsp"/>
        <%
            }
        %>
	</body>
</html>

3.login_success.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(images/back.png);
				text-align:center;
			}
			.mybtn{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
        <title>JSP留言板</title>
    </head>
    <body style="text-align:center;" >
        <h1>JSP留言板</h1><hr><br>
        <%
            if(session.getAttribute("uname") != null)
			{
                // 用户已登陆
%>
				<h2>登陆成功</h2>
				<h2>欢迎<font color="red" size="12">
					<%=session.getAttribute("uname")%>
					<%="["%>
					<%=session.getAttribute("uleixing")%>
					<%="]"%>
					</font>光临我的留言板</h2>
				<h2>两秒后跳转到留言管理界面</h2>
        <%		response.setHeader("refresh", "2;URL=messageList.jsp");
        %>
				<h3><a href="addMessage.jsp">进入留言管理页面</a></h3>
        <%
			}
			else
			{// 用户未登陆,提示用户登陆,并跳转
				response.setHeader("refresh", "2;URL=login.jsp");
        %>
				您还未登陆,请先登陆!!!<br>
				两秒后自动跳转到登陆窗口!!!<br>
				如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br>
        <%
            }
        %>
	</body>
</html>

4.login.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(images/back.png);
				text-align:center;
			}
			table{
				margin:0px auto;
			}
			input,option,select{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
        <title>JSP留言板――登陆</title>
    </head>
    <SCRIPT type = "text/javascript">
        //下面的副程序将执行资料检查
        function isValid()
        {
            //下面的if判断语句将检查是否输入帐号资料
            if (frmLogin.id.value == "")
            {
                window.alert("您必须完成帐号的输入!");
                //显示错误信息
                document.frmLogin.elements(0).focus();
                //将光标移至帐号输入栏		
                return  false;
            }

            //下面的if判断语句将检查是否输入帐号密码
            if (frmLogin.password.value == "")
            {
                window.alert("您必须完成密码的输入!");
                //显示错误信息
                document.frmLogin.elements(1).focus();
                //将光标移至密码输入栏
                return  false;  //离开函数
            }

            frmLogin.submit(); //送出表单中的资料
        }
    </SCRIPT>		
    <body style="text-align:center;" >
        <h1>JSP留言板</h1><hr><br>
        
       	<br>
        <%
                // 判断是否有错误信息,如果有则打印
            // 如果没有此段代码,则显示时会直接打印null
            if (request.getAttribute("err") != null)
			{
        %>
				<h2><%=request.getAttribute("err")%></h2>
        <%
            }
        %>
        <form name="frmLogin" action="login_handle.jsp" method="post" onSubmit="return isValid(this);">
            <table >
                <tr>
                    <td colspan="2"><STRONG style="color:white;font-size:30px;">用户登陆</STRONG></td>
                </tr>
				<tr><td height="40"></td></tr>
				
                <%--用户类型判断 --%>
                <tr>
                    <td>用户类型:</td>
                    <td><select name="leixing">
                            <option  value="xuesheng" >学生</option>
                            <option value="guanliyuan" >管理员</option>
                        </select></td>
                </tr>
                <tr><td height="5"></td></tr>
                
                <%--用户类型判断 --%>
                <tr>
                    <td>用 户 名 :</td>
                    <td><input type="text"  name="id" id="id" ></td>
                </tr>
                <tr><td height="5"></td></tr>
                
                <tr>
                    <td>密&nbsp;&nbsp;码:</td>
                    <td><input type="password" name="password" id="password"></td>
                </tr>
                <tr><td height="20"></td></tr>
                
                <tr>
                    <td colspan="2">
                        <input type="submit" value="登陆">
                        <input type="reset" value="重置">
                        <a href="register.jsp">点击立即注册</a>
                    </td>
                </tr>
            </table>
        </form>
	</body>
</html>

4.messageList.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.sql.*"%>

<%!
    String str;

    public String subStr(String str)
	{
        if (str == null || "".equals(str))
		{
            return "";
        }
        if (str.length() > 10)		//return str.substring(0,10) + "...";
        {
            return str;
        }
		else
		{
            return str;
        }
    }
%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(images/back.png);
				text-align:center;
			}
			table{
				text-align:center;
				margin:0px auto;
			}
			input,option,select{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
        <title >JSP留言板</title>
        <script type="text/javascript">
            //弹窗提示
            function Msg(canshu)
			{
                alert(canshu);
            }
        </script>
    </head>
    <body  background="images/back.png" style="text-align:center;" >
        <h1>JSP留言板</h1><hr><br>
        <%
            // 编码转换
            request.setCharacterEncoding("UTF-8");
            if(session.getAttribute("uname") != null)
			{
                        // 用户已登陆
        %>
			<%!
				String DBDRIVER = "com.mysql.jdbc.Driver";
			    String DBURL = "jdbc:mysql://localhost:3306/db_jsp?characterEncoding=utf-8&serverTimezone=UTC";
				String DBUSER = "root";
				String DBPASSWORD = "1234";
				Connection conn = null;
				PreparedStatement pstmt = null;
				ResultSet rs = null;
			%>
			<%
				// 如果有内容,则修改变量i,如果没有,则根据i的值进行无内容提示
				int i = 0;
				String sql = null;
				String keyword = request.getParameter("keyword");
				// out.println(keyword) ;
				if (keyword == null)
				{
					// 没有任何查询条件
					sql = "SELECT id,title,author,content FROM note";
				}
				else
				{
					// 有查询条件
					sql = "SELECT id,title,author,content FROM note WHERE title like ? or author like ? or content like ?";
				}

				try
				{
					Class.forName(DBDRIVER);
					conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
					pstmt = conn.prepareStatement(sql);

					// 如果存在查询内容,则需要设置查询条件
					if (keyword != null) {
						// 存在查询条件
						pstmt.setString(1, "%" + keyword + "%");
						pstmt.setString(2, "%" + keyword + "%");
						pstmt.setString(3, "%" + keyword + "%");
					}

					rs = pstmt.executeQuery();
			%>
					<form action="messageList.jsp" method="POST">
						请输入查询内容:<input type="text" name="keyword">
						<input type="submit" class="mybtn" value="查询">
					</form>
					<h3>
						<a href="addMessage.jsp">添加新留言</a>        
						<a href="exit.jsp">退出留言操作</a>
					</h3>
				<%
					if(session.getAttribute("uleixing").equals("同学"))
					{
				%>
						<table >
							<tr>
								<td>留言ID</td>
								<td>标题</td>
								<td>用户</td>
								<td>内容</td>
								<td></td>
								<td></td>
							</tr>
							<tr><td height="10"></td></tr>
					<%
						while (rs.next())
						{
							i++;
											// 进行循环打印,打印出所有的内容,以表格形式
							// 从数据库中取出内容
							int id = rs.getInt(1);
							String title = rs.getString(2);
							String author = rs.getString(3);
							String content = rs.getString(4);

							if(keyword != null)
							{
								// 需要将数据返红
								title = title.replaceAll(keyword, "<font color=\"red\">" + keyword + "</font>");
								author = author.replaceAll(keyword, "<font color=\"red\">" + keyword + "</font>");
								content = content.replaceAll(keyword, "<font color=\"red\">" + keyword + "</font>");
							}
					%>
							<tr>
								<td><%=id%></td>
								<td><a href="chgMessage.jsp?id=<%=id%>"><%=title%></a></td>
								<td><%=author%></td>
								<td style="height:20px;"><img src="images/list.png" /><STRONG style="color:#ffcc00;"><%=subStr(content)%></STRONG></td>
								<td><a href="#" onclick="Msg('管理员才可以进行删除操作')" >删除</a></td>
								<td><a href="#" onclick="Msg('管理员才可以进行编辑操作')" >编辑</a></td>
							</tr>
							<tr><td height="5"></td></tr>
					<%
						}
						// 判断i的值是否改变,如果改变,则表示有内容,反之,无内容
						if(i == 0)
						{
							// 进行提示
					%>
							<tr>
								<td colspan="5">没有任何内容!!!</td>
							</tr>
					<%
						}
					%>
						</table>
			<%
					}
					else
					{
			%>
						<table>
							<tr>
								<td>留言ID</td>
								<td>标题</td>
								<td>用户</td>
								<td>内容</td>
								<td></td>
								<td></td>
							</tr>
					<%
						while(rs.next())
						{
							i++;
											// 进行循环打印,打印出所有的内容,以表格形式
							// 从数据库中取出内容
							int id = rs.getInt(1);
							String title = rs.getString(2);
							String author = rs.getString(3);
							String content = rs.getString(4);

							if(keyword != null)
							{
								// 需要将数据返红
								title = title.replaceAll(keyword, "<font color=\"red\">" + keyword + "</font>");
								author = author.replaceAll(keyword, "<font color=\"red\">" + keyword + "</font>");
								content = content.replaceAll(keyword, "<font color=\"red\">" + keyword + "</font>");
							}
					%>
							<tr>
								<td><%=id%></td>
								<td><a href="chgMessage.jsp?id=<%=id%>"><%=title%></a></td>
								<td><%=author%></td>
								<td style="height:20px;"><img src="images/list.png" /><STRONG style="color:#ffcc00;"><%=subStr(content)%></STRONG></td>
								<td><a href="delete_handle.jsp?id=<%=id%>">删除</a></td>
								<td><a href="chgMessage.jsp?id=<%=id%>">编辑</a></td>
							</tr>

					<%
						}
						// 判断i的值是否改变,如果改变,则表示有内容,反之,无内容
						if(i == 0)
						{
								// 进行提示
					%>
							<tr>
								<td colspan="5">没有任何内容!!!</td>
							</tr>
					<%
						}
					%>
						</table>

				<%
					//判断用户的类型结束标志
					}
				%>
				<%
					rs.close();
					pstmt.close();
					conn.close();
				}
				catch (Exception e)
				{}
		%>
<%
			}
			else
			{
				// 用户未登陆,提示用户登陆,并跳转
				response.setHeader("refresh", "2;URL=login.jsp");
%>
				您还未登陆,请先登陆!!!<br>
				两秒后自动跳转到登陆窗口!!!<br>
				如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br>
				<hr>
		<%
			}
		%>
	</body>
</html>

5.register_handle.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(images/back.png);
				text-align:center;
			}
			.mybtn{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
        <title>JSP留言板</title>
    </head>
    <body >
        <h1>JSP留言板</h1><hr><br>
        <%
            // 进行乱码处理
            request.setCharacterEncoding("UTF-8");
        %>

        <%!
            String DBDRIVER = "com.mysql.jdbc.Driver";
            String DBURL = "jdbc:mysql://localhost:3306/db_jsp?characterEncoding=utf-8&serverTimezone=UTC";
            String DBUSER = "root";
            String DBPASSWORD = "1234";
            Connection conn = null;
            Statement stmt = null;
        %>
        <%
            // 声明一个boolean变量
            boolean flag = false;

            // 接收参数
            String leixing = request.getParameter("leixing");
            String id = request.getParameter("id");
            String name = request.getParameter("name");
            String psw = request.getParameter("psw");
        %>
        <%
            //判断用户类型,学生注册,
            if(leixing.equals("xuesheng"))
			{
        %>
			<%
				// 现在note表中的主键是id自动递增生成
				String sql = "INSERT INTO person(id,name,password)"
						+ " VALUES ('" + id + "','"
						+ name + "','"
						+ psw + "')";
				try
				{
					Class.forName(DBDRIVER);
					conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
					stmt = (Statement) conn.createStatement();
					stmt.executeUpdate(sql);
					stmt.close();
					conn.close();
					// 如果插入成功,则肯定能执行到此段代码
					flag = true;

				}
				catch(Exception e)
				{
					System.out.println("数据库连接失败:" + e.getMessage());
				}
			%>
        <%
            //判断用户类型,管理员注册,
			}
			else
			{
        %>
			<%
				// 现在note表中的主键是id自动递增生成
				String sql = "INSERT INTO guanliyuan(id,name,password)"
							+ " VALUES ('" 
							+ id 
							+ "','"
							+ name 
							+ "','"
							+ psw 
							+ "')";
				try
				{
					Class.forName(DBDRIVER);
					conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
					stmt = (Statement) conn.createStatement();
					stmt.executeUpdate(sql);
					stmt.close();
					conn.close();
					// 如果插入成功,则肯定能执行到此段代码
					flag = true;

				}
				catch(Exception e)
				{
					System.out.println("数据库连接失败:" + e.getMessage());
				}
			%>
        <%
            }
        %>

        <%
            response.setHeader("refresh", "2;URL=login.jsp");
            if (flag) {
        %>
        会员注册成功,两秒后跳转到登陆首页!!!<br>
        如果没有跳转,请按<a href="login.jsp">这里</a>!!!
        <hr>
        <%
        } else {
        %>
        会员注册失败,两秒后跳转到登陆首页!!!<br>
        如果没有跳转,请按<a href="register.jsp">这里</a>!!!
        <hr>
        <%
            }
        %>
	</body>
</html>

6.register.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(images/back.png);
				text-align:center;
			}
			table{
				margin:0px auto;
			}
			input,option,select{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
        <title>JSP留言板――注册</title>
    </head>
    <body style="text-align:center;" >
        <h1>JSP留言板</h1><hr><br>
        <%
            request.setCharacterEncoding("UTF-8");
        %>
        <%--注册信息写入数据库 --%>


        <form action="register_handle.jsp" method="post">
            <table>
                <tr>
                    <td colspan="2">注册信息:</td>
                </tr>
                <tr><td height="40"></td></tr>
                
                <%--用户类型判断 --%>
                <tr>
                    <td>用户类型:</td>
                    <td><select name="leixing">
                            <option  value="xuesheng" >学生</option>
                            <option value="guanliyuan" >管理员</option>
                        </select></td>
                    <td style="color:#F00;">学生普通操作,管理员进行编辑和删除</td>
                </tr>
                <tr><td height="5"></td></tr>
                
                <%--用户类型判断 --%>
                <tr>
                    <td>用户ID:</td>
                    <td><input type="text" name="id"></td>
                    <td  style="color:#F00;">必须为数字</td>
                </tr>
                <tr><td height="5"></td></tr>
                
                <tr>
                    <td>真实姓名:</td>
                    <td><input type="text" name="name"></td>
                </tr>
                <tr><td height="5"></td></tr>
                <tr>
                    <td>密码:</td>
                    <td><input type="text" name="psw"></td>
                </tr>
                <tr><td height="20"></td></tr>
                <tr>
                    <td colspan="2">
                        <input type="submit" value="注册">
                        <input type="reset" value="重置">
                    </td>
                </tr>
            </table>
        </form>
        <h3><a href="login.jsp">回到登陆首页</a></h3>
        <hr>
	</body>
</html>

7.addmessage_handle.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.sql.*"%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(images/back.png);
				text-align:center;
			}
			.mybtn{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
        <title>JSP留言板</title>
    </head>
    <body style="text-align:center;" >
        <h1>JSP留言板</h1><hr><br>
        <%
            // 进行乱码处理
            request.setCharacterEncoding("UTF-8");
        %>
        <%
            if(session.getAttribute("uname") != null)
			{// 用户已登陆
        %>
			<%!
				String DBDRIVER = "com.mysql.jdbc.Driver";
			    String DBURL = "jdbc:mysql://localhost:3306/db_jsp?characterEncoding=utf-8&serverTimezone=UTC";
				String DBUSER = "root";
				String DBPASSWORD = "1234";
				Connection conn = null;
				Statement stmt = null;
			%>
			<%
				// 声明一个boolean变量
				boolean flag = false;

				// 接收参数
				String title1 = request.getParameter("title");
				String author1 = request.getParameter("author");
				String content1 = request.getParameter("content");
			%>
			<%
					// 现在note表中的主键是id自动递增生成
				String sql = "INSERT INTO note(title,author,content)"
						+ " VALUES ('" + title1 + "','"
						+ author1 + "','"
						+ content1 + "')";
				try
				{
					Class.forName(DBDRIVER);
					conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
					stmt = (Statement) conn.createStatement();
					stmt.executeUpdate(sql);
					stmt.close();
					conn.close();
					// 如果插入成功,则肯定能执行到此段代码
					flag = true;

				}
				catch(Exception e)
				{
					System.out.println("数据库连接失败:" + e.getMessage());
				}
			%>
			<%
				response.setHeader("refresh", "2;URL=messageList.jsp");
				if(flag)
				{
			%>
					留言添加成功,两秒后跳转到留言列表页!!!<br>
					如果没有跳转,请按<a href="messageList.jsp">这里</a>!!!
					<hr>
			<%
				}
				else
				{
			%>
					留言添加失败,两秒后跳转到留言列表页!!!<br>
					如果没有跳转,请按<a href="messageList.jsp">这里</a>!!!
					<hr>
			<%
				}
			%>
        <%
			}
			else
			{
				// 用户未登陆,提示用户登陆,并跳转
				response.setHeader("refresh", "2;URL=login.jsp");
        %>
				您还未登陆,请先登陆!!!<br>
				两秒后自动跳转到登陆窗口!!!<br>
				如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br>
				<hr>
        <%
            }
        %>
	</body>
</html>

8.addMessage.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(images/back.png);
				text-align:center;
			}
			table{
				margin:0px auto;
			}
			input,option{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
        <title>JSP留言板</title>
    </head>
    <body style="text-align:center;" >
        <h1>JSP留言板</h1><hr><br>
        <%
            if (session.getAttribute("uname") != null)
			{
                        // 用户已登陆
        %>
				<form action="addMessage_handle.jsp" method="post">
					<table>
						<tr>
							<td colspan="2">添加新留言</td>
						</tr>
						<tr><td height="5"></td></tr>
						<tr>
							<td>标题:</td>
							<td><input type="text" name="title"></td>
						</tr>
						<tr><td height="5"></td></tr>
						<tr>
							<td>作者:</td>
							<td><input type="text" name="author"></td>
						</tr>
						<tr><td height="5"></td></tr>
						<tr>
							<td>内容:</td>
							<td><textarea name="content" cols="30" rows="6"></textarea></td>
						</tr>
						<tr><td height="5"></td></tr>
						<tr>
							<td colspan="2">
								<input type="submit" value="添加">
								<input type="reset" value="重置">
							</td>
						</tr>
					</table>
				</form>
				<h3><a href="messageList.jsp">回到留言列表页</a></h3>
        <%
			}
			else
			{
				// 用户未登陆,提示用户登陆,并跳转
				response.setHeader("refresh", "2;URL=login.jsp");
        %>
				您还未登陆,请先登陆!!!<br>
				两秒后自动跳转到登陆窗口!!!<br>
				如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br>
        <%
            }
        %>
	</body>
</html>

9.chgMessage.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(images/back.png);
				text-align:center;
			}
			.mybtn{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
        <title>JSP留言板</title>
    </head>
    <body style="text-align:center;" >
        <h1>JSP留言板</h1><hr><br>
        <%// 进行乱码处理
            request.setCharacterEncoding("UTF-8");
        %>
        <%
            if(session.getAttribute("uname") != null)
			{
                        // 用户已登陆
        %>
			<%!
				String DBDRIVER = "com.mysql.jdbc.Driver";
			    String DBURL = "jdbc:mysql://localhost:3306/db_jsp?characterEncoding=utf-8&serverTimezone=UTC";
				String DBUSER = "root";
				String DBPASSWORD = "1234";
				Connection conn = null;
				PreparedStatement pstmt = null;
			%>
			<%
				// 声明一个boolean变量
				boolean flag = false;

				// 接收参数
				String title = request.getParameter("title");
				String author = request.getParameter("author");
				String content = request.getParameter("content");
				int id = 0;
				try
				{
					id = Integer.parseInt(request.getParameter("id"));
				}
				catch(Exception e)
				{}
			%>
			<%
				// 更新note表中的数据
				String sql = "UPDATE note set title=?,author=?,content=? WHERE id=?";
				try
				{
					Class.forName(DBDRIVER);
					conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
					pstmt = conn.prepareStatement(sql);
					pstmt.setString(1, title);
					pstmt.setString(2, author);
					pstmt.setString(3, content);
					pstmt.setInt(4, id);
					pstmt.executeUpdate();
					pstmt.close();
					conn.close();
					// 如果修改成功,则肯定能执行到此段代码
					flag = true;
				}catch (Exception e)
				{}
			%>
			<%
				response.setHeader("refresh", "2;URL=messageList.jsp");
				if(flag)
				{
			%>
					留言修改成功,两秒后跳转到留言列表页!!!<br>
					如果没有跳转,请按<a href="messageList.jsp">这里</a>!!!
			<%
				}
				else
				{
			%>
					留言修改失败,两秒后跳转到留言列表页!!!<br>
					如果没有跳转,请按<a href="messageList.jsp">这里</a>!!!
			<%
				}
			%>
        <%
			}
			else
			{
				// 用户未登陆,提示用户登陆,并跳转
				response.setHeader("refresh", "2;URL=login.jsp");
        %>
				您还未登陆,请先登陆!!!<br>
				两秒后自动跳转到登陆窗口!!!<br>
				如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br>
        <%
            }
        %>
	</body>
</html>

10.delete_handle.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(images/back.png);
				text-align:center;
			}
			.mybtn{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
        <title>JSP留言板</title>
    </head>
    <body style="text-align:center;" >
        <h1>JSP留言板</h1><hr><br>
        <%
            if(session.getAttribute("uname") != null)
			{
                        // 用户已登陆
        %>	
			<%!
				String DBDRIVER = "com.mysql.jdbc.Driver";
			    String DBURL = "jdbc:mysql://localhost:3306/db_jsp?characterEncoding=utf-8&serverTimezone=UTC";
				String DBUSER = "root";
				String DBPASSWORD = "1234";
				Connection conn = null;
				PreparedStatement pstmt = null;
				ResultSet rs = null;
			%>
			<%
				// 接收参数
				int id = 0;
				try
				{
					id = Integer.parseInt(request.getParameter("id"));
				}
				catch(Exception e)
				{}
			%>
			<%
				String sql = "DELETE FROM note WHERE id=?";
				boolean flag = false;
				try
				{
					Class.forName(DBDRIVER);
					conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
					pstmt = conn.prepareStatement(sql);
					// 设置删除条件
					pstmt.setInt(1, id);
					pstmt.executeUpdate();
					pstmt.close();
					conn.close();
					flag = true;
				}
				catch(Exception e)
				{}
			%>
			<%
				response.setHeader("refresh", "2;URL=messageList.jsp");
				if(flag)
				{
			%>
					留言删除成功,两秒后跳转到留言列表页!!!<br>
					如果没有跳转,请按<a href="messageList.jsp">这里</a>!!!
			<%
				}
				else
				{
			%>
					留言删除失败,两秒后跳转到留言列表页!!!<br>
					如果没有跳转,请按<a href="messageList.jsp">这里</a>!!!
			<%
				}
			%>
        <%
			}
			else
			{
				// 用户未登陆,提示用户登陆,并跳转
				response.setHeader("refresh", "2;URL=login.jsp");
        %>
				您还未登陆,请先登陆!!!<br>
				两秒后自动跳转到登陆窗口!!!<br>
				如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br>
        <%
            }
        %>
	</body>
</html>

11.exit.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<style type="text/css" >
			*{ 
				font-size:20px;
				color:#a6a6a6;
			}
			body{
				background:url(images/back.png);
				text-align:center;
			}
			table{
				margin:0px auto;
			}
			input,option{
				color:black;
			}
			a:link{
				color:#b38f00;
				text-decoration:none;
				
			}
			a:hover{
				color:red;
				text-decoration:none;
			}
			a:active{
				color:#ffcc00;
			}
			a:visted{
				color:#ffcc00;
			}
		</style>
		<title>JSP留言板</title>
	</head>
	<body style="text-align:center;" >
		<h1>JSP留言板</h1><hr><br>
		<%// 进行乱码处理
			request.setCharacterEncoding("UTF-8") ;
		%>
		<%//退出对留言板的操作
			if(session.getAttribute("uname")!=null)
			{
				session.setAttribute("uname","null") ;
				session.invalidate();
				out.print("您已经成功退出,若要进行其他操作,<a href='login.jsp'>请重新登录</a>");
				out.print("<hr>");
			}
			else
			{
				out.print("您已经成功退出,若要进行其他操作,<a href='login.jsp'>请重新登录</a>");	
			}
		%>
	</body>
</html>

三.项目目录

四.数据库字段

五.项目截图

六.注意事项

在注册用户的时候尽量不要注册相同的用户名和密码 否则可能出现主键冲突问题报错

七.结语

内容有点长,用心整理,按照项目结构部署不会出现问题,我使用的是jdk1.8和mysql8.0,大家在连接数据库的时候需要将数据库

用户名和密码改成自己的用户名和密码,如有其它问题评论区交流

猜你喜欢

转载自blog.csdn.net/ajhk11/article/details/109786878