文章目录
一、设计模式
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>密 码:</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>密 码:</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>