栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于Servlet+jsp的图书管理系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于Servlet+jsp的图书管理系统

基于Servlet+jsp的图书管理系统

系统介绍

1开发环境2系统功能3系统效果4系统结构及表5项目代码

5.0 三个工具类及web.xml文件jdbc配置文件5.1 登录5.2 注册(register.jsp)5.3 Bean5.4 注册登录验证的Servlet5.5 对应的DAO类5.6 拦截未登录用户的请求5.7 首页5.8 导航栏5.9 exit的servlet5.9 图书清单(分页查询)5.10 按名查询5.11 借阅管理5.12 账号管理5.13 root图书管理5.14 root用户管理

系统介绍

这是本人第一次写的web项目,记录下来做个笔记,有点简陋,因经验不足及技术有限项目中有诸多bug及不足的地方请多包含。

1开发环境

开发工具:Intellij IDEA2021
JDK版本:jdk1.8
mysql版本:5.7.14
前端:html、css、js、jsp
后端:java、Servlet

2系统功能

1.登录注册
2.图书的增删查
3.借书与还书
5.用户管理
6.用户注销

3系统效果

4系统结构及表




事先创建userinfo、rootuser、book如下:



其中图书的状态status代表是否被借阅(varchar类型)。

5项目代码 5.0 三个工具类及web.xml文件jdbc配置文件
package com.example.LoginDem.utils;
import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {

    private static String user;
    private static String password;
    private static String url;

    // 在静态代码块中获取配置文件信息
    static {
        try {
            Properties properties = new Properties();
            properties.load(new FileInputStream("F:\IDEA\project\LoginDemo2\src\main\resources\jdbc.properties"));
             url = properties.getProperty("url");
             user = properties.getProperty("user");
             password = properties.getProperty("password");
            String driver = properties.getProperty("driver");
            Class.forName(driver);
        } catch (Exception e){
            e.printStackTrace();
        }
    }
    // 获取数据库连接
    public static Connection getConnect() throws SQLException {
        return DriverManager.getConnection(url,user,password);
    }
    //释放数据库资源
    public static void clean(ResultSet resultSet, Statement statement, Connection connection) throws SQLException {
        if (resultSet != null) {
            resultSet.close();
        }
        if (statement != null) {
            statement.close();
        }
        if (connection != null){
            connection.close();
        }
    }
    // 判断数据库中表是否为空(存在)
    public static boolean isExists(String user) throws SQLException {
        String userbook = user+"book";
        Connection connect = DriverManager.getConnection(url,"root",password);
        String sql = "show tables like '"+userbook+"'";
        PreparedStatement ps = connect.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        if(rs.next()){
            rs.close();
            ps.close();
            connect.close();
            return true;
        }
        return false;
    }
}

package com.example.LoginDem.utils;
import com.example.LoginDem.entity.Book;
import java.util.List;

public class Page {
    // 总页数
    private int totalPageCount;
    // 页面大小,即每页显示记录条数
    private int pageSize = 5;
    // 记录总数
    private int totalCount;
    // 当前页码
    private int currentPageNo = 1;
    // 每页网站集合
    private List BookList;

    public int getTotalPageCount() {
        return totalPageCount;
    }

    public void setTotalPageCount(int totalPageCount) {
        this.totalPageCount = totalPageCount;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        if (pageSize > 0)
            this.pageSize = pageSize;
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        if (totalCount > 0)
           this.totalCount = totalCount;
        // 计算总页数
        this.totalPageCount = this.totalCount % pageSize == 0? (this.totalCount / pageSize) :(this.totalCount / pageSize + 1);
    }

    public int getCurrentPageNo() {
        if (currentPageNo == 0)
            return 0;
        else return currentPageNo;
    }

    public void setCurrentPageNo(int currentPageNo) {
        if (currentPageNo > 0)
        this.currentPageNo = currentPageNo;
    }

    public List getBookList() {
        return BookList;
    }

    public void setBookList(List bookList) {
        this.BookList = bookList;
    }
}

