MVC模式留言管理程序


一、设计模式

1.MVC

Model View Controller 模型 视图 控制器
(1)视图(View):视图可能由Java Server Page(JSP)承担。生成视图的代码则可能是一个Servlet的一部分,尤其在客户端/服务端交互的时候。
(2)控制器(Controller):控制器可能是一个Servlet。读取View的数据请求并做出响应,根据用户要求而改变页面。
(3)模型(Model):数据层,常用于和数据库交互,一般用JavaBean实现。

2.DAO

DAO(Data Access Object):数据访问对象
DAO是用于封装数据库访问操作的一种操作模式。
组成部分:
(1)DataBaseConnection:专门负责数据库的打开与关闭的类
(2)VO(Value Object):主要由属性、setter和getter方法组成。VO类中的属性与表中的字段相对应,每一个VO类的对象都表示数据库中的一张表的一条记录
(3)DAO:定义操作的接口,例如定义数据库的原子操作、增删改查操作等
(4)Impl:DAO接口的具体实现类,定义了DAO接口定义的功能,但不负责数据库的打开和关闭
(5)Proxy:代理实现类,主要实现数据的打开和关闭,并调用Impl类来进行具体的数据库操作
(6)Factory:工厂类,通过工厂类获得一个DAO的实例化对象

3.MVC+DAO

MVC+DAO:即使用DAO来实现MVC中的Model层
Model:
(1)DataBaseConnection:负责数据的打开和关闭操作
(2)VO:使用JavaBean实现
(3)DAO:具体数据库操作的接口定义
(4)Impl:DAO的实现类
(5)Proxy:代理实现类
(6)Factory:工厂类
View:使用JSP实现
Controller:控制页面与数据交互的控制层,一般使用Servlet类实现

二、需求分析

1.系系统概述

本程序主要完成两个功能:用户登录管理和用户留言管理。用户登录管理完成用户的登录验证,根据用户名和用户输入的密码,到数据库中查询,进行验证。如果用户名和密码正确,则进入留言管理程序。留言管理程序主要完成留言的显示、查询、插入、删除和更新。

2.系统功能描述

简易留言管理程序主要实现以下功能:

用户登录功能:
用户输入登录页面网址,即进入用户登录页面,在该页面中输入用户名和密码,经系统核实后,如果没有错误,则显示该用户成功登录信息,并可跳转到留言管理的首页。

留言管理功能:
(1)用户登录成功后,可进入留言管理首页,留言管理首页显示全部用户留言。
(2)在查询文本框中输入查询内容,单击“查询”按钮,则显示符合条件的全部留言。
(3)在显示的留言中,其中“标题”和“删除”为可链接状态,单击留言标题,则进入留言修改页面,在该页面中,用户可更改该留言。
(4)单击“删除”链接,则删除该留言
(5)用户单击“添加新留言”,则进入添加新留言的页面,输入相应的信息,即可创建新的留言。

三、系统实现

1.数据库设计

使用的数据库:MySQL


在这里插入图片描述
在这里插入图片描述

2.系统的目录结构


在这里插入图片描述

3.所涉及的文件

MVC留言管理程序的视图文件:
(1)login.jsp:登录表单,登录错误提示
(2)login_success.jsp:需要对用户是否登录做出验证,打印欢迎用户的信息;给出超级链接,链接到list_notes.jsp
(3)list_notes.jsp:需要对用户是否登录做出验证;列出全部数据(以表格形式);链接增加、删除、修改页面;有检索信息的提示
(4)insert.jsp:需要对用户是否登录做出验证;表单:输入新内容的表单;能返回list_notes.jsp的链接
(5)insert_do.jsp:需要对用户是否登录做出验证;调用插入Servlet
(6)update.jsp:需要对用户是否登录做出验证;先取出要修改的记录;将记录填写在表单中
(7)update_do.jsp:需要对用户是否登录做出验证;调用更新Servlet
(8)delete_do.jsp:需要对用户是否登录做出验证;调用删除Servlet

