第一步:在myeclipse中导入数据库
CREATE TABLE `note` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(20) NOT NULL,
`author` varchar(20) NOT NULL,
`content` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of note
-- ----------------------------
INSERT INTO `note` VALUES ('1', 'Hello', '灏忔槑', '鎴戣灏忔槑锛屼綘濂�);
INSERT INTO `note` VALUES ('2', '鍡摷', '灏忕孩', '浠婂ぉ鎸戣捣寰堢碂绯�);
CREATE TABLE `person` (
`id` varchar(20) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of person
-- ----------------------------
INSERT INTO `person` VALUES ('aaa', 'AA', '111');
INSERT INTO `person` VALUES ('red', '小红', '123');
INSERT INTO `person` VALUES ('小明', '大明', '111');
第二步:登录界面(index.jsp)
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>留言管理管理系统的登录界面</title>
</head>
<body>
<%
//判断是否有错误,若有,就打印显示
if(request.getAttribute("err")!=null){
%>
<font color="red">提示:<%= request.getAttribute("err")%></font>
<%
}
%>
<form action="dologin.jsp" method="get">
<table cellpadding="0" cellspacing="0" border="0">
<tr><td>用户名:</td><td><input type="text" name="id"/></td></tr>
<tr><td>密 码:</td><td><input type="password" name="password"/></td></tr>
<tr>
<td><input type="submit" value="登录"/></td><td><input type="reset" value="重置"/></td>
</tr>
</table>
</form>
</body>
</html>
第三步:处理登录界面(如果用户名和密码正确就进入“登录成功页面”,否则,返回登录界面,出现提示信息)
<%@page import="java.sql.ResultSet"%>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%@ page import="java.sql.* ,com.bright.util.*"%>
<html>
<head>
<title>处理登录界面</title>
</head>
<body>
<%!
Connection conn =null;//创建连接
PreparedStatement stat=null;//预处理命令
ResultSet rs =null;//结果集
%>
<%
//声明一个boolean类型的参数,用于保存用户的合法状态的
boolean flag=false;
//接受参数
String id=request.getParameter("id"); //先获取表单中的name
String password=request.getParameter("password");//先获取表单中的密码
%>
<%
String sql="select name from person where id=? and password=?";
try{
conn = Util.getConnection();//创建连接(通过Util类)
stat = conn.prepareStatement(sql);
stat.setString(1, id);
stat.setString(2, password);
rs=stat.executeQuery(); //将查询到的结果放在结果集中
//如果查询到了
if(rs.next()){
flag=true;
String uname=rs.getString("name");
//session.setAttribute("sessionName",Object);用来设置session值的,sessionName是名称,object是你要保存的对象。
session.setAttribute("uname",uname);//将name保存在名为uname的session中
}else{
//保存错误信息
request.setAttribute("err", "用户名或者密码错误");
}
rs.close();//关闭结果集
stat.close();//关闭预处理命令
conn.close();//关闭连接
}catch(Exception e){
e.printStackTrace();
}
%>
<%
//判断了之后进行页面跳转,为true就跳转到成功的界面,否则返回登录界面
if(flag){
//用户合法
%>
<jsp:forward page="login_success.jsp"></jsp:forward>
<%
}else{
//用户非法
%>
<jsp:forward page="index.jsp"></jsp:forward>
<%
}
%>
</body>
</html>
第四步:登录成功页面
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'login_success.jsp' starting page</title>
</head>
<body>
<center>
<%
//如果session中的uname不为空,则可以查看下面的内容,这样可以防止非法登录
if(session.getAttribute("uname")!=null){
%>
<h1>恭喜<%=session.getAttribute("uname") %>登录成功!</h1>
进入<a href="list_note.jsp">留言区</a>
<%
}else{
//一秒刷新页面一次 response.setHeader("refresh","1");
//二秒跳到其它页面 response.setHeader("refresh","2;URL=otherPagename");
response.setHeader("refresh","2;URL=index.jsp");
%>
您还未登录!请登录<br/>
两秒后自动跳转到登录串口!<br/>
如未跳转,点击<a href="index.jsp">这里</a>
<%
}
%>
</center>
</body>
</html>
第五步:进入留言页面(可以在这个页面中进行增删留言,查询留言)
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.sql.*,com.bright.util.Util"%>
<html>
<head>
<title>留言管理</title>
</head>
<body>
<center>
<!-- center可以让内容居中显示 -->
<h1>留言管理</h1>
<hr><br/>
<!-- 判断用户是否登录 -->
<%
request.setCharacterEncoding("utf-8");
//如果session中存储的uname不为空,就可以进入留言管理系统
if(session.getAttribute("uname")!=null)
{
//用户已经登录
%>
<%
//连接数据库
Connection conn =null;
PreparedStatement stat =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 * from note";
}else
{
//有查询条件
sql="select * from note where title like ? or author like ? or content like ? ";
}
try
{
//连接数据库
conn=Util.getConnection();
stat=conn.prepareStatement(sql);
//如果存在查询内容,就要设置查询条件
if(keyword!=null)
{
//存在查询条件,就存储到结果集中
stat.setString(1, "%"+keyword+"%");
stat.setString(2, "%"+keyword+"%");
stat.setString(3, "%"+keyword+"%");
}
//PS:如果这一句放在上面的括号中,就什么内容也查询不到
rs=stat.executeQuery(); //将查询到的结果放到结果集中
%>
<form action="list_note.jsp" method="post">
请输入查询的内容:<input type="text" name="keyword">
<input type="submit" value="查询">
</form>
<a href=""insert.jsp>添加新留言</a>
<table border="1" cellpading=0 cellspacing=0 width="80%">
<tr>
<th>留言ID</th>
<th>标题</th>
<th>作者</th>
<th>内容</th>
<th>操作</th>
</tr>
<%
//如果rs中查询到了下一条,就进行循环打印所有的结果
while(rs.next())
{
i++;//不要写掉了
//从数据库中取出内容
int id=rs.getInt("id");
String title=rs.getString("title");
String author=rs.getString("author");
String content=rs.getString("content");
if(keyword!=null){
//如果查询的内容不为空,就将数据用红色显示出来
title = title.replaceAll(keyword,"<font color='red'>"+keyword+"</font>");//PS:不要把keyword卸载引号里面了
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="update.jsp?id=<%=id%>"><%=title%></a></td> <!-- 根据id可以更新 -->
<td><%=author%></td>
<td><%=content%></td>
<td><a href="delete.jsp?id=<%=id %>">删除</a></td>
</tr>
<%
}
//判断i的值是否改变,如果改变,则表示有内容
if(i==0)
{
//进行提示
%>
<tr>
<td colspan="5'">没有任何内容!!!</td>
</tr>
<%
}
%>
</table>
<%
//关闭集合
rs.close();
//关闭预处理
stat.close();
//关闭连接
conn.close();
}
catch(Exception e)
{}
%>
<!-- 用户未登录 -->
<%
}
else{
// 用户未登陆,提示用户登陆,并跳转
response.setHeader("refresh", "2;url='index.jsp");
%>
您还未登录!请登录<br/>
两秒后自动跳转到登录串口!<br/>
如未跳转,点击<a href="index.jsp">这里</a>
<%
}
%>
</center>
</body>
</html>
第六步:
①删除留言信息
<%@page import="java.sql.*"%>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%@page import="com.bright.util.Util" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>根据id删除信息的页面</title>
</head>
<body>
<center>
<!-- 线判断用户是否登录 -->
<%
request.setCharacterEncoding("utf-8");
if(session.getAttribute("uname")!=null)
{
//用户已登录
%>
<%
//连接数据库
Connection conn =null;
PreparedStatement stat=null;
%>
<%
//声明一个boolean变量
boolean flag=false;
//接收参数
int id=0;
try
{
id=Integer.parseInt(request.getParameter("id"));
}catch(Exception e)
{}
%>
<%
//更新数据库中的数据
String sql="delete from note where id=?";
try
{
conn=Util.getConnection();
stat=conn.prepareStatement(sql);
//设置删除的条件
stat.setInt(1, id);
//将查询到的结果方法放在结果集中
stat.executeUpdate();
//关闭连接
stat.close();
conn.close();
//如果修改成功,就会执行这一句,将flag还为true
flag=true;
}
catch(Exception e)
{}
%>
<%
response.setHeader("refresh", "2;url=list_note.jsp");
if(flag)
{
%>
留言删除成功,两秒后跳转到留言管理<br/>
如果没有跳转,点击<a href="list_note.jsp">这里</a>
<%
}else
{
%>
留言删除失败,两秒后跳转到留言管理<br/>
如果没有跳转,点击<a href="list_note.jsp">这里</a>
<%
}
%>
<%
}
else{
//用户还未登录,显示提示信息
response.setHeader("refresh", "2;url=index.jsp");
%>
您还未登录!请登录<br/>
两秒后自动跳转到登录串口!<br/>
如未跳转,点击<a href="index.jsp">这里</a>
<%
}
%>
</center>
</body>
</html>
第七步:
①增加留言信息:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=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>
<title>添加新留言</title>
</head>
<body>
<%
//判断是否登录
if(session.getAttribute("uname")!=null)
{
//用户已经登录
%>
<form action="do_insert.jsp" method="post">
<table border="1" cellpading=0 cellspacing=0 width="80%">
<tr>
<td colspan="2">添加新留言</td>
</tr>
<tr>
<td>标题</td>
<td><input type="text" name="title"/></td>
</tr>
<tr>
<td>作者</td>
<td><input type="text" name="author"/></td>
</tr>
<tr>
<td>内容</td>
<td><input type="text" name="content"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="添加">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
<h3><a href="list_note.jsp">回到留言列表页</a></h3>
<%
}else
{
//用户还未登录,显示提示信息
response.setHeader("refresh", "2;url=index.jsp");
%>
您还未登录!请登录<br/>
两秒后自动跳转到登录串口!<br/>
如未跳转,点击<a href="index.jsp">这里</a>
<%
}
%>
</body>
</html>
②处理增加:
<%@page import="java.sql.*"%>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%@page import="com.bright.util.Util" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>处理修改信息的页面</title>
</head>
<body>
<center>
<!-- 线判断用户是否登录 -->
<%
request.setCharacterEncoding("utf-8");
if(session.getAttribute("uname")!=null)
{
//用户已登录
%>
<%
//连接数据库
Connection conn =null;
PreparedStatement stat=null;
%>
<%
//声明一个boolean变量
boolean flag=false;
//接收参数
String title=request.getParameter("title");
String author=request.getParameter("author");
String content=request.getParameter("content");
%>
<%
//更新数据库中的数据 null代表的是id,因为数据库中设置的是自增长,不用赋值
String sql="insert into note values(null,?,?,?)";
try
{
conn=Util.getConnection();
stat=conn.prepareStatement(sql);
//设置查询的条件
stat.setString(1, title);
stat.setString(2, author);
stat.setString(3, content);
//将查询到的结果方法哦结果集中
stat.executeUpdate();
//关闭连接
stat.close();
conn.close();
//如果修改成功,就会执行这一句,将flag还为true
flag=true;
}
catch(Exception e)
{}
%>
<%
response.setHeader("refresh", "2;url=list_note.jsp");
if(flag)
{
%>
留言添加成功,两秒后跳转到留言管理<br/>
如果没有跳转,点击<a href="list_note.jsp">这里</a>
<%
}else
{
%>
留言添加失败,两秒后跳转到留言管理<br/>
如果没有跳转,点击<a href="list_note.jsp">这里</a>
<%
}
%>
<%
}
else{
//用户还未登录,显示提示信息
response.setHeader("refresh", "2;url=index.jsp");
%>
您还未登录!请登录<br/>
两秒后自动跳转到登录串口!<br/>
如未跳转,点击<a href="index.jsp">这里</a>
<%
}
%>
</center>
</body>
</html>
第八步:
①根据id更新信息:
<%@page import="java.sql.*"%>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%@page import="com.bright.util.Util" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>点击标题修改信息</title>
</head>
<body>
<center>
<!-- 线判断用户是否登录 -->
<%
request.setCharacterEncoding("utf-8");
if(session.getAttribute("uname")!=null)
{
//用户已登录
%>
<%
//连接数据库
Connection conn =null;
PreparedStatement stat=null;
ResultSet rs =null;
%>
<%
//接收参数
int id=0;
try
{
id=Integer.parseInt(request.getParameter("id"));
}catch(Exception e)
{}
%>
<%
//如果有内容,就修改变量i;如果没有内容,就进行无内容提示
int i=0;
String sql="select * from note where id=?";
try
{
conn=Util.getConnection();
stat=conn.prepareStatement(sql);
//设置查询的条件
stat.setInt(1, id);
//将查询到的结果方法哦结果集中
rs=stat.executeQuery();
%>
<%
//如果查询到下一条语句
if(rs.next())
{
i++;
//从数据库中取出数据,进行循环打印
id=rs.getInt("id");
String title=rs.getString("title");
String author=rs.getString("author");
String content=rs.getString("content");
%>
<form action="do_update.jsp" method="post">
<table border="1" cellpading=0 cellspacing=0 width="80%">
<tr>
<td colspan="2">添加新留言</td>
</tr>
<tr>
<td>标题</td>
<td><input type="text" name="title" value="<%=title%>"/></td>
</tr>
<tr>
<td>作者</td>
<td><input type="text" name="author" value="<%=author%>"/></td>
</tr>
<tr>
<td>内容</td>
<td><input type="text" name="content" value="<%=content%>"/></td>
</tr>
<tr>
<td colspan="2">
<input type="hidden" name="id" value="<%=id%>"/>
<input type="submit" value="更新">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
<%
}
else
{
%>
没有发现要更新的内容!!<br/>
请确认留言是否存在!!
<%
}
%>
<%
//关闭结果集
rs.close();
//关闭预处理
rs.close();
//关闭连接
conn.close();
}catch(Exception e)
{}
%>
<%
}
else{
//用户还未登录,显示提示信息
response.setHeader("refresh", "2;url=index.jsp");
%>
您还未登录!请登录<br/>
两秒后自动跳转到登录串口!<br/>
如未跳转,点击<a href="index.jsp">这里</a>
<%
}
%>
</center>
</body>
</html>
②处理更新:
<%@page import="java.sql.*"%>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%@page import="com.bright.util.Util" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>处理更新信息的页面</title>
</head>
<body>
<center>
<!-- 线判断用户是否登录 -->
<%
request.setCharacterEncoding("utf-8");
if(session.getAttribute("uname")!=null)
{
//用户已登录
%>
<%
//连接数据库
Connection conn =null;
PreparedStatement stat=null;
%>
<%
//声明一个boolean变量
boolean flag=false;
//接收参数
String title=request.getParameter("title");
String author=request.getParameter("author");
String content=request.getParameter("content");
//被隐藏的id
int id=0;
try
{
id=Integer.parseInt(request.getParameter("id"));
}catch(Exception e)
{}
%>
<%
//更新数据库中的数据
String sql="update note set title=?,author=?,content=? where id=?";
try
{
conn=Util.getConnection();
stat=conn.prepareStatement(sql);
//设置查询的条件
stat.setString(1, title);
stat.setString(2, author);
stat.setString(3, content);
stat.setInt(4, id);
//将查询到的结果方法哦结果集中
stat.executeUpdate();
//关闭连接
stat.close();
conn.close();
//如果修改成功,就会执行这一句,将flag还为true
flag=true;
}
catch(Exception e)
{}
%>
<%
response.setHeader("refresh", "2;url=list_note.jsp");
if(flag)
{
%>
留言修改成功,两秒后跳转到留言管理<br/>
如果没有跳转,点击<a href="list_note.jsp">这里</a>
<%
}else
{
%>
留言修改失败,两秒后跳转到留言管理<br/>
如果没有跳转,点击<a href="list_note.jsp">这里</a>
<%
}
%>
<%
}
else{
//用户还未登录,显示提示信息
response.setHeader("refresh", "2;url=index.jsp");
%>
您还未登录!请登录<br/>
两秒后自动跳转到登录串口!<br/>
如未跳转,点击<a href="index.jsp">这里</a>
<%
}
%>
</center>
</body>
</html>
小结:
修改信息时,先判断用户是否登录
—登录了:
--连接数据库的参数
--获取参数id(要做异常处理)
--如果有内容,就修改i,连接数据库之后就行查询,将查询到的结果放到结果集中,如果查询到有下一条信息,
就从数据库中取出数据进行循环打印
--如果没有内容,就显示“ 没有发现要更新的内容!!请确认留言是否存在!!”
--关闭结果集/关闭预处理/关闭连接
—没有登录:
–显示提示信息