学完JSP,运用MVC设计模式实现简单的crud操作

一、实现代码

①styleView.css

@charset "UTF-8";

.addBookStyle {
	border-width: 1px;
	border-color: black;
	border-style: outset;
	font-family: 宋体;
	font-size: 16px;
	background-color: #99ccff;
	width: 700px;
	position: relative;
	left: 300px;
	top: 10px;
}

.viewBookStyle {
	border-width: 1px;
	border-color: black;
	border-style: outset;
	font-family: 宋体;
	font-size: 16px;
	line-height: 20px;
	text-align: center;
	background-color: #99ccff;
	width: 800px;
	position: relative;
	left: 300px;
}

.loginStoreStyle{
			border-width:1px;
			border-color:#333;
			border-style:solid;
			height: 140px;
			width: 200px;
}

②loginStore.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'loginStore.jsp' starting page</title>
<link rel="stylesheet" type="text/css" href="styleView.css" />
<script type="text/javascript">
	function changeTextStyle() {
		var mytext = document.getElementById("textstyle");
		mytext.style.borderColor = 'black';
		mytext.style.borderStyle = 'solid';
		mytext.style.borderWidth = '0 0 1px 0';
		var mypassword = document.getElementById("passwordstyle");
		mypassword.style.borderColor = 'black';
		mypassword.style.borderStyle = 'solid';
		mypassword.style.borderWidth = '0 0 1px 0';
	}
</script>
</head>

<body οnlοad="changeTextStyle()">
<font color='red'><c:out value="${sessionScope.message }"></c:out></font>
<div  class="loginStoreStyle">
	<form action="/day_042403/CheckUser" method="post">
		<table border="0" align="left" id="tableUser" width="200px"
			height="140px">
			<tr height="25%">
				<td align="right" width="60px"> 用户:</td>
				<td align="left"><input type="text" id="textstyle" size="16"
					maxlength="16" name="userName" /></td>
			</tr>
			<tr height="25%">
				<td align="right">密码:</td>
				<td align="left"><input type="password" id="passwordstyle"
					size="16" maxlength="16" name="userPass" /></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" value="登录" />
					  <input type="reset" value="取消"/>
				</td>
			</tr>
		</table>
	</form>
</div>
</body>
</html>

③CheckUser.java

package cn.edu.imut.ctrl;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import cn.edu.imut.beans.Users;
import cn.edu.imut.dao.BookDao;
import cn.edu.imut.dao.factory.BookDaoFactory;

public class CheckUser extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		HttpSession session = request.getSession();
		BookDao bookDao = BookDaoFactory.getBookDao();
		String userName = request.getParameter("userName");
		String userPass = request.getParameter("userPass");
		Users user = bookDao.checkUsers(userName, userPass);
		if(user!=null){
			session.setAttribute("message", userName+",欢迎你!");
			response.sendRedirect("bookstore/addBook.jsp");
		}else{
			session.setAttribute("message", "登录失败");
			response.sendRedirect("bookstore/loginStore.jsp");
		}
	}

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

}

④addBook.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="styleView.css" />
<script type="text/javascript">
function checkBookName() {
	var val = document.bookForm.bookName.value;
	var reguser = /\w+/;
	document.getElementById("bookError").innerHTML = "";
	if (val.length == 0) {
		document.getElementById("bookError").innerHTML = "<font color='red'>书名不能为空</font>";
	} else if (val.length < 8 || val.length > 10) {
		document.getElementById("bookError").innerHTML = "<font color='red'>书名8-10个字符</font>";
	} else if (!reguser.test(val)) 
		document.getElementById("bookError").innerHTML = "<font color='red'>书名只能为字母数字下划线</font>";
	
}