MVC留言管理程序的控制器文件
(1)LoginServlet:登录控制功能
(2)NoteServlet:留言管理功能控制。包括留言查询、留言添加、留言修改、留言删除

MVC留言管理程序的模型文件
(1)Note.java、Person.java:值对象,对于本程序,值对象为数据库中两张表所对应的类
(2)NoteDAO.java、PersonDAO.java:DAO数据库访问接口
(3)NoteDAOImpl.java、PersonDAOImpl.java:前面两接口的具体实现
(4)DataBaseConnection.java:该类提供数据库连接
(5)DAOFactory.java:工厂类

4.代码实现

1.数据库连接类

为了更方便地提供数据库连接,提供了数据库连接类文件DatabaseConnection.java,该类返回一个数据库连接:
//DatabaseConnection.java

package Message.dbc;

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

public class DatabaseConnection {
    String driver="com.mysql.cj.jdbc.Driver";
    String url="jdbc:mysql://localhost/jsp?";//jsp为数据库的名称
    String user="******";//user:用户名"root"
    String password="******";//password:登录密码
    private Connection connection=null;

    public DatabaseConnection(){
        try{
            Class.forName(driver);
            this.connection= DriverManager.getConnection(url,user,password);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public Connection getConnection(){
        return this.connection;
    }
}

2.登录功能的实现

登录功能的MVC模型:
模型:Person.java,及与数据库操作相关的模型PersonDAO.java、PersonDAOImpl.java
视图:login.jsp、login_success.jsp
控制器:LoginServlet

(1)模型:
//Person.java
package Message.vo;

public class Person {
    private String id;
    private String name;
    private String password;

    public Person() {
    }

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

(2)定义相应的数据操作接口PersonDAO.java,提供登录的方法
//PersonDAO.java
package Message.dao;

import Message.vo.Person;

public interface PersonDAO {
    //做登录验证
    public boolean login(Person person) throws Exception;
}
(3)对PersonDAO.java接口的具体实现由PersonDAOImpl.java来完成,它完成了一个具体的数据库操作:
//PersonDAOImpl.java
package Message.dao.Impl;

import Message.dao.PersonDAO;
import Message.dbc.DatabaseConnection;
import Message.vo.Person;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class PersonDAOImpl implements PersonDAO {
    //做登录验证
    /*
    功能:
        判断是否是正确的用户名或密码
        从数据库中取出用户的真实姓名
     */
    @Override
    public boolean login(Person person) throws Exception {
        boolean flag=false;
        PreparedStatement statement=null;
        DatabaseConnection database=new DatabaseConnection();
        Connection connection=null;
        ResultSet rs=null;

        try{
            connection=database.getConnection();
            String sql="select userName from person where userId= '"+person.getId()+"' and userPassword='"+person.getPassword()+"'";
            statement=connection.prepareStatement(sql);
            rs=statement.executeQuery();

            if(rs.next()){
                flag=true;
                person.setName(rs.getString(1));
            }

        }catch(Exception e){
            throw new Exception("操作出现错误");
        }finally {
            rs.close();
            statement.close();
            connection.close();
        }
        return flag;
    }
}

(4)视图相对简单,包含两个JSP页面login.jsp、login_success.jsp
<!--login.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>MVC模式留言管理程序--登录</title>
</head>
<body>
<center>
    <h1>MVC模式留言管理程序</h1>
    <hr />
    <br />
    <%
        if(request.getAttribute("error")!=null){
            out.println("<h2>"+request.getAttribute("error")+"</h2>");
        }
    %>

    <form name="login" action="../../Login" method="post">
        <table width="80%">
            <tr>
                <td colspan="2">用户登录</td>
            </tr>

            <tr>
                <td>用户名:</td>
                <td><input type="text" name="id" /></td>
            </tr>

            <tr>
                <td>&nbsp;&nbsp;码:</td>
                <td><input type="password" name="password" /></td>
            </tr>

            <tr>
                <td colspan="2">
                    <input type="submit" value="提交" />
                    <input type="reset" value="重置" />
                </td>
            </tr>
        </table>
    </form>
</center>
</body>
</html>

<!--login_success.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>MVC模式留言管理程序</title>
</head>
<body>
<center>
    <h1>MVC留言管理程序</h1>
    <br />
    <hr />
    <%
        if(session.getAttribute("userName")!=null){
    %>

    <h2>欢迎登陆</h2>
    <h2>
        欢迎
        <font color="red" size="12">
            <%=session.getAttribute("userName")%>
        </font>光临留言管理程序
    </h2>
    <a href="../../Note?status=selectAll">进入留言管理页面</a>

    <%
        }else{
            //用户未登录,提示用户登录,并跳转
            response.setHeader("refresh","2;login.jsp");
    %>

    您还未登录,请先登录!!!<br />
    两秒后自动跳转登录窗口!!!<br />
    如果没有跳转,请按<a href="login.jsp">这里</a>!!!

    <%
        }
    %>
</center>
</body>
</html>
(5)控制功能由控制器LoginServlet来完成:
//LoginServlet.java
package Message.servlet;

import Message.factory.DAOFactory;
import Message.vo.Person;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet(name = "Login",urlPatterns = "/Login")
public class LoginServlet extends HttpServlet {
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
        String path="login.jsp";
        //1、接收传递的参数
        String id=request.getParameter("id");
        String password=request.getParameter("password");
        //2、将请求的内容赋值给VO类
        Person person=new Person();
        person.setId(id);
        person.setPassword(password);

        try{
            //进行数据库验证
            if(DAOFactory.getPersonDAOInstance().login(person)){
                //如果为真,则表示用户ID和密码合法
                //设置用户姓名到session范围中
                request.getSession().setAttribute("userName",person.getName());
                //修改跳转路径
                path="login_success.jsp";
            }else{
                //登陆失败
                //设置错误信息
                request.setAttribute("error","错误的ID和密码!!!");
            }
        }catch (Exception e){
            e.printStackTrace();
        }

        //进行跳转
        request.getRequestDispatcher(request.getContextPath()+"/Message/"+path).forward(request,response);
    }

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

3.留言功能的实现

留言管理功能的MVC模型:
模型:Note.java,以及与数据库操作相关的模型NoteDAO.java、NoteDAOImpl.java
视图:list_notes.jsp、insert.jsp、insert_do.jsp、update.jsp、update_do.jsp、delete_do.jsp
控制器:NoteServlet

(1)模型:
//Note.java
package Message.vo;

public class Note {
    private int id;
    private String title;
    private String author;
    private String content;

    public Note() {
    }

    public int getId() {
        return id;
    }

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

    public String getTitle() {
        return title;
    }

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

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getContent() {
        return content;
    }

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

(2)与Note相关的操作数据库的NoteDAO接口:
//NoteDAO.java
package Message.dao;

import Message.vo.Note;

import java.util.List;

public interface NoteDAO {
    //增加操作
    public void insert(Note note) throws Exception;
    //修改操作
    public void update(Note note) throws Exception;
    //删除操作
    public void delete(int note) throws Exception;
    //按ID查询,为更新使用
    public Note queryById(int id) throws Exception;
    //查询全部
    public List queryAll() throws Exception;
    //模糊查询
    public List queryByLike(String string) throws Exception;
}

(3)NoteDAOImpl.java是对这个接口的实现:
package Message.dao.Impl;

import Message.dao.NoteDAO;
import Message.dbc.DatabaseConnection;
import Message.vo.Note;

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

public class NoteDAOImpl implements NoteDAO {

    //增加操作
    @Override
    public void insert(Note note) throws Exception {
        String sql="insert into information(id,title,author,content) values(?,?,?,?) ";
        PreparedStatement statement=null;
        DatabaseConnection databaseConnection=new DatabaseConnection();

        try {
            statement=databaseConnection.getConnection().prepareStatement(sql);
            statement.setInt(1,note.getId());
            statement.setString(2,note.getTitle());
            statement.setString(3,note.getAuthor());
            statement.setString(4,note.getContent());

            int rd=statement.executeUpdate();


        }catch(Exception e){
            throw new Exception("操作出现错误!!!");
        }finally{
            statement.close();
        }
    }

    //修改操作
    @Override
    public void update(Note note) throws Exception {
        String sql="update information set title=?,author=?,content=? where id=?";
        PreparedStatement statement=null;
        DatabaseConnection databaseConnection=new DatabaseConnection();

        try{
            statement=databaseConnection.getConnection().prepareStatement(sql);
            statement.setString(1,note.getTitle());
            statement.setString(2,note.getAuthor());
            statement.setString(3,note.getContent());
            statement.setInt(4,note.getId());
            int rd=statement.executeUpdate();
        }catch(Exception e){
            throw new Exception("操作中出现失误!!!");
        }finally {
            statement.close();
        }
    }

    //删除操作
    @Override
    public void delete(int id) throws Exception {
        String sql="delete from information where id=?";
        DatabaseConnection database=new DatabaseConnection();
        PreparedStatement statement=null;

        try{
            statement=database.getConnection().prepareStatement(sql);
            statement.setInt(1,id);
            int rd=statement.executeUpdate();
        }catch(Exception e){
            throw new Exception("操作中出现错误!!!");
        }finally{
            statement.close();
        }
    }

    //按ID查询,主要为更新使用
    @Override
    public Note queryById(int id) throws Exception {
        Note note=null;
        String sql="select id,title,author,content form information where id=?";
        PreparedStatement statement=null;
        DatabaseConnection databaseConnection=new DatabaseConnection();
        ResultSet rs=null;

        try{
            statement=databaseConnection.getConnection().prepareStatement(sql);
            statement.setInt(1,id);
            rs=statement.executeQuery();

            while(rs.next()){
                note=new Note();
                note.setId(rs.getInt(1));
                note.setTitle(rs.getString(2));
                note.setAuthor(rs.getString(3));
                note.setContent(rs.getString(4));
            }
        }catch (Exception e){
            throw new Exception("操作中出现错误!!!");
        }finally {
            rs.close();
            statement.close();
        }
        return note;
    }

    //查询全部
    @Override
    public List queryAll() throws Exception {
        List list=new ArrayList();
        String sql="select id,title,author,content from information";
        PreparedStatement statement=null;
        DatabaseConnection databaseConnection=new DatabaseConnection();
        ResultSet rs=null;

        try{
            statement=databaseConnection.getConnection().prepareStatement(sql);
            rs=statement.executeQuery();

            while(rs.next()){
                Note note=new Note();
                note.setId(rs.getInt(1));
                note.setTitle(rs.getString(2));
                note.setAuthor(rs.getString(3));
                note.setContent(rs.getString(4));
                list.add(note);
            }
        }catch (Exception e){
            throw new Exception("操作中出现错误!!!");
        }finally{
            rs.close();
            statement.close();
        }
        return list;
    }

    //模糊查询
    public List queryByLike(String string) throws Exception{
        List all=new ArrayList();
        String sql="select id,title,author,content from information where title like ? or author like ? or content like ?";
        PreparedStatement statement=null;
        DatabaseConnection databaseConnection=new DatabaseConnection();
        ResultSet rs=null;

        try{
            statement=databaseConnection.getConnection().prepareStatement(sql);
            statement.setString(1,"%"+string+"%");
            statement.setString(2,"%"+string+"%");
            statement.setString(3,"%"+string+"%");
            rs=statement.executeQuery();

            while(rs.next()){
                Note note=new Note();
                note.setId(rs.getInt(1));
                note.setTitle(rs.getString(2));
                note.setAuthor(rs.getString(3));
                note.setContent(rs.getString(4));
                all.add(note);
            }
        }catch (Exception e){
            throw new Exception("操作中出现错误!!!");
        }finally {
            rs.close();
            statement.close();
        }

        return all;
    }
}

(4)控制器NoteServlet.java完成具体的控制:
//NoteServlet.java

package Message.servlet;

import Message.factory.DAOFactory;
import Message.vo.Note;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet(name = "note",urlPatterns = "/Note")
public class NoteServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        request.setCharacterEncoding("UTF-8");
        String path="error.jsp";
        //接收要操作的参数值
        String status=request.getParameter("status");
        if(status!=null){
            //参数有内容,之后选择合适的方法

            //查询全部操作
            if("selectAll".equals(status)){
                try{
                    request.setAttribute("all", DAOFactory.getNoteDAOInstance().queryAll());
                }catch(Exception e){
                    System.out.println(e.toString());
                }
                path="list_notes.jsp";
            }

            //模糊查询
            if("selectByLike".equals(status)){
                String keyword=request.getParameter("keyword");
                try{
                    request.setAttribute("all",DAOFactory.getNoteDAOInstance().queryByLike(keyword));
                }catch (Exception e){
                    e.printStackTrace();
                }
                path="list_notes.jsp";
            }

            //插入操作
            if("insert".equals(status)){
                //1、接收插入的信息
                int id=Integer.parseInt(request.getParameter("id"));
                String title=request.getParameter("title");
                String author=request.getParameter("author");
                String content=request.getParameter("content");
                //2、实例化VO对象
                Note note=new Note();
                note.setId(id);
                note.setTitle(title);
                note.setAuthor(author);
                note.setContent(content);
                //3、调用DAO完成数据库的插入操作
                boolean flag=false;

                try{
                    DAOFactory.getNoteDAOInstance().insert(note);
                    flag=true;
                }catch(Exception e){
                    e.printStackTrace();
                }
                request.setAttribute("flag",new Boolean(flag));
                path="insert_do.jsp";
            }

            //按ID查询操作,修改前,需要将数据先查询出来
            if("selectId".equals(status)){
                //接受参数
                int id=0;
                try{
                    id=Integer.parseInt(request.getParameter("id"));
                    request.setAttribute("note",DAOFactory.getNoteDAOInstance().queryById(id));
                }catch(Exception e){
                    e.printStackTrace();
                }
                path="update.jsp";
            }

            //更新操作
            if("update".equals(status)){
                int id=0;
                try{
                    id=Integer.parseInt(request.getParameter("id"));
                }catch(Exception e){
                    e.printStackTrace();
                }
                String title=request.getParameter("update_title");
                String author=request.getParameter("update_author");
                String content=request.getParameter("update_content");
                Note note=new Note();
                note.setId(id);
                note.setTitle(title);
                note.setAuthor(author);
                note.setContent(content);
                boolean flag=false;
                try{
                    DAOFactory.getNoteDAOInstance().update(note);
                    flag=true;
                }catch(Exception e){
                    e.printStackTrace();
                }
                request.setAttribute("flag",new Boolean(flag));
                path="update_do.jsp";
            }

            //删除操作
            if("delete".equals(status)){
                //接收参数
                int id=0;
                try{
                    id=Integer.parseInt(request.getParameter("id"));
                }catch (Exception e){
                    e.printStackTrace();
                }
                boolean flag=false;
                try{
                    DAOFactory.getNoteDAOInstance().delete(id);
                    flag=true;
                }catch (Exception e){
                    e.printStackTrace();
                }
                request.setAttribute("flag",new Boolean(flag));
                path="delete_do.jsp";
            }
        }else{
            //表示无参数,非法的客户请求
        }
        request.getRequestDispatcher(request.getContextPath()+"/Message/"+path).forward(request,response);
    }

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

(5)视图:list_notes.jsp、insert.jsp、insert_do.jsp、update.jsp、update_do.jsp、delete_do.jsp
<!--list_notes.jsp-->
<%@ page import="java.util.List" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="Message.vo.Note" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>MVC模式留言管理程序</title>
</head>
<body>
<center>
    <h1>MVC模式留言管理程序</h1>
    <br />
    <hr />
    <%
        request.setCharacterEncoding("UTF-8");
        if(session.getAttribute("userName")!=null){
            //用户已登录

            //如果有内容,则修改变量i,如果没有,则根据i的值进行无内容提示
            int i=0;
            String keyword= (String) request.getAttribute("keyword");
            List all=(List)request.getAttribute("all");
    %>
    <form action="../../Note" name="note" method="post">
        请输入查询内容:
        <input type="text" name="keyword" />
        <input type="hidden" name="status" value="selectByLike" />
        <input type="submit" value="查询" />
    </form>

    <h3><a href="./Message/insert.jsp">添加新留言</a></h3>

    <table width="80%" border="1">
        <tr>
            <td>留言</td>
            <td>标题</td>
            <td>作者</td>
            <td>内容</td>
            <td>删除</td>
        </tr>
        <%
            Iterator iterator=all.iterator();
            while(iterator.hasNext()){
                Note note=(Note)iterator.next();
                i++;
                //进行循环打印,打印出所有内容,以表格形式从数据库中取出内容
                int id=note.getId();
                String title=note.getTitle();
                String author=note.getAuthor();
                String content=note.getContent();

                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="../../Note?id=<%=id%>&status=selectId"><%=title%></a>
            </td>
            <td><%=author%></td>
            <td><%=content%></td>
            <td><a href="../../Note?id=<%=id%>&status=delete">删除</a></td>
        </tr>

        <%
            }

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

    </table>

    <%
        }else {
            //用户未登录,提示用户登录,并跳转
            response.setHeader("refresh","2;login.jsp");
            out.println("您还未登录,请先登录!!!");
            out.println("<br />");
            out.println("两秒后自动跳转到登录窗口!!!");
            out.println("<br />");
            out.println("如果没有跳转,请按<a href='login.jsp'>这里</a>!!!");
        }
    %>
</center>
</body>
</html>

<!--insert.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>MVC模式留言管理程序</title>
</head>
<body>
<center>
    <h1>MVC留言管理程序</h1>
    <br />
    <hr />
    <%
        if(session.getAttribute("userName")!=null){
            //用户已登录
    %>
    <form name="insert" method="post" action="../../Note">
        <table>
            <tr>
                <td colspan="2">添加新留言</td>
            </tr>

            <tr>
                <td>id:</td>
                <td><input type="text" name="id" /></td>
            </tr>

            <tr>
                <td>标题:</td>
                <td><input name="title" type="text" /></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="hidden" name="status" value="insert" />
                    <input type="submit" value="添加" />
                    <input type="reset" value="重置" />
                </td>
            </tr>
        </table>
    </form>

    <a href="../../Note?status=selectAll">回到留言管理页面</a>
    <%
        } else {
            //用户未登录,提示用户登录,并跳转
            response.setHeader("refresh", "2;login.jsp");
            out.println("您还未登录,请先登录!!!");
            out.println("<br />");
            out.println("两秒后自动跳转到登录窗口!!!");
            out.println("<br />");
            out.println("如果没有跳转,请按<a href='login.jsp'>这里</a>!!!");
        }
    %>
</center>
</body>
</html>

<!--insert_do.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>MVC模式留言管理程序</title>
</head>
<body>
<center>
    <h1>MVC模式留言管理程序</h1>
    <br />
    <hr />
    <%
        request.setCharacterEncoding("UTF-8");
        if(session.getAttribute("userName")!=null){
            response.setHeader("refresh","2;Note?status=selectAll");
            boolean b= (Boolean) request.getAttribute("flag");
            if(b){
    %>
    留言添加成功,两秒后跳转到留言页面表!!!
    <br />
    如果没有跳转,请按<a href="../../Note?status=selectAll">这里</a>!!!
    <%
            }else {
    %>
    留言添加失败,两秒后跳转到留言页面表!!!
    <br />
    如果没有跳转,请按<a href="../../Note?status=selectAll">这里</a>!!!
    <%
            }
        } else {
            //用户未登录,提示用户登录,并跳转
            response.setHeader("refresh", "2;login.jsp");
            out.println("您还未登录,请先登录!!!");
            out.println("<br />");
            out.println("两秒后自动跳转到登录窗口!!!");
            out.println("<br />");
            out.println("如果没有跳转,请按<a href='login.jsp'>这里</a>!!!");
        }
    %>
</center>
</body>
</html>

<!--delete_do.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>MVC模式留言管理程序</title>
</head>
<body>
<center>
    <h1>MVC模式留言管理程序</h1>
    <br />
    <hr />
    <%
        request.setCharacterEncoding("UTF-8");
        if(session.getAttribute("userName")!=null){
            //用户已登录
            response.setHeader("refresh","2;Note?status=selectAll");
            boolean b=(Boolean)request.getAttribute("flag");
            if(b){
    %>
    留言删除成功,两秒后跳转到留言页面表!!!
    <br />
    如果没有跳转,请按<a href="../../Note?status=selectAll">这里</a>!!!
    <%
    }else {
    %>
    留言删除失败,两秒后跳转到留言页面表!!!
    <br />
    如果没有跳转,请按<a href="../../Note?status=selectAll">这里</a>!!!
    <%
            }
        } else {
            //用户未登录,提示用户登录,并跳转
            response.setHeader("refresh", "2;login.jsp");
            out.println("您还未登录,请先登录!!!");
            out.println("<br />");
            out.println("两秒后自动跳转到登录窗口!!!");
            out.println("<br />");
            out.println("如果没有跳转,请按<a href='login.jsp'>这里</a>!!!");
        }
    %>
</center>
</body>
</html>

<!--update.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>MVC模式留言管理程序--登录</title>
</head>
<body>
<center>
    <h1>MVC模式留言管理程序</h1>
    <hr />
    <br />
    <%
        if(request.getAttribute("error")!=null){
            out.println("<h2>"+request.getAttribute("error")+"</h2>");
        }
    %>

    <form name="login" action="../../Login" method="post">
        <table width="80%">
            <tr>
                <td colspan="2">用户登录</td>
            </tr>

            <tr>
                <td>用户名:</td>
                <td><input type="text" name="id" /></td>
            </tr>

            <tr>
                <td>&nbsp;&nbsp;码:</td>
                <td><input type="password" name="password" /></td>
            </tr>

            <tr>
                <td colspan="2">
                    <input type="submit" value="提交" />
                    <input type="reset" value="重置" />
                </td>
            </tr>
        </table>
    </form>
</center>
</body>
</html>

<!--update_do.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>MVC模式留言管理程序</title>
</head>
<body>
<center>
    <h1>MVC模式留言管理程序</h1>
    <br />
    <hr />
    <%
        request.setCharacterEncoding("UTF-8");
        if(session.getAttribute("userName")!=null){
            //用户已登录
            response.setHeader("refresh","2;Note?status=selectAll");
            boolean b=(Boolean)request.getAttribute("flag");
            if(b){
    %>
    留言更新成功,两秒后跳转到留言页面表!!!
    <br />
    如果没有跳转,请按<a href="../../Note?status=selectAll">这里</a>!!!
    <%
    }else {
    %>
    留言更新失败,两秒后跳转到留言页面表!!!
    <br />
    如果没有跳转,请按<a href="../../Note?status=selectAll">这里</a>!!!
    <%
            }
        } else {
            //用户未登录,提示用户登录,并跳转
            response.setHeader("refresh", "2;login.jsp");
            out.println("您还未登录,请先登录!!!");
            out.println("<br />");
            out.println("两秒后自动跳转到登录窗口!!!");
            out.println("<br />");
            out.println("如果没有跳转,请按<a href='login.jsp'>这里</a>!!!");
        }
    %>
</center>
</body>
</html>

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值