package com.example.LoginDem.utils;
import com.example.LoginDem.entity.User;
import java.util.List;

public class UserObject {
    List userList;
    public UserObject(List list) {
        this.userList = list;
    }
    public List getUserList() {
        return userList;
    }
    public void setUserList(List userList) {
        this.userList = userList;
    }
}



    
        /login.jsp
    
      
        5
    

url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
user=root
password=986836
driver=com.mysql.jdbc.Driver
5.1 登录

login.jsp

<%@ page import="java.io.PrintWriter" %>
<%--
  Created by IntelliJ IDEA.
  User: brett
  Date: 2022/1/30
  Time: 8:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    登录
    


    








${error}
5.2 注册(register.jsp)
<%--
  Created by IntelliJ IDEA.
  User: brett
  Date: 2022/1/30
  Time: 13:31
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    注册
    
    










${info}

ajax:Asynchronous javascript and XML,异步的Javascript和XML。ajax不是一种新的编程语言,而是一种现有标准使用的新方法。ajax最大的优点是在不加载整个页面的条件下与服务器交互,进行部分页面的更新。使用jquery封装的使用方法如下:

$.ajax({
	url:"请求路径",
	type:"请求方式(默认'GET')",
	data:{},   //请求参数(键值对)
	success:function (data){},  //响应成功后的回调函数,data表示响应数据
	dataType:"text";  //响应数据类型  text、json
});

这里注册页面,在注册用户名时,当输入框失去焦点后会异步与服务器交互,查看是否已经被注册。

5.3 Bean
package com.example.LoginDem.entity;


public class User {

    private String username;
    private String password;

    public User(){}