function checkBookPublish() {
	document.getElementById("bookError").innerHTML = "";
	var val = document.bookForm.bookPublish.value;
	if (val.length == 0) {
		document.getElementById("bookError").innerHTML = "<font color='red'>出版社不能为空</font>";
	} else if (val.length < 7|| val.length > 10) 
		document.getElementById("bookError").innerHTML = "<font color='red'>出版社7-10个字符</font>";
}
</script>
<meta http-equiv="description" content="This is my page">
</head>
<body>
	<font color='red'><c:out value="${sessionScope.message }"></c:out></font>
	<div class="addBookStyle">
		<form action="/day_042403/CtrlServlet" method="post" name="bookForm">
			<table border="0" align="center" cellpadding="10">
				<tr>
					<td id="bookError" colspan="2"></td>
				</tr>
				<tr>
					<td align="left">选择分类:</td>
					<td align="left"><select name="bookClasses">
							<option selected="selected">请选择</option>
							<option>Computer</option>
							<option>DataBase</option>
					</select></td>
				</tr>
				<tr>
					<td align="left">图书名称:</td>
					<td align="left"><input type="text" name="bookName"
						οnblur=checkBookName() />
					</td>
				</tr>
				<tr>
					<td align="left">作者:</td>
					<td align="left"><input type="text" name="bookAuthor" />
					</td>
				</tr>
				<tr>
					<td align="left">出版社:</td>
					<td align="left"><input type="text" name="bookPublish"
						οnblur=checkBookPublish() />
					</td>
				</tr>
				<tr>
					<td align="left">页数:</td>
					<td align="left"><input type="text" name="bookPage" />
					</td>
				</tr>
				<tr>
					<td align="left">版本:</td>
					<td align="left"><input type="text" name="bookEdit" />
					</td>
				</tr>
				<tr>
					<td align="left">图片:</td>
					<td align="left"><input type="file" value="上传图片">
					</td>
				</tr>
				<tr>
					<td align="left">价格:</td>
					<td align="left">市场价:<input type="text" name="bookPrice" />
						元,会员价:<input type="text" name="bookNewPrice" />元</td>
				</tr>
				<tr>
					<td align="left">推荐度:</td>
					<td><select name="bookDegree">
							<option selected="selected">请选择:</option>
							<option>1</option>
							<option>2</option>
							<option>3</option>
							<option>4</option>
							<option>5</option>
					</select></td>
				</tr>
				<tr>
					<td align="left">评论:</td>
					<td align="left" rowspan="2"><textarea rows="3" cols="50"
							name="bookComment"></textarea></td>
				</tr>
				<tr>
					<td align="left"></td>
				</tr>
				<tr>
					<td align="left"></td>
				</tr>
				<tr align="center">
					<td colspan="2"><input type="submit" value="更新"></td>
				</tr>
			</table>
		</form>
	</div>
</body>
</html>

⑤CtrlServlet.java

package cn.edu.imut.ctrl;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import cn.edu.imut.beans.Book;
import cn.edu.imut.dao.BookDao;
import cn.edu.imut.dao.factory.BookDaoFactory;

public class CtrlServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		HttpSession session = request.getSession();
		BookDao bookDao = BookDaoFactory.getBookDao();
		String bookName = request.getParameter("bookName");
		String bookPublish = request.getParameter("bookPublish");
		response.getWriter().println(bookName + bookPublish);
		if (bookName == "" || bookPublish == "") {
			session.setAttribute("message", "添加失败,请重新添加!");
			response.sendRedirect("bookstore/addBook.jsp");
		} else {
			SimpleDateFormat formater = new SimpleDateFormat("yyyy/MM/dd k:m:s");
			String bookNewTime = formater.format(new Date());
			Book book = new Book();
			book.setBookName(bookName);
			book.setBookPublish(bookPublish);
			book.setBookNewTime(bookNewTime);
			Boolean flag = bookDao.checkBook(bookName);
			if (flag == true) {
				bookDao.updateBook(book);
				session.setAttribute("message", bookName + "已修改!");
			} else {
				bookDao.createBook(book);
				session.setAttribute("message", bookName + "已添加!");
			}
			Integer pageCount = bookDao.pageBook();
			session.setAttribute("pageCount", pageCount);
			ArrayList<Book> array = bookDao.queryAll(1);
			session.setAttribute("array", array);
			response.sendRedirect("bookstore/viewBook.jsp");
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

⑥viewBook.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*" import="cn.edu.imut.beans.Book"
	import="cn.edu.imut.beans.Page" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="styleView.css" />
</head>
<body>
	<div class="viewBookStyle">
		<font color="red"><c:out value="${sessionScope.message }"></c:out></font>
		<form action="/day_042403/QueryServlet" method="post">
		<table border="1" bordercolor="black" align="center" width="500px"
			cellspacing="0" cellpadding="10">
			<tr align="right">
				<td colspan="4">
					书名:<input type="text" name="queryBook" />
					<input type="submit" value="查询">
				</td>
			</tr><tr>
				<th width="150">名称</th>
				<th width="150">出版社</th>
				<th width="150">时间</th>
				<th width="150">操作</th>
			</tr>
			<c:forEach items="${sessionScope.array }" var="book">
				<tr>
					<td><c:out value="${book.bookName }"></c:out></td>
					<td><c:out value="${book.bookPublish }"></c:out></td>
					<td><c:out value="${book.bookNewTime }"></c:out></td>
					<td><a
						href="/day_042403/DeleteServlet?bookName=${book.bookName }">删除</a>|<a
						href="/day_042403/bookstore/addBook.jsp">修改</a></td>
				</tr>
			</c:forEach>
		</table>
		</form>
	
	<%
			Integer pageCount = (Integer) session.getAttribute("pageCount");
			for (int i = 1; i <= pageCount; i++) {
				out.println("<a href='/day_042403/PageServlet?pageNow=" + i + "'><" + i + "></a>");
			}
	%>
	</div>
</body>
</html>

⑦PageServlet.java

package cn.edu.imut.ctrl;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import cn.edu.imut.beans.Book;
import cn.edu.imut.dao.BookDao;
import cn.edu.imut.dao.factory.BookDaoFactory;

public class PageServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		HttpSession session = request.getSession();
		BookDao bookDao = BookDaoFactory.getBookDao();
		String spageNow = request.getParameter("pageNow");
		Integer pageNow = Integer.parseInt(spageNow);
		ArrayList<Book> array = bookDao.queryAll(pageNow);
		session.setAttribute("array", array);
		response.sendRedirect("bookstore/viewBook.jsp");
	}

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

}

