jsp做的留言系统(防止非法登录、增删改查留言)

登录
登录成功
留言区
查询
修改留言
留言修改成功
添加留言
添加留言成功
删除留言前
留言删除成功
删除留言后

第一步:在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,连接数据库之后就行查询,将查询到的结果放到结果集中,如果查询到有下一条信息,
    就从数据库中取出数据进行循环打印
--如果没有内容,就显示“ 没有发现要更新的内容!!请确认留言是否存在!!”
--关闭结果集/关闭预处理/关闭连接

—没有登录:
–显示提示信息

  • 7
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
一、设计目的 留言系统目前在各类网站中被广泛使用。通过综合运用JSP、Servlet、JavaBean、JDBC、MySQL和MVC + DAO等技术与方法,设计与实现一个留言管理系统,进一步理解和掌握Java Web编程开发的基本技术和方法,熟练使用开发工具。 二、课程设计内容 设计留言管理系统的目的是提供对留言的增加、删除、修改和显示的功能。 系统分前台和后台两个模块。 1)前台留言模块主要针对普通用户,按功能又分为以下模块。 (1) 发表留言(即添加留言) 普通用户可以在留言管理系统中随意留言,如果留言的字数太少如低于10个字符,系统将给出提示。 (2) 查看留言 可以浏览留言(即查看留言列表)、查看详细留言(即查看某条留言内容)、搜索留言(即查看符合条件的留言列表)、查看友情链接(即导航到别的网站)。 2)后台模块(管理模块)针对管理员提供操作,按功能又分为以下模块。 (1) 登录管理:需要输入管理员账号、口令和验证码,系统将验证、口令和验证码是否正确,如果验证成功,则进入管理员界面;否则,系统提示账号或密码错误的信息。 另外,登录后的管理员可以选择退出登录,进而退出管理界面。(实现提示:将退出请求提交给处理退出的Servlet,在该Servlet中将session失效,再将页面重定向到登录页面。) (2) 留言管理:可以查看所有的留言,可以增加留言(即回复留言)、修改留言、删除留言

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值