图书管理系统模块,通过模糊查询实现查找图书的功能

在数据库中建库建表


建立相关外键,画出er图。

使用代码实现过程(重点)

配置tomcat,导入相关jar包资源,配置resources环境,配置测试用的log4jproperties

### 设置###
log4j.rootLogger = debug,stdout,D,E输出信息到控制抬
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n输出DEBUG 级别以上的日志到=E://logs/error.log
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n输出ERROR 级别以上的日志到=E://logs/error.log
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

配置database和mybatis-cfg.xml

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.56.101:3306/library
user=kb07
pwd=ok
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="database.properties"/><typeAliases><typeAlias type="cn.kgc.kb07.entity.User" alias="user"/><typeAlias type="cn.kgc.kb07.entity.Books" alias="books"/></typeAliases><environments default="dev"><environment id="dev"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${user}"/><property name="password" value="${pwd}"/></dataSource></environment></environments><mappers><mapper class="cn.kgc.kb07.dao.UserDao"/><mapper class="cn.kgc.kb07.dao.BooksDao"/></mappers>
</configuration>

在src中分层处理,创建和数据库对应的实体类:

package cn.kgc.kb07.entity;/*** @Author yanglitian* @Date 2020/6/15* @Description*/
public class Books {private int book_id;private String book_name;private double price;private int store;private String des;private int book_type;private String type_name;public String getType_name() {return type_name;}public void setType_name(String type_name) {this.type_name = type_name;}public int getBook_id() {return book_id;}public void setBook_id(int book_id) {this.book_id = book_id;}public String getBook_name() {return book_name;}public void setBook_name(String book_name) {this.book_name = book_name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public int getStore() {return store;}public void setStore(int store) {this.store = store;}public String getDes() {return des;}public void setDes(String des) {this.des = des;}public int getBook_type() {return book_type;}public void setBook_type(int book_type) {this.book_type = book_type;}@Overridepublic String toString() {return "Books{" +"book_id=" + book_id +", book_name='" + book_name + '\'' +", price=" + price +", store=" + store +", des='" + des + '\'' +", book_type=" + book_type +'}';}public Books() {}public Books(int book_id, String book_name, double price, int store, String des, int book_type) {this.book_id = book_id;this.book_name = book_name;this.price = price;this.store = store;this.des = des;this.book_type = book_type;}
}
package cn.kgc.kb07.entity;/*** @Author yanglitian* @Date 2020/6/15* @Description*/
public class User {private int user_id;private String user_name;private String user_type;private String user_phone;public int getUser_id() {return user_id;}public void setUser_id(int user_id) {this.user_id = user_id;}public String getUser_name() {return user_name;}public void setUser_name(String user_name) {this.user_name = user_name;}public String getUser_type() {return user_type;}public void setUser_type(String user_type) {this.user_type = user_type;}public String getUser_phone() {return user_phone;}public void setUser_phone(String user_phone) {this.user_phone = user_phone;}@Overridepublic String toString() {return "User{" +"user_id=" + user_id +", user_name='" + user_name + '\'' +", user_type='" + user_type + '\'' +", user_phone='" + user_phone + '\'' +'}';}}

创建BooksDao和他的映射文件

package cn.kgc.kb07.dao;import cn.kgc.kb07.entity.Books;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface BooksDao {List<Books> quaryBooks(@Param("book_name") String book_name, @Param("type_name")String type_name);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.kgc.kb07.dao.BooksDao"><select id="quaryBooks" resultType="books">select b.*,t.type_name from books b ,books_type t where 1=1<if test="book_name!=null and book_name!='' ">and book_name like concat("%",#{book_name},"%")</if><if test="type_name!=null and type_name!=''">and type_name=#{type_name}</if>;</select>
</mapper>

创建工具类,将getSQLSession的方法提炼出来,实现代码的可重用性

package cn.kgc.kb07.util;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;/*** @Author yanglitian* @Date 2020/6/15* @Description*/
public class MapperConfg {public SqlSession getSession(){SqlSession session=null;SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();try {InputStream is= Resources.getResourceAsStream("mybatis-cfg.xml");SqlSessionFactory factory=builder.build(is);session=factory.openSession();} catch (IOException e) {e.printStackTrace();}return session;}
}

在service中调用dao层的方法,实现业务逻辑

package cn.kgc.kb07.service;import cn.kgc.kb07.dao.BooksDao;
import cn.kgc.kb07.entity.Books;
import cn.kgc.kb07.util.MapperConfg;
import org.apache.ibatis.session.SqlSession;import java.util.List;/*** @Author yanglitian* @Date 2020/6/15* @Description*/
public class BooksServices {public List<Books> queryBooks(String book_name, String type_name) {MapperConfg mapperConfg=new MapperConfg();SqlSession session=mapperConfg.getSession();return session.getMapper(BooksDao.class).quaryBooks(book_name,type_name);}
}
package cn.kgc.kb07.service;import cn.kgc.kb07.dao.UserDao;
import cn.kgc.kb07.entity.User;
import cn.kgc.kb07.util.MapperConfg;
import org.apache.ibatis.session.SqlSession;/*** @Author yanglitian* @Date 2020/6/15* @Description*/
public class UserServices {public User getUser(String name){MapperConfg m=new MapperConfg();SqlSession session=m.getSession();User user=session.getMapper(UserDao.class).getUserType(name);return user;}
}

java部分写完之后,因为涉及与页面的交互,所以需要一个中转站servlet,接收页面传递来的请求,然后返回出去

在web里先设计一个index.jsp 接收请求,这边就是一个简单的表单,实现的逻辑就是,通过表单把数据上传,之后根据对应的业务逻辑,返回相应的结果

<%--Created by IntelliJ IDEA.User: 86185Date: 2020/6/15Time: 11:01To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>登录页面</title></head><body><p><h1>欢迎登录图书馆系统</h1></p><%Object o=session.getAttribute("msg");if(o!=null){out.print(o);}%><form action="login.do" method="post"><p>姓名 <input type="text" name="name"></p><input type="submit" value="登录"></form></body>
</html>
<%--Created by IntelliJ IDEA.User: 86185Date: 2020/6/15Time: 11:47To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>Title</title>
</head>
<body>
<p><h1>欢迎学生登录</h1></p>
<form action="querybooks.do" method="get">图书名:<input type="text" name="book_name">图书类型:<input type="text" name="type_name"><input type="submit" value="点击查询">
</form>
<hr/>
<table><tr><th>编号</th><th>书名</th><th>价格</th><th>库存</th><th>简介</th><th>类型</th></tr><c:if test="${books!=null}"><c:forEach items="${books}" var="user"><tr><td>${user.book_id}</td><td>${user.book_name}</td><td>${user.price}</td><td>${user.store}</td><td>${user.des}</td><td>${user.type_name}</td></tr></c:forEach></c:if></table></body>
</html>

在web.xml中配置环境

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><servlet-name>login</servlet-name><servlet-class>cn.kgc.kb07.servlet.UserServlet</servlet-class></servlet><servlet-mapping><servlet-name>login</servlet-name><url-pattern>/login.do</url-pattern></servlet-mapping><servlet><servlet-name>purchase</servlet-name><servlet-class>cn.kgc.kb07.servlet.PurchaseServlet</servlet-class></servlet><servlet-mapping><servlet-name>purchase</servlet-name><url-pattern>/purchase.do</url-pattern></servlet-mapping><servlet><servlet-name>query</servlet-name><servlet-class>cn.kgc.kb07.servlet.QueryBooksServlet</servlet-class></servlet><servlet-mapping><servlet-name>query</servlet-name><url-pattern>/querybooks.do</url-pattern></servlet-mapping>
</web-app>

用servlet连接前端和后端

package cn.kgc.kb07.servlet;import cn.kgc.kb07.entity.Books;
import cn.kgc.kb07.entity.User;
import cn.kgc.kb07.service.BooksServices;
import cn.kgc.kb07.service.UserServices;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;/*** @Author yanglitian* @Date 2020/6/15* @Description*/
public class UserServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doGet(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");String name=req.getParameter("name");UserServices services=new UserServices();User user=services.getUser(name);if(user!=null){if(user.getUser_type().equals("管理员")){req.getSession().setAttribute("user",user);resp.sendRedirect("adminlogin.jsp");}else if(user.getUser_type().equals("学生")){req.getSession().setAttribute("user",user);String book_name=req.getParameter("book_name");String type_name=req.getParameter("type_name");BooksServices service=new BooksServices();List<Books> booksList= service.queryBooks(book_name,type_name);req.getSession().setAttribute("books", booksList);resp.sendRedirect("studentlogin.jsp");}else{req.getSession().setAttribute("msg","没有该用户信息,请重新确认后登录");resp.sendRedirect("index.jsp");}}else{req.getSession().setAttribute("msg","没有该用户信息,请重新确认后登录");resp.sendRedirect("index.jsp");}}
}
package cn.kgc.kb07.servlet;import cn.kgc.kb07.entity.Books;
import cn.kgc.kb07.service.BooksServices;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;/*** @Author yanglitian* @Date 2020/6/15* @Description*/
public class QueryBooksServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String book_name=req.getParameter("book_name");String type_name=req.getParameter("type_name");BooksServices services=new BooksServices();List<Books> booksList= services.queryBooks(book_name,type_name);req.getSession().setAttribute("books",booksList);resp.sendRedirect("studentlogin.jsp");}
}