    public User(String username, String password){
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

package com.example.LoginDem.entity;


public class Book {

    private String name;
    private Integer price;
    private Integer bookid;
    private String author;
    private String status;  // 图书状态(false:未借出,true:已借)

    public Book() {}

    public Book(String name, Integer price, Integer bookid, String author, String status) {
        this.name = name;
        this.price = price;
        this.bookid = bookid;
        this.author = author;
        this.status = status;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    public Integer getBookid() {
        return bookid;
    }

    public void setBookid(Integer bookid) {
        this.bookid = bookid;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

5.4 注册登录验证的Servlet
package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.UserDao;
import com.example.LoginDem.entity.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

@WebServlet("/login")
public class loginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String LoginUser = request.getParameter("v");
        if ("普通用户登录".equals(LoginUser)) {
            UserDao userDao = new UserDao();
            User user = null;
            try {
                user = userDao.login(username, password);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            if (user != null) {
                request.getSession().setAttribute("user", user.getUsername());
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            } else {
                request.setAttribute("error", "用户名/账号密码错误!");
                request.getRequestDispatcher("/login.jsp").forward(request, response);
            }
        }else{
            UserDao userDao = new UserDao();
            User user = null;
            try {
                user = userDao.rootLogin(username, password);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            if (user != null) {
                request.getSession().setAttribute("user", user.getUsername());
                request.getRequestDispatcher("/root.jsp").forward(request, response);
            } else {
                request.setAttribute("error", "用户名/账号密码错误!");
                request.getRequestDispatcher("/login.jsp").forward(request, response);
            }
        }
    }
}

package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.UserDao;
import com.example.LoginDem.entity.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;


@WebServlet("/register")
public class registerServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=UTF-8");

        String username = req.getParameter("username");
        String password = req.getParameter("password");

        User user = new User(username,password);
        UserDao userDao = new UserDao();
        boolean b = false;
        try {
            b = userDao.register(user);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        if (b){
            req.setAttribute("info","注册成功!");
        } else {
            req.setAttribute("info","注册失败(用户名重复)!");
        }
        req.getRequestDispatcher("/register.jsp").forward(req,resp);
    }
}

package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.UserValidDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

@WebServlet("/UserValid")
public class UserValidServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置编码
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        //获取参数
        String username = request.getParameter("username");
        PrintWriter writer = response.getWriter();
        UserValidDao userValidDao = new UserValidDao();

        String data = "";
        try {
            if(userValidDao.userValid(username)){
                data = "用户名已被注册,请重新输入";
            }else if (!username.equals("")){
                data = "用户名可注册";
            }
            writer.write(data);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

5.5 对应的DAO类
package com.example.LoginDem.dao;
import com.example.LoginDem.entity.User;
import com.example.LoginDem.utils.JDBCUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class UserDao {

    //此方法用于在数据库中查询信息并与login.jsp表格中所填信息比较,若数据库中存在
    //与表格所填数据一一对应相等,则登陆成功,否则登录失败
    public User login(String username, String password) throws SQLException {
        User user = new User();
        Connection connect = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try{
            connect = JDBCUtils.getConnect();
            String sql = "select * from UserInfo where `name`=? and `password`=?";
            ps = connect.prepareStatement(sql);
            ps.setString(1,username);
            ps.setString(2,password);
            rs = ps.executeQuery();
            if (rs.next()){
                user.setUsername(rs.getString("name"));
                user.setPassword(rs.getString("password"));
            } else {
                user = null;
            };
        }catch (SQLException e){
            e.printStackTrace();
        }finally{
            JDBCUtils.clean(rs,ps,connect);
        }
        return user;
    }

    public User rootLogin(String username, String password) throws SQLException {
        User user = new User();
        Connection connect = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try{
            connect = JDBCUtils.getConnect();
            String sql = "select * from rootuser where `name`=? and `password`=?";
            ps = connect.prepareStatement(sql);
            ps.setString(1,username);
            ps.setString(2,password);
            rs = ps.executeQuery();
            if (rs.next()){
                user.setUsername(rs.getString("name"));
                user.setPassword(rs.getString("password"));
            } else {
                user = null;
            };
        }catch (SQLException e){
            e.printStackTrace();
        }finally{
            JDBCUtils.clean(rs,ps,connect);
        }
        return user;
    }

    //注册用户,向数据库中写入新用户的信息
    public boolean register(User user) throws SQLException {
        Connection connect = JDBCUtils.getConnect();
        String sql = "insert into UserInfo values (?,?)";
        PreparedStatement ps = connect.prepareStatement(sql);
        ps.setString(1,user.getUsername());
        ps.setString(2,user.getPassword());
        int i = ps.executeUpdate();
        JDBCUtils.clean(null,ps,connect);
        return (i > 0);
    }
    // 查找数据库中所有用户
    public List selectUser() throws SQLException {
        Connection connect = JDBCUtils.getConnect();
        String sql = "select * from userinfo";
        Statement statement = connect.createStatement();
        ResultSet rs = statement.executeQuery(sql);
        List users = new ArrayList<>();
        while(rs.next()){
            User user = new User();
            user.setUsername(rs.getString(1));
            user.setPassword(rs.getString(2));
            users.add(user);
        }
        return users;
    }
}

package com.example.LoginDem.dao;
import com.example.LoginDem.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UserValidDao {
    public boolean userValid(String username) throws SQLException {
        if ("root".equals(username))
            return true;
        Connection connect = JDBCUtils.getConnect();
        String sql = "select * from userinfo where `name`=?";
        PreparedStatement ps = connect.prepareStatement(sql);
        ps.setString(1,username);
        ResultSet rs = ps.executeQuery();
        boolean isTure = rs.next();
        JDBCUtils.clean(rs,ps,connect);
        return isTure;
    }
}

5.6 拦截未登录用户的请求
package com.example.LoginDem.Filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebFilter("
            display: block;
            
            text-decoration: none;
            font-size: 18px;
            color: #000000;
            padding: 11px 20px;

        }
        li a:hover{
            background-color: #555;
            color: white;
        }
        ul{
            
            position: fixed;
            list-style-type: none;
            padding: 0;
            margin: 0;
            width: 150px;
            height: 100%;
            background-color: #DDDDDD;
        }
        .Select, .ID{
           background-color: rgba(0,0,0,.1);
            font-size: 14px;
        }
    


    
    



nav2.jsp

<%--
  Created by IntelliJ IDEA.
  User: brett
  Date: 2022/1/31
  Time: 11:24
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    
    导航栏
    
    






root.jsp

<%--
  Created by IntelliJ IDEA.
  User: brett
  Date: 2022/2/2
  Time: 19:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    
    管理员页面
    


    <%@include file="head.jsp" %>
    <%@include file="nav2.jsp" %>
    

<%= "登录成功!" %>


Hello 管理员 ${user}

5.9 exit的servlet
package com.example.LoginDem.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/exit")
public class exitServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        HttpSession session = request.getSession();
        String username = (String)session.getAttribute("user");
        if (username != null) {
            session.removeAttribute("user");  // 删除用户对应的Session
        }
        // 请求转发到登录界面
        request.getRequestDispatcher("/login.jsp").forward(request,response);
    }
}

5.9 图书清单(分页查询)

Pageselect.jsp

<%@ page import="com.example.LoginDem.utils.Page" %>
<%--
  Created by IntelliJ IDEA.
  User: brett
  Date: 2022/2/2
  Time: 9:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    select
    


    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@include file="head.jsp"%>
    <%@include file="nav.jsp"%>
    
<% Page pageObject = (Page) request.getAttribute("page"); out.print("

当前页面:"+pageObject.getCurrentPageNo()+"

"); request.setAttribute("booklist1",pageObject.getBookList()); %>
图书列表
BookId Name Price Author Status
${book.bookid} ${book.name} ${book.price} ${book.author} ${book.status}



<% for (int i=1;i<=pageObject.getTotalPageCount();i++){ %> <%=i%>   <% } %>
package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.SelectBookDaoImpl;
import com.example.LoginDem.entity.Book;
import com.example.LoginDem.utils.Page;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/SelectBook")
public class SelectBookServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        SelectBookDaoImpl selectBookDao = new SelectBookDaoImpl();

        // 获取要查询的起始页面
        String pageNo = request.getParameter("pageNo") != null?request.getParameter("pageNo"):"1";
        int currentPageNo = Integer.parseInt(pageNo);
        Page page = new Page();
        page.setCurrentPageNo(currentPageNo);
        page.setPageSize(5);
        page.setTotalCount(selectBookDao.getTotalCount());

        // 获取查询的图书列表
        List list = selectBookDao.getPageBookList(page.getCurrentPageNo(),page.getPageSize());
        page.setBookList(list);

        // 封装数据
        request.setAttribute("page",page);

        // 请求转发
        request.getRequestDispatcher("/Pageselect.jsp").forward(request,response);
    }
}

package com.example.LoginDem.dao.Impl;
import com.example.LoginDem.entity.Book;
import java.util.List;

public interface SelectBookDao {

    // 查询总条数
    public int getTotalCount();

    //根据起始下标和每页显示数量查询数据
    public List getPageBookList(int pageNo, int pagesize);

}



package com.example.LoginDem.dao;
import com.example.LoginDem.dao.Impl.SelectBookDao;
import com.example.LoginDem.entity.Book;
import com.example.LoginDem.utils.JDBCUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class SelectBookDaoImpl implements SelectBookDao {

    // 查询总条数
    @Override
    public int getTotalCount() {
        int count = 0;
        Connection connect;
        try {
           connect = JDBCUtils.getConnect();
           String sql = "select count(bookid) from book";  // 统计表中的总行数
            PreparedStatement ps = connect.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            rs.next();
            count = rs.getInt(1);
            JDBCUtils.clean(rs,ps,connect);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return count;
    }

    // 根据要查询的页数和每页展示数据的数量来查询数据
    @Override
    public List getPageBookList(int pageNo, int pagesize) {
        PreparedStatement ps;
        ResultSet rs;
        List list = new ArrayList<>();
        try {
            Connection connect = JDBCUtils.getConnect();
            String sql = "select * from book limit "+(pageNo - 1)*pagesize+","+pagesize;
            // limit 3,2 表示从第4个开始查询两个记录
            ps = connect.prepareStatement(sql);
            System.out.println(sql);
            rs = ps.executeQuery();

            while (rs.next()){
                Book book = new Book();
                book.setBookid(rs.getInt(1));
                book.setName(rs.getString(2));
                book.setPrice(rs.getInt(3));
                book.setAuthor(rs.getString(4));
                book.setStatus(rs.getString(5));
                list.add(book);
            }
            JDBCUtils.clean(rs,ps,connect);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }
}

5.10 按名查询

selectByName.jsp

<%@ page import="com.example.LoginDem.utils.Page" %>
<%--
  Created by IntelliJ IDEA.
  User: brett
  Date: 2022/2/2
  Time: 12:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    SelectByName
    
    


    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@include file="head.jsp" %>
    <%@include file="nav.jsp" %>
    
请输入书名关键字查询:
<% Page pageObject = (Page) request.getAttribute("pageObject2"); if (pageObject != null){ request.setAttribute("booklist",pageObject.getBookList()); } %>
<%-- --%>
图书列表
BookId Name Price Author Status 编辑
${book.bookid} ${book.name} ${book.price} ${book.author} ${book.status} 借阅
${error2}

这里有个易错的问题,window.location.href=url? 后只能代一个参数,要加上event.returnValue=false才可以。

package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.SelectByNameDao;
import com.example.LoginDem.entity.Book;
import com.example.LoginDem.utils.Page;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/SelectByName")
public class SelectByNameServlet extends HttpServlet {
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        // 设置编码方式
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");

        String Key = request.getParameter("KeyWord");
        if ("".equals(Key)){
            request.getRequestDispatcher("/selectByName.jsp").forward(request,response);
        }
        SelectByNameDao selectByNameDao = new SelectByNameDao();
        List books = selectByNameDao.SelectByName(Key);
        if (books.isEmpty()){
            request.setAttribute("error2","未开始查询或未查询到图书!");
        } else {
            Page page = new Page();
            page.setBookList(books);
            request.setAttribute("pageObject2",page);
        }
        request.getRequestDispatcher("/selectByName.jsp").forward(request,response);
    }
}
package com.example.LoginDem.dao;
import com.example.LoginDem.entity.Book;
import com.example.LoginDem.utils.JDBCUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class SelectByNameDao {
    public List SelectByName(String key){
        List books = new ArrayList<>();
        Book book;
        Connection connect;
        PreparedStatement ps;
        ResultSet rs;
        String sql = "select * from book where bookname like '%"+key+"%'";
        try {
            connect = JDBCUtils.getConnect();
            ps = connect.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()){
                book = new Book();
                book.setBookid(rs.getInt(1));
                book.setName(rs.getString(2));
                book.setPrice(rs.getInt(3));
                book.setAuthor(rs.getString(4));
                book.setStatus(rs.getString(5));
                books.add(book);
            }
        }catch(SQLException e){
            e.printStackTrace();
        }
        return books;
    }
}

5.11 借阅管理
package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.UserBookDao;
import com.example.LoginDem.entity.Book;
import com.example.LoginDem.utils.Page;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet("/SelectBorrowBook")
public class SelectBorrowBookServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置编码
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        UserBookDao userBook = new UserBookDao();
        String  user = (String) request.getSession().getAttribute("user");
        try {
            List books = userBook.resultBook(user);
            Page page = new Page();
            page.setBookList(books);
            request.setAttribute("BorrowBook",page);
           request.getRequestDispatcher("/borrow.jsp").forward(request,response);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

borrow.jsp

<%@ page import="com.example.LoginDem.utils.Page" %>
<%--
  Created by IntelliJ IDEA.
  User: brett
  Date: 2022/2/1
  Time: 12:14
  To 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" %>
<%@include file="head.jsp" %>
<%@include file="nav.jsp" %>
<%
    Page pageObject = (Page) request.getAttribute("BorrowBook");
    if (pageObject != null){
        request.setAttribute("booklist",pageObject.getBookList());
    }
%>
已借阅的书籍
id Name Price Author 操作
${book.bookid} ${book.name} ${book.price} ${book.author}
package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.ReturnBookDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

@WebServlet("/ReturnBook")
public class ReturnBookServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置编码
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        // 获取参数
        int id = Integer.parseInt(request.getParameter("id"));
        String user = (String) request.getSession().getAttribute("user");
        ReturnBookDao returnbook = new ReturnBookDao();
        try {
            returnbook.returnBook(user,id);
            request.getRequestDispatcher("/SelectBorrowBook").forward(request,response);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

package com.example.LoginDem.dao;
import com.example.LoginDem.entity.Book;
import com.example.LoginDem.utils.JDBCUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class UserBookDao {
    public void createTable(String user) throws SQLException {
        String userbook = user + "book";
        System.out.println(userbook);
        try{
            boolean flag = JDBCUtils.isExists(user);
            Connection connect = JDBCUtils.getConnect();
            if (!flag) {
                System.out.println(flag);
                String sql2 = "create table "+userbook+" (bookid int primary key," +
                        "bookname varchar(32) not null," +
                        "price int," +
                        "author varchar(32)" +
                        ")charset=utf8;";
                PreparedStatement ps = connect.prepareStatement(sql2);
                ps.execute();
                JDBCUtils.clean(null,ps,connect);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
    public void addBook(String user, Book book) throws SQLException {
        Connection connect = JDBCUtils.getConnect();
        String userbook = user + "book";
                try{
                String sql3 = "insert into "+userbook+" values(?,?,?,?);";
                String sql4 = "update book set status='true' where bookid = ?";
                PreparedStatement ps = connect.prepareStatement(sql3);
                ps.setInt(1,book.getBookid());
                ps.setString(2,book.getName());
                ps.setInt(3,book.getPrice());
                ps.setString(4,book.getAuthor());
                connect.setAutoCommit(false); //开启事务
                ps.executeUpdate();
                PreparedStatement ps2 = connect.prepareStatement(sql4);
                ps2.setInt(1,book.getBookid());
                ps2.executeUpdate();
                connect.commit();  //提交事务
                ps.close();
                ps2.close();
                connect.close();
        }catch(SQLException e){
            connect.rollback();
            e.printStackTrace();
        }
    }
    public List resultBook(String user) throws SQLException {
        String userbook = user + "book";
        if (!JDBCUtils.isExists(user)){
            createTable(user);
        }
        Connection connect = JDBCUtils.getConnect();
        String sql = "select * from "+userbook;
        PreparedStatement ps = connect.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        List books = new ArrayList<>();
        while (rs.next()){
            Book book = new Book();
            book.setBookid(rs.getInt(1));
            book.setName(rs.getString(2));
            book.setPrice(rs.getInt(3));
            book.setAuthor(rs.getString(4));
            books.add(book);
        }
        return books;
    }
}

5.12 账号管理

changePassword.jsp

<%--
  Created by IntelliJ IDEA.
  User: brett
  Date: 2022/2/1
  Time: 12:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    
    修改密码
    


<%@include file="head.jsp" %>
<%@include file="nav.jsp" %>
    
输入原密码: ${errorOld}

输入新密码:

确认新密码:

package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.ChangeDelUserDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

@WebServlet("/ChangePwd")
public class ChangePwdServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置编码
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        // 获取参数
        String oldPwd = request.getParameter("OldPwd");
        String newPwd = request.getParameter("NewPwd");
        String user = (String) request.getSession().getAttribute("user");

        ChangeDelUserDao changeUser = new ChangeDelUserDao();
        try {
            if (!changeUser.change(user,oldPwd,newPwd)){
                request.setAttribute("errorOld","输入的原密码不正确!");
                request.getRequestDispatcher("/changePassword.jsp").forward(request,response);
            }else {
                request.getSession().removeAttribute("user");
                //  response.sendRedirect("/login.jsp"); 错误,请求转发和重定向不能同时使用
                request.getRequestDispatcher("/login.jsp").forward(request,response);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

package com.example.LoginDem.dao;
import com.example.LoginDem.utils.JDBCUtils;
import java.sql.*;

public class ChangeDelUserDao {
    //修改密码
    public boolean change(String user,String oldPwd,String newPwd) throws SQLException {
        Connection connect = JDBCUtils.getConnect();
        String sql = "select * from userinfo where `name`=? and `password`=?";
        PreparedStatement ps = connect.prepareStatement(sql);
        ps.setString(1,user);
        ps.setString(2,oldPwd);
        ResultSet rs = ps.executeQuery();
        while(rs.next()){
            if (rs.getString(2).equals(oldPwd)){ //判断原密码是否正确
                String sql2 = "update userinfo set `password`=? where `name`=?";
                PreparedStatement ps2 = connect.prepareStatement(sql2);
                ps2.setString(1,newPwd);
                ps2.setString(2,user);
                ps2.executeUpdate();
                JDBCUtils.clean(rs,ps2,connect);
                return true;
            }
        }
        ps.close();
        JDBCUtils.clean(rs,ps,connect);
        return false;
    }
   // 注销用户(判断用户借阅表是否归还)
    public void deleteUser(String user) throws SQLException {
        Connection connect = JDBCUtils.getConnect();
        String sql = "delete from userinfo where `name`=?";
        PreparedStatement ps = connect.prepareStatement(sql);
        ps.setString(1,user);
        ps.executeUpdate();
        JDBCUtils.clean(null,ps,connect);
    }
}

package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.ChangeDelUserDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

@WebServlet("/Delete")
public class DeleteServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置编码
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        if (request.getParameter("userName")!=null){  //管理员删除用户
            String username = request.getParameter("userName");
            ChangeDelUserDao userDel = new ChangeDelUserDao();
            try {
                userDel.deleteUser(username);
                request.getRequestDispatcher("/SelectUser").forward(request,response);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        else{   //用户自己注销
            String user = (String) request.getSession().getAttribute("user");
            ChangeDelUserDao changeDelUser = new ChangeDelUserDao();
            try {
                changeDelUser.deleteUser(user);
                request.getRequestDispatcher("/login.jsp").forward(request,response);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

5.13 root图书管理
package com.example.LoginDem.Servlet;
import com.example.LoginDem.entity.Book;
import com.example.LoginDem.utils.Page;
import com.example.LoginDem.dao.SelectBookDaoImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/BookManager")
public class BookManagerServlet extends HttpServlet{
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        String pageNo = request.getParameter("pageNo") != null?request.getParameter("pageNo"):"1";
        SelectBookDaoImpl selectBookDao = new SelectBookDaoImpl();
        int currentPageNo = Integer.parseInt(pageNo);
        Page page = new Page();
        page.setCurrentPageNo(currentPageNo);
        page.setPageSize(5);
        page.setTotalCount(selectBookDao.getTotalCount());
        List books = selectBookDao.getPageBookList(page.getCurrentPageNo(),page.getPageSize());
        page.setBookList(books);
        request.setAttribute("rootSelect",page);
        request.getRequestDispatcher("/rootManager.jsp").forward(request,response);
    }
}

rootManager.jsp

<%@ page import="com.example.LoginDem.utils.Page" %>
<%--
  Created by IntelliJ IDEA.
  User: brett
  Date: 2022/2/2
  Time: 9:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


  
  rootManager
  


<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@include file="head.jsp"%>
<%@include file="nav2.jsp"%>
<% Page pageObject = (Page) request.getAttribute("rootSelect"); out.print("

当前页面:"+pageObject.getCurrentPageNo()+"

"); request.setAttribute("booklist3",pageObject.getBookList()); %>
图书列表
BookId Name Price Author Status 操作
${book.bookid} ${book.name} ${book.price} ${book.author} ${book.status}



<% for (int i=1;i<=pageObject.getTotalPageCount();i++){ %> <%=i%>  <% } %>

package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.BookManagerDaoImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

@WebServlet("/RootDelete")
public class RootDeleteServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置编码
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        // 获取参数
        String id = request.getParameter("id");
        BookManagerDaoImpl bookManagerDao = new BookManagerDaoImpl();
        try {
            bookManagerDao.deleteBook(Integer.parseInt(id));
            request.getRequestDispatcher("/BookManager").forward(request,response);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

package com.example.LoginDem.dao.Impl;
import com.example.LoginDem.entity.Book;

import java.sql.SQLException;
import java.util.List;
public interface BookManagerDao {
    // 查找图书(使用分页查找)

    // 增加书籍
    public void addBook(Book book) throws SQLException;
    // 删除数据
    public void deleteBook(int bookid) throws SQLException;
}



package com.example.LoginDem.dao;
import com.example.LoginDem.dao.Impl.BookManagerDao;
import com.example.LoginDem.entity.Book;
import com.example.LoginDem.utils.JDBCUtils;
import java.sql.*;

public class BookManagerDaoImpl implements BookManagerDao {

    @Override
    public void addBook(Book book) throws SQLException {
        Connection connect = JDBCUtils.getConnect();
        String sql = "insert into book values(null,?,?,?,'false')";
        PreparedStatement ps = connect.prepareStatement(sql);
        ps.setString(1,book.getName());
        ps.setInt(2,book.getPrice());
        ps.setString(3,book.getAuthor());
        ps.executeUpdate();
        JDBCUtils.clean(null,ps,connect);
    }

    @Override
    public void deleteBook(int bookid) throws SQLException {
        Connection connect = JDBCUtils.getConnect();
        String sql = "delete from book where bookid=?";
        PreparedStatement ps = connect.prepareStatement(sql);
        ps.setInt(1,bookid);
        ps.executeUpdate();
        JDBCUtils.clean(null,ps,connect);
    }
}

addBook.jsp

<%--
  Created by IntelliJ IDEA.
  User: brett
  Date: 2022/2/1
  Time: 12:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    
    addBook
    


<%@include file="head.jsp" %>
<%@include file="nav2.jsp" %>
输入书名:

输入价格:

输入作者:

package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.BookManagerDaoImpl;
import com.example.LoginDem.entity.Book;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

@WebServlet("/AddBook")
public class addBookServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        String bookName = request.getParameter("bookname");
        int price = Integer.parseInt(request.getParameter("price"));
        String author = request.getParameter("author");
        Book book = new Book();
        book.setName(bookName);
        book.setPrice(price);
        book.setAuthor(author);
        BookManagerDaoImpl bookManagerDao = new BookManagerDaoImpl();
        try {
            bookManagerDao.addBook(book);
            request.getRequestDispatcher("/BookManager").forward(request,response);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

5.14 root用户管理
package com.example.LoginDem.Servlet;
import com.example.LoginDem.dao.UserDao;
import com.example.LoginDem.entity.User;
import com.example.LoginDem.utils.UserObject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet("/SelectUser")
public class SelectUserServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置编码方式
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        UserDao userDao = new UserDao();
        try {
            List users = userDao.selectUser();
            UserObject userObject = new UserObject(users);
            request.setAttribute("userObject",userObject);
            request.getRequestDispatcher("/userManager.jsp").forward(request,response);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

userManager.jsp

<%@ page import="com.example.LoginDem.utils.UserObject" %>
<%--
  Created by IntelliJ IDEA.
  User: brett
  Date: 2022/2/2
  Time: 12:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


  userManager
  


<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@include file="head.jsp" %>
<%@include file="nav2.jsp" %>
<%
  UserObject userObject = (UserObject) request.getAttribute("userObject");
  if (userObject != null){
    request.setAttribute("userlist",userObject.getUserList());
  }
%>
用户信息
Name Password 操作
${user.username} ${user.password}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732166.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号