⑧DeleteServlet.java

package cn.edu.imut.ctrl;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import cn.edu.imut.beans.Book;
import cn.edu.imut.dao.BookDao;
import cn.edu.imut.dao.factory.BookDaoFactory;

public class DeleteServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		HttpSession session = request.getSession();
		BookDao bookDao = BookDaoFactory.getBookDao();
		String bookName = request.getParameter("bookName");
		bookDao.deleteBook(bookName);
		Integer pageCount = bookDao.pageBook();
		session.setAttribute("pageCount", pageCount);
		ArrayList<Book> array = bookDao.queryAll(1);
		session.setAttribute("array", array);
		session.setAttribute("message", bookName+"已删除!");
		response.sendRedirect("bookstore/viewBook.jsp");
	}

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

	}


}

⑨QueryServlet.java

package cn.edu.imut.ctrl;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.edu.imut.beans.Book;
import cn.edu.imut.dao.BookDao;
import cn.edu.imut.dao.factory.BookDaoFactory;

public class QueryServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		String bookName = request.getParameter("queryBook");
		BookDao bookDao = BookDaoFactory.getBookDao();
		Book book = bookDao.read(bookName);
		response.getWriter().println(book.toString());
	}

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

}

⑩DBUtils.java

package cn.edu.imut.utils;

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