图书管理系统模块,通过模糊查询实现查找图书的功能相关推荐

  1. c语言大作业书店图书管理系统,C语言_课程设计—书店图书管理系统.doc

    计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24日 一.选题背景: 设计一个图书管理系统,管理员通过登陆账 ...

  2. 图书管理系统-用户信息维护-查询

    控制器代码: #region查询 publicActionResult selectUser(LayuiTablePage layuiTablePage, string searchTxt, int? ...

  3. 图书管理系统——读者管理(查询功能)

    1.读者查询 1.1点击'读者管理'跳转界面 1.2在Controller创建readerIndex ReaderController.java /*** 查询菜单的映射*/@GetMapping(& ...

  4. 图书管理系统——公告管理(查询公告详细)

    1 公告查询 1.1查询公告详细 noticeIndex.jsp /*** tool操作栏监听事件*/table.on('tool(currentTableFilter)', function (ob ...

  5. 图书管理系统(Java语言)

    图书管理系统 程序介绍 实现思路和内容概括 代码实现 顺序表--bookList(书架)和book(书) book类: bookList类 操作--各种的操作类 IOperation接口 AddOpe ...

  6. 【Java项目】小练习——图书管理系统

    作者:✿✿ xxxflower. ✿✿ 博客主页:xxxflower的博客 专栏:[Java项目]篇 语录:⭐每一个不曾起舞的日子,都是对生命的辜负.⭐ 今天我们来练习一个小项目:图书管理系统 我们先 ...

  7. 【Java简单实现图书管理系统】

    文章目录 一.图书管理系统要实现哪些功能 二.怎么去实现这些功能? 三.程序框架图 四.具体实现 1.Book Book BookList 2.User User NormallUser AdminU ...

  8. Linux locate模糊查询,linux命令: 两个查找工具 locate,find(示例代码)

    linux 中有很多查找工具,今天主要讲解locate,find两个工具. 1.locate (1)查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 注意:如果这 ...

  9. 基于JSP(java)图书管理系统的设计和实现(含源文件)

    获取项目源文件,联系Q:1225467431,可指导毕设,课设 摘 要 伴随着互联网的蓬勃发展,人们已经不再满足于信息的浏览和发布,而是渴望着能够充分享受网络所带来的更加多的便利.掌握计算机知识和应用 ...

最新文章

  1. 在ASP.NET中获取文件属性
  2. MPAndroidChart的具体属性方法
  3. [译] Go: 理解 Sync.Pool 的设计
  4. Java List面试题汇总
  5. 对状态代码使用JAX-RS异常
  6. 计算机主板知识,小白必看电脑主板知识扫盲,主板是什么?有什么用?
  7. Application.mk文件官方使用说明
  8. Java之Ajax技术
  9. Neurons and the brains
  10. ai人工智能软件_在FuchsiaOS,AI助手和软件优化上
  11. 【大数据处理技术】实验7(推荐林子雨老师的教程)
  12. C++ emplace_back用法介绍
  13. 阿里面试题:鹿晗发布恋情,为什么微博挂了?
  14. 如何使用vim来进行编辑文档和脚本
  15. CREO:CREO软件中如何设置和使用各种标准模板文件(asm组件模板、drw工程图模板、prt零件模板)、零件模板的定制、创建零件自动产生绘图、绘图模板的定制之详细攻略
  16. 网页报错:You don't have permission to access
  17. tensorflow模型ckpt如何查看输入输出节点,以及转uff模型
  18. 芯片开发必读 | 什么是IP设计?为什么它很重要?
  19. 第三集 情陷美丽青海湖,缘定小镇黑马河
  20. 树莓派下载OpenCV

热门文章

  1. 4t gpt索引 linux如何挂载,LINUX教学:Ubuntu 16.04通过GPT挂载硬盘
  2. MATLAB:巴特沃斯低通滤波器过滤信号
  3. Scrum板与Kanban如何抉择?敏捷工具:czsva板与按照mgzaqbpe
  4. Excel 表单元格数字显示为#NAME!
  5. MySQL异常java.sql.SQLSyntaxErrorException
  6. 我的心中每天开出一朵花(一)
  7. 双机热备_磁盘阵列柜
  8. Cenots7安装vim
  9. 什么是MapReduce(入门篇)
  10. MapReduce -----MapReduce 调优