一:步骤:
(1)搭建工程:在web项目下的src包中建立6个包;分别为dao包(dao包下面有impl包),pojo包,service包(service包中有impl包),servlet包,util包,vo包;
(2)导入包:
a.在src包里:
c3p0-0.9.1.2.jar、
c3p0-config.xml、
b.在lib文件夹里:
c3p0-0.9.1.2.jar
commons-beanutils-1.7.0.jar
commons-dbutils-1.6.jar
commons-lang3-3.7.jar
commons-logging-1.0.3.jar
jstl-1.2.jar
log4j-1.2.6.jar
logkit-1.0.1.jar
mysql-connector-java-5.1.38.jar
c.在WEB-INF文件夹里:
web.xml
二.代码的实现
1.pojo
(1)BookInfo.java
package pojo;
import java.util.Date;
public class BookInfo {
private Integer bookid;
private String bookcode;
private String bookname;
private Integer booktype;
private String bookauthor;
private String publishpress;
private Date publishdate;
private Integer isborrow;
public BookInfo() {
super();
}
public BookInfo(Integer bookid, String bookcode, String bookname, Integer booktype, String bookauthor,
String publishpress, Date publishdate, Integer isborrow) {
super();
this.bookid = bookid;
this.bookcode = bookcode;
this.bookname = bookname;
this.booktype = booktype;
this.bookauthor = bookauthor;
this.publishpress = publishpress;
this.publishdate = publishdate;
this.isborrow = isborrow;
}
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public String getBookcode() {
return bookcode;
}
public void setBookcode(String bookcode) {
this.bookcode = bookcode;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public Integer getBooktype() {
return booktype;
}
public void setBooktype(Integer booktype) {
this.booktype = booktype;
}
public String getBookauthor() {
return bookauthor;
}
public void setBookauthor(String bookauthor) {
this.bookauthor = bookauthor;
}
public String getPublishpress() {
return publishpress;
}
public void setPublishpress(String publishpress) {
this.publishpress = publishpress;
}
public Date getPublishdate() {
return publishdate;
}
public void setPublishdate(Date publishdate) {
this.publishdate = publishdate;
}
public Integer getIsborrow() {
return isborrow;
}
public void setIsborrow(Integer isborrow) {
this.isborrow = isborrow;
}
}
(2)BookType.java
package pojo;
public class BookType {
private Integer typeid;
private String typename;
public BookType() {
super();
}
public BookType(Integer typeid, String typename) {
super();
this.typeid = typeid;
this.typename = typename;
}
public Integer getTypeid() {
return typeid;
}
public void setTypeid(Integer typeid) {
this.typeid = typeid;
}
public String getTypename() {
return typename;
}
public void setTypename(String typename) {
this.typename = typename;
}
}
2.vo
BookInfoVo.java
package vo;
import java.util.Date;
import pojo.BookInfo;
public class BookInfoVo extends BookInfo{
private Integer typeid;
private String typename;
public BookInfoVo() {
super();
}
public BookInfoVo(Integer bookid, String bookcode, String bookname, Integer booktype, String bookauthor,
String publishpress, Date publishdate, Integer isborrow) {
super(bookid, bookcode, bookname, booktype, bookauthor, publishpress, publishdate, isborrow);
}
public BookInfoVo(Integer typeid, String typename) {
super();
this.typeid = typeid;
this.typename = typename;
}
public Integer getTypeid() {
return typeid;
}
public void setTypeid(Integer typeid) {
this.typeid = typeid;
}
public String getTypename() {
return typename;
}
public void setTypename(String typename) {
this.typename = typename;
}
}
3.utils
(1)DateConverter.java
```public class DateConverter implements Converter {
@Override
public Object convert(Class typeClass, Object value) {
String str=(String)value;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try {
return sdf.parse(str);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
(2)DateUtil.java
public class DateUtil {
public static String toString(Date date,String pattern){
SimpleDateFormat sdf=new SimpleDateFormat(pattern);
return sdf.format(date);
}
public static Date toDate(String date,String pattern){
SimpleDateFormat sdf=new SimpleDateFormat(pattern);
try {
return sdf.parse(date);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
(3)JDBCUtils.java
public class JDBCUtils {
//创建数据源
private static DataSource ds=new ComboPooledDataSource();
//获得数据源
public static DataSource getDataSource(){
return ds;
}
//获得连接对象
public static Connection getConnection(){
try {
return ds.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
(4)PageBean.java
public class PageBean {
private Integer pageSize;//页面大小,servlet中定义一个变量后传入 set get
private Integer totalCount;//总条数 servlet中查询到后传入 set
private Integer totalPage;//总页数 计算 get
private Integer pageIndex;//当前页 在servlet中传入通过构造方法,然后里面控制上下限 get
private List<?> list;//数据列表 servlet中查询后传入 set get
public PageBean(Integer pageSize, Integer totalCount, Integer pageIndex) {
this.pageSize = pageSize;
this.totalCount = totalCount;
//计算总页面
this.totalPage=this.totalCount%this.pageSize==0
?this.totalCount/this.pageSize:this.totalCount/this.pageSize+1;
//优化控制当前页的上下限 pageIndex=9; 点击下一页 输入了条件 ---不满足 totalPage=0;
if(this.totalPage==0){
this.pageIndex=1;
this.totalPage=1;
}else{
if(pageIndex<1){
this.pageIndex=1;
}else if(pageIndex>this.totalPage){
this.pageIndex=this.totalPage;
}else{
this.pageIndex = pageIndex;//1---totalPage
}
}
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount;
}
public Integer getTotalPage() {
return totalPage;
}
public Integer getPageIndex() {
return pageIndex;
}
public List<?> getList() {
return list;
}
public void setList(List<?> list) {
this.list = list;
}
}
4.servlet
(1)BookInfoVoListServlet .java
package servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import pojo.BookType;
import service.BookInfoVoService;
import service.BookTypeService;
import service.impl.BookInfoVoServiceImpl;
import service.impl.BookTypeServiceImpl;
import util.PageBean;
public class BookInfoVoListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//创建实现类
BookInfoVoService bivs = new BookInfoVoServiceImpl();
BookTypeService bts = new BookTypeServiceImpl();
//取值
String s_booktype = request.getParameter("booktype");
String bookname = request.getParameter("bookname");
String s_isborrow=request.getParameter("isborrow");
String s_pageIndex=request.getParameter("pageIndex");
//判断
Integer booktype = null;
Integer isborrow = null;
Integer pageIndex = null;
if(StringUtils.isNotBlank(s_booktype)){
booktype=Integer.parseInt(s_booktype);
}
if(StringUtils.isNotBlank(s_isborrow)){
isborrow=Integer.parseInt(s_isborrow);
}
if(s_pageIndex==null){
s_pageIndex="1";
}
pageIndex=Integer.parseInt(s_pageIndex):
//分页
Integer pageSize = 3;
Integer totalPage = bivs.getTotalCount(booktype,bookname,isborrow);
PageBean pb = new PageBean(pageSize,totalCount,pageIndex);
//下拉列表框
List<BookType> typeList = bts.getBookTypeList();
//存
request.getSession().setAtrribute("pb",pb);
request.getSession().setAttribute("typeList",typeList);
request.getSession().setAttribute("booktype",booktype);
request.getSession().setAttribute("bookname",bookname);
request.getSession().setAttribute("isborrow",isborrow);
//重定向
request.getRequestDispactcher("list.jsp").forward(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
(2)PreAddServlet.java
public class PreAddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
BookTypeService bts = new BookTypeServiceImpl();
//获得下拉列表框
List<BookType> typeList=bts.getBookTypeList();
request.getSession().setAttribute("typeList",typeList);
response.sendRedirect(request.getContextPath()+"/add.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
(3)AddServlet.java
public class AddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
BookInfoVoService bivs = new BookInfoVoServiceImpl();
String bookcode=request.getParameter("bookcode");
String bookname=request.getParameter("bookname");
String s_booktype=request.getParameter("booktype");
String bookauthor=request.getParameter("bookauthor");
String publishpress=request.getParameter("publishpress");
String s_publishdate=request.getParameter("publishdate");
Integer booktype = null;
Date publishdate = null;
if(StringUtils.isNotBlank(s_booktype)){
booktype = Integer.parseInt(s_booktype);
}
if(StringUtils.isNotBlank(s_publishdate)){
publishdate = DateUtil.toDate(s_publishdate,"yyyy-MM-dd");
}
BookInfo pi = new BookInfo(null,bookcode,bookname,booktype,bookauthor,publishpress,publishdate,0);
if(bivs.addBookInfo(pi)>0){
response.getWriter().println("<script>alert('添加成功');location.href='index.jsp'</script>");
}else{
response.getWriter().println("<script>alert('添加失败');location.href='add.jsp'</script>");
}
}
(4)PreUpdateServlet.java
public class PreUpdateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
BookInfoVoService bivs = new BookInfoVoServiceImpl();
BookTypeService bts = new BookTypeServiceImpl();
String s_id=request.getParameter("id");
Integer id=null;
if(StringUtils.isNotBlank(s_id)){
id=Integer.parseInt(s_id);
}
//通过id获得bookinfovo里面的所有属性;
BookInfoVo biv=bivs.getBookInfoVoById(id);
//获取下拉列表框
List<BookType> typeList=bts.getBookTypeList();
request.getSession().setAttribute("biv", biv);
request.getSession().setAttribute("typeList",typeList);
response.sendRedirect(request.getContextPath()+"/update.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
(5)UpdateServlet
public class UpdateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
BookInfoVoService bivs = new BookInfoVoServiceImpl();
BookTypeService bts = new BookTypeServiceImpl();
String s_id=request.getParameter("id");
String bookcode=request.getParameter("bookcode");
String bookname=request.getParameter("bookname");
String s_booktype=request.getParameter("booktype");
String bookauthor=request.getParameter("bookauthor");
String publishpress=request.getParameter("publishpress");
String s_publishdate=request.getParameter("publishdate");
Integer id = null;
Integer booktype = null;
Date publishdate = null;
if(StringUtils.isNotBlank(s_id)){
id = Integer.parseInt(s_id);
}
if(StringUtils.isNotBlank(s_booktype)){
booktype = Integer.parseInt(s_booktype);
}
if(StringUtils.isNotBlank(s_publishdate)){
publishdate = DateUtil.toDate(s_publishdate,"yyyy-MM-dd");
}
BookInfoVo biv=bivs.getBookInfoVoById(id);
BookInfo pi = new BookInfo(id,bookcode,bookname,booktype,bookauthor,publishpress,publishdate,biv.getIsborrow());
if(bivs.upDateBookInfoVo(pi)>0){
response.getWriter().println("<script>alert('修改成功');location.href='index.jsp'</script>");
}else{
response.getWriter().println("<script>alert('修改失败');location.href='update.jsp'</script>");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
(6)xiangxiServlet.java
public class XiangXiServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
BookInfoVoService bivs = new BookInfoVoServiceImpl();
String s_id=request.getParameter("id");
Integer id=null;
if(StringUtils.isNotBlank(s_id)){
id=Integer.parseInt(s_id);
}
//通过id获得bookinfovo里面的所有属性;
BookInfoVo biv=bivs.getBookInfoVoById(id);
request.getSession().setAttribute("biv",biv);
response.sendRedirect(request.getContextPath()+"/xiangxi.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
(7)Delete.java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“text/html;charset=UTF-8”);
BookInfoVoService bivs = new BookInfoVoServiceImpl();
String s_id=request.getParameter(“id”);
Integer id=null;
if(StringUtils.isNotBlank(s_id)){
id=Integer.parseInt(s_id);
}
if(bivs.deleteBookInfoVo(id)>0){
response.getWriter().println(“”);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
5.service
(1)BookInfoVoService.java
public interface BookInfoVoService {
Integer getTotalCount(Integer booktype, String bookname, Integer isborrow);
PageBean getPageBeanByCondition(Integer booktype, String bookname, Integer isborrow, PageBean pb);
BookInfoVo getBookInfoVoById(Integer id);
int upDateBookInfoVo(BookInfo pi);
int addBookInfo(BookInfo pi);
int deleteBookInfoVo(Integer id);
}
(2)BookTypeService.java
public interface BookTypeService {
List<BookType> getBookTypeList();
}
6.service.imp
(1)BookInfoVoServiceImpl.java
public class BookInfoVoServiceImpl implements BookInfoVoService {
@Override
public Integer getTotalCount(Integer booktype, String bookname, Integer isborrow) {
BookInfoVoDao dao = new BookInfoVoDaoImpl();
return dao.getTotalCount(booktype,bookname,isborrow);
}
@Override
public PageBean getPageBeanByCondition(Integer booktype, String bookname, Integer isborrow, PageBean pb) {
BookInfoVoDao dao = new BookInfoVoDaoImpl();
pb.setList(dao.getPageBeanByCondition(booktype,bookname,isborrow,pb.getPageSize(),pb.getPageIndex()));
return pb;
}
@Override
public BookInfoVo getBookInfoVoById(Integer id) {
BookInfoVoDao dao = new BookInfoVoDaoImpl();
return dao.getBookInfoVoById(id);
}
@Override
public int upDateBookInfoVo(BookInfo pi) {
BookInfoVoDao dao = new BookInfoVoDaoImpl();
return dao.upDateBookInfoVo(pi);
}
@Override
public int addBookInfo(BookInfo pi) {
BookInfoVoDao dao = new BookInfoVoDaoImpl();
return dao.addBookInfo(pi);
}
@Override
public int deleteBookInfoVo(Integer id) {
BookInfoVoDao dao = new BookInfoVoDaoImpl();
return dao.deleteBookInfoVo(id);
}
}
(2)BookTypeServiceImpl.java
public class BookTypeServiceImpl implements BookTypeService {
@Override
public List<BookType> getBookTypeList() {
BookTypeDao dao = new BookTypeDaoImpl();
return dao.getBookTypeList();
}
}
7.dao
(1)BookInfoVoDao.java
public interface BookInfoVoDao {
Integer getTotalCount(Integer booktype, String bookname, Integer isborrow);
List<?> getPageBeanByCondition(Integer booktype, String bookname, Integer isborrow, Integer pageSize,
Integer pageIndex);
BookInfoVo getBookInfoVoById(Integer id);
int upDateBookInfoVo(BookInfo pi);
int addBookInfo(BookInfo pi);
int deleteBookInfoVo(Integer id);
}
(2)BookTypeDao.java
public interface BookTypeDao {
List<BookType> getBookTypeList();
}
8.dao.impl
(1)BookInfoVoDaoImpl.java
public class BookInfoVoDaoImpl implements BookInfoVoDao {
@Override
public Integer getTotalCount(Integer booktype, String bookname, Integer isborrow) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
StringBuffer sb = new StringBuffer();
sb.append("select count(*) from bookinfo i inner join booktype t on i.booktype=t.typeid");
if(booktype!=null&&booktype!=-1){
sb.append(" and booktype="+booktype);
}
if(StringUtils.isNotBlank(bookname)){
sb.append(" and bookname like '%"+bookname+"%'");
}
if(isborrow!=null&&isborrow!=-1){
sb.append(" and isborrow="+isborrow);
}
String sql = sb.toString().replaceFirst("and","where");
try {
return qr.query(sql,new ScalarHandler<Long>()).intValue();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public List<?> getPageBeanByCondition(Integer booktype, String bookname, Integer isborrow, Integer pageSize,
Integer pageIndex) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
StringBuffer sb = new StringBuffer();
sb.append("select i.*,t.* from bookinfo i inner join booktype t on i.booktype=t.typeid");
if(booktype!=null&&booktype!=-1){
sb.append(" and booktype="+booktype);
}
if(StringUtils.isNotBlank(bookname)){
sb.append(" and bookname like '%"+bookname+"%'");
}
if(isborrow!=null&&isborrow!=-1){
sb.append(" and isborrow="+isborrow);
}
String sql = sb.toString().replaceFirst("and","where");
sql=sql+" order by bookid limit ?,?";
try {
return qr.query(sql,new BeanListHandler<BookInfoVo>(BookInfoVo.class),(pageIndex-1)*pageSize,pageSize);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public BookInfoVo getBookInfoVoById(Integer id) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
StringBuffer sb = new StringBuffer();
sb.append("select i.*,t.* from bookinfo i inner join booktype t on i.booktype=t.typeid where bookid=?");
try {
return qr.query(sb.toString(),new BeanHandler<BookInfoVo>(BookInfoVo.class),id);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public int upDateBookInfoVo(BookInfo pi) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
StringBuffer sb = new StringBuffer();
sb.append("update bookinfo set bookcode=?,bookname=?,booktype=?,bookauthor=?,publishpress=?,publishdate=? where bookid=?");
try {
return qr.update(sb.toString(),pi.getBookcode(),pi.getBookname(),pi.getBooktype(),pi.getBookauthor(),pi.getPublishpress(),pi.getPublishdate(),pi.getBookid());
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public int addBookInfo(BookInfo pi) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
StringBuffer sb = new StringBuffer();
sb.append("insert into bookinfo (bookid,bookcode,bookname,booktype,bookauthor,publishpress,publishdate,isborrow) values (null,?,?,?,?,?,?,0)");
try {
return qr.update(sb.toString(),pi.getBookcode(),pi.getBookname(),pi.getBooktype(),pi.getBookauthor(),pi.getPublishpress(),pi.getPublishdate());
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public int deleteBookInfoVo(Integer id) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
StringBuffer sb = new StringBuffer();
sb.append("delete from bookinfo where bookid=?");
try {
return qr.update(sb.toString(),id);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
(2)BookTypeDaoImpl.java
public class BookTypeDaoImpl implements BookTypeDao {
@Override
public List<BookType> getBookTypeList() {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
StringBuffer sb = new StringBuffer();
sb.append("select * from booktype");
try {
return qr.query(sb.toString(),new BeanListHandler<BookType>(BookType.class));
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
9.jsp页面
(1)index.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
(2)list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ 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>
</head>
<body>
<div style="margin: 0px auto;text-align: center;width: 1000px;">
<h1>图书管理系统</h1>
<form action="${pageContext.request.contextPath}/BookInfoVoListServlet" id="searchFrom">
<div style="margin: 0px auto;text-align: center;width: 1000px;">
图书类型:<select name="booktype">
<option value="-1">--全部--</option>
<c:forEach var="type" items="${sessionScope.typeList}">
<option value="${type.typeid}" <c:if test="${type.typeid==sessionScope.booktype}">selected="selected"</c:if>>${type.typename}</option>
</c:forEach>
</select>
图书名称:<input type="text" name="bookname" value="${sessionScope.bookname}"/>
是否借阅:<select name="isborrow">
<option value="-1">--全部--</option>
<option value="0" <c:if test="${sessionScope.isborrow==0}">selected="selected"</c:if>>已借阅</option>
<option value="1" <c:if test="${sessionScope.isborrow==1}">selected="selected"</c:if>>未借阅</option>
</select>
<input type="hidden" name="pageIndex" value="1" id="pageIndex"/>
<input type="submit" name="sbt" value="查询"/>
</div>
</form>
<div style="margin: 0px auto;text-align: right;width: 1000px;">
<a href="${pageContext.request.contextPath}/PreAddServlet">添加</a>
</div>
<div style="margin: 0px auto;text-align: center;width: 1000px;">
<table border="1" width="1000px">
<tr>
<td>图书编号</td>
<td>图书分类</td>
<td>图书名称</td>
<td>作者</td>
<td>出版社</td>
<td>操作</td>
<td>详细</td>
<td>删除</td>
<td>修改</td>
</tr>
<c:forEach var="book" items="${sessionScope.pb.list}">
<tr>
<td>${book.bookcode}</td>
<td>${book.booktype}</td>
<td>${book.bookname}</td>
<td>${book.bookauthor}</td>
<td>${book.publishpress}</td>
<td>${book.isborrow==0?'已借阅':'未借阅'}</td>
<td><a href="${pageContext.request.contextPath}/XiangXiServlet?id=${book.bookid}">详细</a></td>
<td><a href="${pageContext.request.contextPath}/DeleteServlet?id=${book.bookid}">删除</a></td>
<td><a href="${pageContext.request.contextPath}/PreUpdateServlet?id=${book.bookid}">修改</a></td>
</tr>
</c:forEach>
<tr>
<td colspan="9">
<a href="javascript:page(1)">首页</a>
<a href="javascript:page(${sessionScope.pb.pageIndex-1})">上一页</a>
<a href="javascript:page(${sessionScope.pb.pageIndex+1})">下一页</a>
<a href="javascript:page(${sessionScope.pb.totalPage})">尾页</a>
${sessionScope.pb.pageIndex}/${sessionScope.pb.totalPage}页
<input type="text" name="pageNum" id="pageNum" size="5px"/>
<input type="button" name="btn" value="go" onclick="go()"/>
</td>
</tr>
</table>
</div>
</div>
</body>
<script type="text/javascript">
function page(pg){
document.getElementById("pageIndex").value=pg;
document.getElementById("searchFrom").submit();
}
function go(){
var pg=document.getElementById("pageNum").value;
if(isNaN(pg)){
alert("对不起。请输入数字")
document.getElementById("pageNum").value="";
}else{
page(pg);
}
}
</script>
</html>
(3)add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ 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>
</head>
<body>
<div style="margin: 0px auto;text-align: center;width: 500px;">
<h1>图书添加系统</h1>
<form action="${pageContext.request.contextPath}/AddServlet">
<div style="margin: 0px auto;text-align: center;width: 500px;">
<table width="500px" border="1">
<tr>
<td>图书编号</td>
<td><input type="text" name="bookcode"/></td>
</tr>
<tr>
<td>图书名称</td>
<td><input type="text" name="bookname"/></td>
</tr>
<tr>
<td>图书分类</td>
<td>
<select name="booktype">
<c:forEach var="type" items="${sessionScope.typeList}">
<option value="${type.typeid}">${type.typename}</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>作者</td>
<td><input type="text" name="bookauthor"/></td>
</tr>
<tr>
<td>出版社</td>
<td><input type="text" name="publishpress"/></td>
</tr>
<tr>
<td>出版时间</td>
<td><input type="text" name="publishdate"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="sbt" value="提交"/>
<input type="reset" name="btn" value="取消"/>
</td>
</tr>
</table>
</div>
<input type="hidden" name="id" value="${sessionScope.biv.bookid}"/>
</form>
</div>
</body>
</html>
(4)update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ 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>
</head>
<body>
<div style="margin: 0px auto;text-align: center;width: 500px">
<h1>图书修改系统</h1>
<form action="${pageContext.request.contextPath}/UpdateServlet">
<div style="margin: 0px auto;text-align: center;width: 500px">
<table border="1" width="500px">
<tr>
<td>图书编号</td>
<td><input type="text" name="bookcode" value="${sessionScope.biv.bookcode}"/></td>
</tr>
<tr>
<td>图书名称</td>
<td><input type="text" name="bookname" value="${sessionScope.biv.bookname}"/></td>
</tr>
<tr>
<td>图书分类</td>
<td>
<select name="booktype">
<option value="-1">--全部--</option>
<c:forEach var="type" items="${sessionScope.typeList}">
<option value="${type.typeid}" <c:if test="${type.typeid==sessionScope.biv.booktype}">selected="selected"</c:if>>${type.typename}</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>作者</td>
<td><input type="text" name="bookauthor" value="${sessionScope.biv.bookauthor}" /></td>
</tr>
<tr>
<td>出版社</td>
<td><input type="text" name="publishpress" value="${sessionScope.biv.publishpress}" /></td>
</tr>
<tr>
<td>出版时间</td>
<td><input name="publishdate" value="<fmt:formatDate value='${sessionScope.biv.publishdate}' pattern='yyyy-MM-dd'/>"/></td>
</tr>
</table>
<div style="margin: 0px auto;text-align: center;width: 500px">
<input type="hidden" name="id" value="${sessionScope.biv.bookid}"/>
<input type="submit" name="btn" value="修改"/>
<input type="button" name="btn" value="返回" onclick="javascript:history.go(-1)"/>
<input type="reset" name="res" value="重置"/>
</div>
</div>
</form>
</div>
</body>
</html>
(5)xiangxi.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
</head>
<body>
<div style="margin:0px auto;text-align: center;width: 500px;">
<h1>图书详细系统</h1>
<form action="${pageContext.request.contextPath}/XiangXiServlet">
<div style="margin:0px auto;text-align: center;width: 500px;">
<table width="500px" border="1">
<tr>
<td>图书编号</td>
<td>${sessionScope.biv.bookcode}</td>
</tr>
<tr>
<td>图书名称</td>
<td>${sessionScope.biv.bookname}</td>
</tr>
<tr>
<td>图书分类</td>
<td>${sessionScope.biv.typename}</td>
</tr>
<tr>
<td>作者</td>
<td>${sessionScope.biv.bookauthor}</td>
</tr>
<tr>
<td>出版社</td>
<td>${sessionScope.biv.publishpress}</td>
</tr>
<tr>
<td>出版时间</td>
<td>${sessionScope.biv.publishdate}</td>
</tr>
<tr>
<td colspan="2">
<input type="button" name="sbt" value="返回" onclick="javascript:history.go(-1)"/>
</td>
</tr>
</table>
</div>
</form>
</div>
</body>
</html>