public class DBUtils {
	public static String DBDRIVER = "com.mysql.jdbc.Driver";
	public static String DBURL = "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8&useSSL=false";
	public static String DBNAME = "root";
	public static String DBPASS = "123";
	static {
		try {
			Class.forName(DBDRIVER);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static Connection getConnection() {
		try {
			return DriverManager.getConnection(DBURL, DBNAME, DBPASS);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}

	public static void getClose(Connection conn, PreparedStatement psmt, ResultSet rs) {
		try {
			if (rs != null)
				rs.close();
			if (psmt != null)
				psmt.close();
			if (conn != null)
				conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

⑪BookDao.java

package cn.edu.imut.dao;

import java.util.ArrayList;

import cn.edu.imut.beans.Book;
import cn.edu.imut.beans.Users;

public interface BookDao {
	/**
	 * 查询每一页图书信息
	 * @param pageNow 当前页
	 * @return ArrayList<Book>
	 */
	public ArrayList<Book> queryAll(Integer pageNow);
	
	/**
	 * 增加一条图书信息
	 * @param book
	 */
	public void createBook(Book book);
	
	/**
	 * 查询图书信息
	 * @param bookName 书名
	 * @return Book
	 */
	public Book read(String bookName);
	
	/**
	 * 修改图书信息
	 * @param book
	 */
	public void updateBook(Book book);
	
	/**
	 * 删除图书信息
	 * @param bookName 书名
	 */
	public void deleteBook(String bookName);
	
	
	/**
	 * 查询有多少条图书信息(rowCount)
	 * @return 总页数(pageCount)
	 */
	public Integer pageBook();

	public Users checkUsers(String userName, String userPass);
	
	/**
	 * 判断图书是否存在
	 * @param bookName 书名
	 * @return flag
	 */
	public boolean checkBook(String bookName);
}

⑫BookDaoImpl.java

package cn.edu.imut.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import cn.edu.imut.beans.Book;
import cn.edu.imut.beans.Users;
import cn.edu.imut.dao.BookDao;
import cn.edu.imut.utils.DBUtils;

public class BookDaoImpl implements BookDao {
	Connection conn = null;
	PreparedStatement psmt = null;
	ResultSet rs = null;

	public ArrayList<Book> queryAll(Integer pageNow) {
		ArrayList<Book> array = new ArrayList<Book>();
		String sql = "select * from Book limit ?,5";
		conn = DBUtils.getConnection();
		try {
			psmt = conn.prepareStatement(sql);
			psmt.setInt(1, (pageNow - 1) * 5);
			rs = psmt.executeQuery();
			while (rs.next()) {
				String bookName = rs.getString(1);
				String bookPublish = rs.getString(2);
				String bookNewTime = rs.getString(3);
				Book book = new Book(bookName, bookPublish, bookNewTime);
				array.add(book);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBUtils.getClose(conn, psmt, rs);
		}
		return array;
	}

	public void createBook(Book book) {
		conn = DBUtils.getConnection();
		String sql = "insert into Book values(?,?,?)";
		try {
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, book.getBookName());
			psmt.setString(2, book.getBookPublish());
			psmt.setString(3, book.getBookNewTime());
			psmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBUtils.getClose(conn, psmt, rs);
		}
	}

	public Book read(String bookName) {
		Book book = null;
		conn = DBUtils.getConnection();
		String sql = "select * from Book where bookName=?";
		try {
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, bookName);
			rs = psmt.executeQuery();
			while (rs.next()) {
				book = new Book(rs.getString(1), rs.getString(2), rs.getString(3));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBUtils.getClose(conn, psmt, rs);
		}
		return book;
	}

	public void updateBook(Book book) {
		conn = DBUtils.getConnection();
		String sql = "update Book set bookPublish=?,bookNewTime=? where bookName=?";
		try {
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, book.getBookPublish());
			psmt.setString(2, book.getBookNewTime());
			psmt.setString(3, book.getBookName());
			psmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBUtils.getClose(conn, psmt, rs);
		}
	}

	public void deleteBook(String bookName) {
		String sql = "delete from Book where bookName = ?";
		conn = DBUtils.getConnection();
		try {
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, bookName);
			psmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBUtils.getClose(conn, psmt, rs);
		}
	}

	public Integer pageBook() {
		conn = DBUtils.getConnection();
		String sql = "select count(*) from Book";
		Integer pageCount = 1;
		try {
			psmt = conn.prepareStatement(sql);
			rs = psmt.executeQuery();
			rs.next();
			Integer rowCount = rs.getInt(1);
			pageCount = rowCount % 5 == 0 ? rowCount / 5 : rowCount / 5 + 1;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBUtils.getClose(conn, psmt, rs);
		}
		return pageCount;
	}

	public Users checkUsers(String userName, String userPass) {
		Users user = null;
		conn = DBUtils.getConnection();
		String sql = "select * from Users where userName=? and userPass=?";
		try {
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, userName);
			psmt.setString(2, userPass);
			rs = psmt.executeQuery();
			while (rs.next()) {
				user = new Users(rs.getString(1), rs.getString(2));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBUtils.getClose(conn, psmt, rs);
		}
		return user;
	}

	public boolean checkBook(String bookName) {
		boolean flag = false;
		conn = DBUtils.getConnection();
		String sql = "select * from Book where bookName=?";
		try {
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, bookName);
			rs = psmt.executeQuery();
			if (rs.next()) {
				flag = true;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBUtils.getClose(conn, psmt, rs);
		}
		return flag;
	}

}

⑬BookDaoFactory.java

package cn.edu.imut.dao.factory;

import cn.edu.imut.dao.BookDao;
import cn.edu.imut.dao.impl.BookDaoImpl;

public class BookDaoFactory {
	public static BookDao getBookDao() {
		return new BookDaoImpl();
	}
}

⑭Book.java

package cn.edu.imut.beans;

public class Book {
	private String bookName;
	private String bookPublish;
	private String bookNewTime;
	public Book() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Book(String bookName, String bookPublish, String bookNewTime) {
		super();
		this.bookName = bookName;
		this.bookPublish = bookPublish;
		this.bookNewTime = bookNewTime;
	}
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public String getBookPublish() {
		return bookPublish;
	}
	public void setBookPublish(String bookPublish) {
		this.bookPublish = bookPublish;
	}
	public String getBookNewTime() {
		return bookNewTime;
	}
	public void setBookNewTime(String bookNewTime) {
		this.bookNewTime = bookNewTime;
	}
	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("书名:"+bookName+"<br><br>");
		sb.append("出版社:"+bookPublish+"<br><br>");
		sb.append("更新时间:"+bookNewTime+"<br><br>");
		return sb.toString();
	}
	
}

⑮Users.java

package cn.edu.imut.beans;

public class Users {
	private String userName;
	private String userPass;
	public Users() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Users(String userName, String userPass) {
		super();
		this.userName = userName;
		this.userPass = userPass;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPass() {
		return userPass;
	}
	public void setUserPass(String userPass) {
		this.userPass = userPass;
	}
	
}
二、实现功能

  1. 简单分页.
  2. crud.
  3. js表单验证.
  4. MVC设计模式.
三、实现结果

登录界面

添加和修改图书界面


表单验证提示


修改界面


删除界面


查询界面


项目截图

四、优点与不足

  1. 代码很符合MVC规范.
  2. 逻辑不是很有条理.
  3. 只有三个界面,简洁性、健壮性很好.
  4. 使用了五个servlet控制器,代码很冗余.
五、源码

链接:https://pan.baidu.com/s/1pkQXZTosbgZJZ5DyNle5aw 密码:asp2

点击打开链接

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值