博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet+JSP+JDBC设计实现图书系统——管理功能实现
阅读量:5265 次
发布时间:2019-06-14

本文共 12179 字,大约阅读时间需要 40 分钟。

写在前面,之前由于种种原因博客好久没有更新。最近打算重拾JavaWeb,所以从头开始,先用servlet+jdbc+bootstrap最基础的代码实现一个图书系统。考虑有管理员端+用户端,项目完成后会上传至github,后期会升级ssh/ssm等,毕竟是温故学习,一点一点来,项目会一直更新补充!

  github地址——

  2018.04.16更新,管理端进一步完善,页面优化调整

  2018.03.29更新,管理端实现了过滤功能(管理端大部分功能已经完善,只剩下JS/JQ的还没有,等用户端写完了再说)

  2018.03.26更新,管理端添加图书编辑页面(book.jsp),并采用了jquery的ajax技术

  2018.03.22更新,管理端采用EL&JSTL进行了页面重构,并且添加分页功能

1.项目结构

 

│ .classpath

│ .gitignore
│ .project
│ LICENSE
│ README.md
├─.settings
│ .jsdtscope
│ org.eclipse.core.resources.prefs
│ org.eclipse.jdt.core.prefs
│ org.eclipse.wst.common.component
│ org.eclipse.wst.common.project.facet.core.xml
│ org.eclipse.wst.css.core.prefs
│ org.eclipse.wst.html.core.prefs
│ org.eclipse.wst.jsdt.ui.superType.container
│ org.eclipse.wst.jsdt.ui.superType.name
├─build
│ └─classes
│ ├─biz
│ │ │ AdminBiz.class
│ │ │ bookBiz.class
│ │ │
│ │ └─impl
│ │ AdminBizImpl.class
│ │ bookBizImpl.class
│ │
│ ├─dao
│ │ │ AdminDao.class
│ │ │ bookDao.class
│ │ │
│ │ └─impl
│ │ AdminDaoImpl.class
│ │ bookDaoImpl.class
│ │
│ ├─pojo
│ │ admin.class
│ │ book.class
│ │ PageBean.class
│ │
│ ├─servlet
│ │ AdminServlet.class
│ │ BookServlet.class
│ │ LogFilter.class
│ │ LoginServlet.class
│ │
│ └─utils
│ myDB.class
├─src
│ ├─biz
│ │ │ AdminBiz.java
│ │ │ bookBiz.java
│ │ │
│ │ └─impl
│ │ AdminBizImpl.java
│ │ bookBizImpl.java
│ │
│ ├─dao
│ │ │ AdminDao.java
│ │ │ bookDao.java
│ │ │
│ │ └─impl
│ │ AdminDaoImpl.java
│ │ bookDaoImpl.java
│ │
│ ├─pojo
│ │ admin.java
│ │ book.java
│ │ PageBean.java
│ │
│ ├─servlet
│ │ AdminServlet.java
│ │ BookServlet.java
│ │ LogFilter.java
│ │ LoginServlet.java
│ │
│ └─utils
│ myDB.java
└─WebContent
├─css
│ bootstrap-theme.css
│ bootstrap-theme.css.map
│ bootstrap-theme.min.css
│ bootstrap-theme.min.css.map
│ bootstrap.css
│ bootstrap.css.map
│ bootstrap.min.css
│ bootstrap.min.css.map
├─fonts
│ glyphicons-halflings-regular.eot
│ glyphicons-halflings-regular.svg
│ glyphicons-halflings-regular.ttf
│ glyphicons-halflings-regular.woff
│ glyphicons-halflings-regular.woff2
├─img
│ │ duzhe.jfif
│ │ qingnian.jfif
│ │ s28350186.jpg
│ │ s29643861.jpg
│ │ s29672551.jpg
│ │ s29686001.jpg
│ │
│ └─readme
│ admin.PNG
├─js
│ bootstrap.js
│ bootstrap.min.js
│ jquery-3.3.1.js
│ npm.js
├─META-INF
│ MANIFEST.MF
├─web
│ admin.jsp
│ AdminLogin.jsp
│ book.jsp
└─WEB-INF
│ web.xml
└─lib
mysql-connector-java-5.1.46-bin.jar
taglibs-standard-impl-1.2.5.jar
taglibs-standard-spec-1.2.5.jar

 

 

  项目采取最基础的MVC分层架构,全部采用servlet+jdbc方式实现。jsp作为v层,servlet作为controller层与业务层代码关联,整个代码做到最大限度的低耦合。前端主要是jQuery和Bootstrap,毕竟我前端了解的少,仅仅会用几个API,所以整个项目前端不做过多赘述。

2.项目分层概述

  ①dao层主要是处理与数据库交互的逻辑

  AdminDao.java

1 public interface AdminDao {2     public boolean adminLogin(String admin,String password);3 }

  AdminDaoImpl.java

1 public class AdminDaoImpl implements AdminDao{ 2     public boolean adminLogin(String admin, String password) { 3         Connection conn=null; 4         PreparedStatement st=null; 5         ResultSet rs=null; 6         Boolean result=false; 7         try { 8             //获取连接 9             conn=myDB.getConnection();10             //编写SQL语句11             String adminLoginSql="select * from aduser where adname='"+admin+"' and password='"+password+"'";12             //创建语句执行者13             st=conn.prepareStatement(adminLoginSql);14             //获取结果15             rs=st.executeQuery();16             if(rs.next())17                 result=true;18             else19                 result=false;20         } catch (Exception e) {21             e.printStackTrace();22         }23         finally {24             myDB.closeResource(conn, st, rs);25         }26         return result;27     }28 }

 

  ②biz层主要是业务逻辑的实现

  AdminBiz类似Dao层,所以就不贴代码了

  AdminBizImpl.java

1 public class AdminBizImpl implements AdminBiz{ 2     private AdminDao adminDao; 3     public boolean adminLogin(String admin, String password) { 4         //实例化接口 5         adminDao=new AdminDaoImpl(); 6         pojo.admin admin2=new pojo.admin(); 7         admin2.setAdmin(admin); 8         admin2.setPassword(password); 9         Boolean result=adminDao.adminLogin(admin2.getAdmin(), admin2.getPassword());10         return result;11     }12 }

 

  ③utils是工具类,主要有数据库连接的类,这样每次操作数据库不用重写代码

  

  ④pojo层是数据库表的映射实体类

  PageBean.java类主要用于图书分页实现

  

1 public class PageBean
{ 2 private int currentPage=1;//当前页,默认显示第一页 3 private int pageCount=5;//每页显示的行数 4 private int totalCount;//总记录数 5 private int totalPage;//总页数=总记录数/每页显示的行数+1 6 private List
pageData; 7 8 //获取总页数 9 public int getTotalPage() {10 if(totalCount%pageCount==0)11 totalPage=totalCount/pageCount;//被整除情况12 else {13 totalPage=totalCount/pageCount+1;14 }15 return totalPage;16 }17 public void setTotalPage(int totalPage) {18 this.totalPage=totalPage;19 }20 public int getCurrentPage() {21 return currentPage;22 }23 public void setCurrentPage(int currentPage) {24 this.currentPage = currentPage;25 }26 public int getPageCount() {27 return pageCount;28 }29 public void setPageCount(int pageCount) {30 this.pageCount = pageCount;31 }32 public int getTotalCount() {33 return totalCount;34 }35 public void setTotalCount(int totalCount) {36 this.totalCount = totalCount;37 }38 public List
getPageData() {39 return pageData;40 }41 public void setPageData(List
pageData) {42 this.pageData = pageData;43 }44 }
View Code

 

 

 

  ⑤servlet控制层

  AdminServlet.java类(用于图书管理端分页等功能的实现)

  

1 public class AdminServlet extends HttpServlet{ 2     @Override 3     protected void service(HttpServletRequest req, HttpServletResponse rep) throws ServletException, IOException { 4         int currentPage;//获得当前页 5         String current=(String) req.getParameter("page"); 6         if(current==null) 7             currentPage=1; 8         else 9             currentPage=Integer.parseInt(current);10         //实例化业务层11         bookBiz bookbiz=new bookBizImpl();12         PageBean pb=new PageBean();13         pb.setTotalCount(bookbiz.getTotalCount());14         if(currentPage>0)15             pb.setCurrentPage(currentPage);16         //分页查询17         ArrayList
books=bookbiz.searchAllBook(pb);18 //获得总页数19 int pageCount=pb.getTotalPage();20 //将book集合和页面数跳转至admin.jsp页面21 req.setAttribute("bookslist", books);22 req.setAttribute("pagesize", pageCount);23 req.getRequestDispatcher("web/admin.jsp").forward(req, rep);24 }25 }
View Code

 

  BookServlet.java类(用于图书编辑修改等的实现)

  

1 public class BookServlet extends HttpServlet{ 2     @Override 3     protected void service(HttpServletRequest req, HttpServletResponse rep) throws ServletException, IOException { 4         int bookid=Integer.parseInt(req.getParameter("bookid")); 5         bookBiz bookbiz=new bookBizImpl(); 6         book bk=bookbiz.getBookById(bookid); 7         if(req.getParameter("method")!=null&&req.getParameter("method").equals("update")) { 8             int borrow=Integer.parseInt(req.getParameter("borrow")); 9             String intro=req.getParameter("intro");10             if(bookbiz.editBook(bookid, intro, borrow)) {11                 //req.setAttribute("bk", bk);12                 //req.getRequestDispatcher("bookServlet?bookid="+bookid).forward(req, rep);13                 PrintWriter out=rep.getWriter();14                 out.println("success");15             }16         }17         else {18             //将获取到的book数据发送并跳转至book.jsp页面19             req.setAttribute("bk", bk);20             req.getRequestDispatcher("web/book.jsp?bookid="+bookid).forward(req, rep);21         }22     }23 }
View Code

  LogFilter.java类(用于登录过滤实现)

 

1 public class LogFilter implements Filter{ 2     private FilterConfig config; 3     @Override 4     public void destroy() { 5         // TODO Auto-generated method stub 6          7     } 8     /* 9      * Filter的核心处理10      * */11     @Override12     public void doFilter(ServletRequest req, ServletResponse rep, FilterChain filc)13             throws IOException, ServletException {14         HttpServletRequest request=(HttpServletRequest) req;15         HttpServletResponse response=(HttpServletResponse) rep;16         HttpSession session=request.getSession();17         //如果session中有logined,则证明过滤成功18         if(session.getAttribute("logined")!=null) {19             filc.doFilter(req, rep);20         }21         else22             response.sendRedirect("web/AdminLogin.jsp");23     }24 25     @Override26     public void init(FilterConfig config) throws ServletException {27         this.config=config;28     }29 30 }
View Code

 

 

3.数据库设计

  aduser表

  

4.前端JSP设计

  ①AdminLogin.jsp页面

  

 

 

1 <%@ page language="java" contentType="text/html; charset=utf-8" 2     pageEncoding="utf-8"%> 3  4  5  6 
7 管理员登录页面 8
9
10 11 14 15 16
17
18

图书管理系统

19
20 21
22
23
24
26
27
28
29
30
31
33
34
35
36
37
38
39
40 41
42
43
44 45
View Code

 

  ②admin.jsp页面(管理端)

  

 

1 <%@page import="pojo.PageBean"%>  2 <%@page import="pojo.book"%>  3 <%@page import="java.util.ArrayList"%>  4 <%@page import="biz.impl.bookBizImpl"%>  5 <%@page import="biz.bookBiz"%>  6 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  7 <%@ page language="java" contentType="text/html; charset=utf-8"  8     pageEncoding="utf-8"%>  9  10  11  12 
13 管理页面 14
15
16
17
18 19 20 21 22
23
24
25

26 图书系统管理员端 27

28
29
30
31
32
33
34
35
50
36
37
38
39
40
41
42
43
44
45
46
47
48
49
51
56
59
70
73
76
79
84
85 86
87
书籍封面 书籍名称 是否借出 书籍作者 分类目录 简介 操作
52
53
54
55
57

${book['bk_name']}

58
60

61 62

63
64
65
66
67
68

69
71

${book['bk_name']}

72
74

${bk['bk_category']}

75
77

${book['bk_intro']}

78
80
81
82
83
88
95
96
97
100
101
102
103
104
105 106
View Code

 

   ③book.jsp(图书编辑页面)

1 <%@ page language="java" contentType="text/html; charset=utf8" 2     pageEncoding="utf8"%> 3     <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 4  5  6  7 
8 编辑图书 9
10
11
12 13 14 32 33 34
35

36 管理员端37

38
39
40
41
42
43
44
45
46
47
53
54
55
56
57
58
59
60
63
64
65
66
67
68
69
书籍名称 ${bk['bk_name']}
是否借出 48 52
书籍作者 ${bk['bk_author']}
书籍分类 61 ${bk['bk_category']}62
书籍介绍
70
71
72
73 74
View Code

 

5.web.xml等配置文件

 

转载于:https://www.cnblogs.com/vincentme/p/8602333.html

你可能感兴趣的文章
SWIFT国际资金清算系统
查看>>
Sping注解:注解和含义
查看>>
站立会议第四天
查看>>
如何快速掌握一门技术
查看>>
利用AMPScript获取Uber用户数据的访问权限
查看>>
vagrant 同时设置多个同步目录
查看>>
python接口自动化28-requests-html爬虫框架
查看>>
生成随机数的模板
查看>>
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
A-Softmax的总结及与L-Softmax的对比——SphereFace
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
composer 报 zlib_decode(): data error
查看>>
linux下WPS的使用
查看>>
Web Api 利用 cors 实现跨域
查看>>
hdu 3938 并查集
查看>>
instanceof
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>