国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaWeb階段案例--簡(jiǎn)易版管理圖書系統(tǒng)(增刪改查)

這篇具有很好參考價(jià)值的文章主要介紹了JavaWeb階段案例--簡(jiǎn)易版管理圖書系統(tǒng)(增刪改查)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

JavaWeb階段案例--簡(jiǎn)易版管理圖書系統(tǒng)(增刪改查)

?

1. 創(chuàng)建數(shù)據(jù)庫(kù)及數(shù)據(jù)表

#創(chuàng)建數(shù)據(jù)庫(kù)jdbc
CREATE DATABASE jdbc ;

#打開數(shù)據(jù)庫(kù)
USE jdbc ;

#創(chuàng)建用戶表 t_user
CREATE TABLE t_user(
	id int PRIMARY KEY auto_increment,
	username VARCHAR(20),
	password VARCHAR(20),
	sex VARCHAR(2),
	hobby VARCHAR(20),
	city VARCHAR(20),
	signature VARCHAR(200)
);

#創(chuàng)建圖書表 t_book
CREATE TABLE t_book(
	id int PRIMARY KEY auto_increment,
	bookname VARCHAR(20),
	price FLOAT ,
	author VARCHAR(20)
);

#在兩個(gè)表中插入分別插入一條數(shù)據(jù)
INSERT INTO t_user VALUES(NULL,'admin','123','男','足球','濟(jì)南','我是admin');
INSERT INTO t_book VALUES(NULL,'JavaWeb教程','50','李四');

2.在idea中創(chuàng)建一個(gè)JavaWeb項(xiàng)目

  1. 在WEB-INF下創(chuàng)建一個(gè)lib包,并導(dǎo)入以下jar包:(導(dǎo)入后,鼠標(biāo)右鍵選中l(wèi)ib文件夾,單擊“add as lib...”

JavaWeb階段案例--簡(jiǎn)易版管理圖書系統(tǒng)(增刪改查)

?注:使用Lombok包時(shí),除了需要導(dǎo)入jar包還需要從idea中下載Lombok插件

  1. file -- setting -- plugins -- 搜Lombok -- 勾選上 -- Apply -- OK
  2. file -- setting -- Build Exec.....? -- Compiler -- Annotation Processors -- 勾選Enable annotation processing

3.在web下創(chuàng)建4個(gè)jsp和1和html

  1. 4個(gè)jsp(addBook.jsp 、 bookList.jsp 、 index.jsp 、 updateBook.jsp)
  2. 1個(gè)html(register.html)

JavaWeb階段案例--簡(jiǎn)易版管理圖書系統(tǒng)(增刪改查)

? ? ? ? ?1. 創(chuàng)建addBook.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>添加圖書</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- 新 Bootstrap4 核心 CSS 文件 -->
    <link rel="stylesheet" >

    <!-- jQuery文件。務(wù)必在bootstrap.min.js 之前引入 -->
    <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>

    <!-- bootstrap.bundle.min.js 用于彈窗、提示、下拉菜單,包含了 popper.min.js -->
    <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>

    <!-- 最新的 Bootstrap4 核心 JavaScript 文件 -->
    <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
    <h2 class="text-center my-4">新增圖書</h2>

    <div class="row">
        <p class="col-md-5 offset-md-7">歡迎您,${loginUser.username}</p>
        <div class="col-md-4 offset-md-4">
            <form action="addbookservlet" method="post" >
                <table class="table table-bordered">
                    <tr>
                        <td>圖書名稱:</td>
                        <td><input type="text" class="form-control" name="bookname" placeholder="請(qǐng)輸入圖書名稱" id="bookname"></td>
                    </tr>
                    <tr>
                        <td>圖書價(jià)格:</td>
                        <td><input type="text" class="form-control" name="price" placeholder="請(qǐng)輸入圖書價(jià)格" id="price"></td>
                    </tr>
                    <tr>
                        <td>圖書作者:</td>
                        <td><input type="text" class="form-control" name="author" placeholder="請(qǐng)輸入圖書作者" id="author"></td>
                    </tr>

                    <tr>
                        <td colspan="2"><button type="submit" class="btn btn-primary">提交</button></td>
                    </tr>
                </table>
            </form>
        </div>
    </div>
</div>
</body>
</html>

? ? ? ? ? ? ? ? 2. 創(chuàng)建bookList.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<html>
<head>
    <title>圖書列表</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- 新 Bootstrap4 核心 CSS 文件 -->
    <link rel="stylesheet" >

    <!-- jQuery文件。務(wù)必在bootstrap.min.js 之前引入 -->
    <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>

    <!-- bootstrap.bundle.min.js 用于彈窗、提示、下拉菜單,包含了 popper.min.js -->
    <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>

    <!-- 最新的 Bootstrap4 核心 JavaScript 文件 -->
    <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>


<div class="container-fluid">
    <h2 class="text-center my-4">圖書列表</h2>
    <div class="row">
        <div class="col-md-6 offset-md-3">
            <p class="col-md-3 offset-md-9">歡迎您,${loginUser.username}</p>
            <a class="btn btn-primary my-2" href="addBook.jsp">新增圖書</a>
            <table class="table  table-hover">
                <thead>
                <tr>
                    <th>編號(hào)</th>
                    <th>圖書名稱</th>
                    <th>價(jià)格</th>
                    <th>作者</th>
                    <th>操作</th>
                </tr>
                </thead>
                <tbody>

                <c:forEach var="book" items="${list}">
                <tr>
                    <td>${book.id}</td>
                    <td>${book.bookname}</td>
                    <td>${book.price}</td>
                    <td>${book.author}</td>
                    <td>
                        <a href="getBookInfoById?id=${book.id}" class="btn btn-primary">修改</a>
                        <button class="btn btn-danger" data-toggle="modal" data-target="#myModal" onclick="transId(${book.id})">刪除</button>
                    </td>
                </tr>
                </c:forEach>

                </tbody>
            </table>
        </div>
    </div>


    <!-- 模態(tài)框 -->
    <div class="modal fade" id="myModal">
        <div class="modal-dialog">
            <div class="modal-content">

                <!-- 模態(tài)框頭部 -->
                <div class="modal-header">
                    <h4 class="modal-title">提示</h4>
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                </div>
                <input type="hidden" id="bookid" value="">
                <!-- 模態(tài)框主體 -->
                <div class="modal-body">
                    確認(rèn)刪除該信息嗎?
                </div>

                <!-- 模態(tài)框底部 -->
                <div class="modal-footer">
                    <button type="button" class="btn btn-danger" data-dismiss="modal" onclick="doDelete()">確定</button>
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">關(guān)閉</button>
                </div>

            </div>
        </div>
    </div>
</div>

<script>
    function transId(id){
        //jQuery -- $("#bookid") 從頁(yè)面上尋找id屬性為bookid的元素
        $("#bookid").val(id); //jQuery寫法

       // document.getElementById("bookid").value = id ; //javaScript寫法
    }
    function doDelete(){
        window.location = "delBook?id="+ $("#bookid").val(); //jQuery寫法

        // window.location = "delBook?id="+document.getElementById("bookid").value ; //javaScript寫法
    }
</script>
</body>
</html>

? ? ? ? ? ? ? ? 3. 創(chuàng)建index.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE html>
<html>
<head>
  <title>登錄</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <!-- 新 Bootstrap4 核心 CSS 文件 -->
  <link rel="stylesheet" >

  <!-- jQuery文件。務(wù)必在bootstrap.min.js 之前引入 -->
  <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>

  <!-- bootstrap.bundle.min.js 用于彈窗、提示、下拉菜單,包含了 popper.min.js -->
  <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>

  <!-- 最新的 Bootstrap4 核心 JavaScript 文件 -->
  <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
  <h2 class="text-center">登錄</h2>
  <div class="row">
    <div class="col-md-4 offset-md-4">


      <!-- 菜鳥教程https://www.runoob.com -- 學(xué)習(xí)Bootstrap4 -->
      <c:if test="${!empty errmsg}">
        <div class="alert alert-danger alert-dismissible">
          <button type="button" class="close" data-dismiss="alert">&times;</button>
          <strong>錯(cuò)誤!</strong> ${errmsg}
        </div>
      </c:if>


      <form action="loginservlet" method="post">
        <div class="form-group">
          <label for="username">賬號(hào):</label>
          <input type="text" class="form-control" id="username" name="username" placeholder="請(qǐng)輸入用戶名" value="${cookie.username.value}">
        </div>
        <div class="form-group">
          <label for="password">密碼:</label>
          <input type="password" class="form-control" id="password" name="password" placeholder="請(qǐng)輸入密碼" value="${cookie.password.value}">
        </div>
        <div class="form-check">
          <label class="form-check-label center-block">
            <input class="form-check-input" type="checkbox" name="remeber" ${(empty cookie.username)?"":"checked"} > 記住密碼
          </label>
        </div>
        <button type="submit" class="btn btn-primary mt-4 mx-auto">登錄</button>
        <a href="register.html" style="    display: inline-block;margin-right: 10px; width: 64px; height: 40px; float: right; margin-top: 36px;">免費(fèi)注冊(cè)</a>
      </form>
    </div>
  </div>
  <div class="text-center text-info">
    Tips:賬號(hào):admin 密碼:123
  </div>
</div>
</form>
</body>
</html>

? ? ? ? ? ? ? ? 4. 創(chuàng)建updateBook.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>



<html>
<head>
    <title>修改圖書</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- 新 Bootstrap4 核心 CSS 文件 -->
    <link rel="stylesheet" >

    <!-- jQuery文件。務(wù)必在bootstrap.min.js 之前引入 -->
    <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>

    <!-- bootstrap.bundle.min.js 用于彈窗、提示、下拉菜單,包含了 popper.min.js -->
    <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>

    <!-- 最新的 Bootstrap4 核心 JavaScript 文件 -->
    <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
    <h2 class="text-center my-4">修改圖書</h2>
    <div class="row">
        <p class="col-md-5 offset-md-7">歡迎您,${loginUser.username}</p>
        <div class="col-md-4 offset-md-4">
            <form action="uptBook" method="post">
                <input type="hidden" name="id" value="${book.id}">
                <table class="table table-bordered">
                    <tr>
                        <td>圖書名稱:</td>
                        <td><input type="text" class="form-control" name="bookname" placeholder="請(qǐng)輸入圖書名稱" id="bookname"
                                   value="${book.bookname}"></td>
                    </tr>
                    <tr>
                        <td>圖書價(jià)格:</td>
                        <td><input type="text" class="form-control" name="price" placeholder="請(qǐng)輸入圖書價(jià)格" id="price"
                                   value="${book.price}"></td>
                    </tr>
                    <tr>
                        <td>圖書作者:</td>
                        <td><input type="text" class="form-control" name="author" placeholder="請(qǐng)輸入圖書作者" id="author"
                                   value="${book.author}"></td>
                    </tr>

                    <tr>
                        <td colspan="2">
                            <button type="submit" class="btn btn-primary">提交</button>
                        </td>
                    </tr>
                </table>
            </form>
        </div>
    </div>
</div>
</body>
</html>

? ? ? ? ? ? ? ? 5. 創(chuàng)建register.html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注冊(cè)</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- 新 Bootstrap4 核心 CSS 文件 -->
    <link rel="stylesheet" >

    <!-- jQuery文件。務(wù)必在bootstrap.min.js 之前引入 -->
    <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>

    <!-- bootstrap.bundle.min.js 用于彈窗、提示、下拉菜單,包含了 popper.min.js -->
    <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>

    <!-- 最新的 Bootstrap4 核心 JavaScript 文件 -->
    <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
    <h2 class="text-center my-4">注冊(cè)賬號(hào)</h2>
    <div class="row">
        <div class="col-md-4 offset-md-4">
            <form action="registerservlet" method="post">
                <table class="table table-bordered">
                    <tr>
                        <td>賬號(hào):</td>
                        <td><input type="text" class="form-control" name="username" placeholder="請(qǐng)輸入賬號(hào)" id="username">
                        </td>
                    </tr>
                    <tr>
                        <td>密碼:</td>
                        <td><input type="password" class="form-control" name="password" placeholder="請(qǐng)輸入密碼"
                                   id="password"></td>
                    </tr>
                    <tr>
                        <td>性別:</td>
                        <td>
                            <label class="form-inline">
                                <label><input type="radio" class="form-control" name="sex" value="男">男</label><br>
                                <label><input type="radio" class="form-control" name="sex" value="女">女</label>
                            </label>
                        </td>
                    </tr>
                    <tr>
                        <td>愛好:</td>
                        <td>
                            <label class="form-inline">
                                <label class="form-check-label"><input type="checkbox" class="form-control" name="hobby"
                                                                       value="足球">足球</label>
                                <label class="form-check-label"><input type="checkbox" class="form-control" name="hobby"
                                                                       value="籃球">籃球</label>
                                <label class="form-check-label"><input type="checkbox" class="form-control" name="hobby"
                                                                       value="乒乓球">乒乓球</label>
                                <label class="form-check-label"><input type="checkbox" class="form-control" name="hobby"
                                                                       value="唱歌">唱歌</label>
                            </label>
                        </td>
                    </tr>
                    <tr>
                        <td>所在城市:</td>
                        <td>
                            <select name="city">
                                <option value="濟(jì)南">濟(jì)南</option>
                                <option value="青島">青島</option>
                                <option value="濟(jì)寧">濟(jì)寧</option>
                                <option value="臨沂">臨沂</option>
                                <option value="泰安">泰安</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td>個(gè)性簽名:</td>
                        <td>
                            <textarea name="signature"></textarea>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <button type="submit" class="btn btn-primary">提交</button>
                        </td>
                    </tr>
                </table>
            </form>
        </div>
    </div>
</div>
</body>
</html>

4.在src下創(chuàng)建4個(gè)文件夾

  1. 創(chuàng)建controller文件夾? --放servlet文件
  2. 創(chuàng)建dao文件夾? --放interface接口? ------在dao下創(chuàng)建文件夾impl? --放實(shí)現(xiàn)接口的方法
  3. 創(chuàng)建enity文件夾? --放對(duì)象類
  4. 創(chuàng)建util文件夾? --放定義的方法(例如:連接數(shù)據(jù)庫(kù)的方法)
  5. 直接創(chuàng)建一個(gè)Test的Java類? --用于在控制臺(tái)測(cè)試

? ? ? ? ? ? ? ? 1. 創(chuàng)建controller文件夾,并創(chuàng)建以下servlet

? ? ? ? 1.創(chuàng)建 addBookServlet

import com.individual.dao.BookDao;
import com.individual.dao.impl.BookDaoImpl;
import com.individual.enity.Book;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

@WebServlet(name = "AddBookServlet", value = "/addbookservlet")
public class AddBookServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //修改編碼
        request.setCharacterEncoding("UTF-8");

        //獲取表單數(shù)據(jù)
        Book book = new Book();
        Map<String, String[]> map = request.getParameterMap();

        try {
            BeanUtils.populate(book,map);

            //調(diào)用Dao中添加圖書的方法
            BookDao bookDao = new BookDaoImpl();
            int row = bookDao.addBook(book);
            if (row != 0){
                //跳轉(zhuǎn)到圖書列表頁(yè)
                response.sendRedirect("querybookservlet");
            }

        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

    }
}

? ? ? ? 2.創(chuàng)建 LoginServler

import com.individual.dao.UserDao;
import com.individual.dao.impl.UserDaoImpl;
import com.individual.enity.User;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "LoginServlet", value = "/loginservlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //修改編碼
        request.setCharacterEncoding("UTF-8");

        //接收表單傳遞的參數(shù)
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //登陸界面的記住密碼
        String remeber = request.getParameter("remeber");

        //構(gòu)建成一個(gè)User的對(duì)象
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

        //調(diào)用Dao的登陸方法,驗(yàn)證能否登錄
        UserDao userDao = new UserDaoImpl() ;
        User loginUser = userDao.login(user);


        if (loginUser == null){
            //登陸失敗
            request.setAttribute("errmsg","賬號(hào)或密碼錯(cuò)誤");
            request.getRequestDispatcher("index.jsp").forward(request,response);

        }else {
            //登陸成功
            if (remeber != null){
                //記住密碼 -- 寫Cookie
                        //賬號(hào)
                Cookie cookie_username = new Cookie("username", username);
                cookie_username.setMaxAge(60*5);
                response.addCookie(cookie_username);

                        //密碼
                Cookie cookie_password = new Cookie("password", password);
                cookie_password.setMaxAge(60*5);
                response.addCookie(cookie_password);

            }else {
                //刪除密碼 -- 刪Cookie
                Cookie[] cookies = request.getCookies();
                for (Cookie cookie : cookies) {
                    if (cookie.getName().equals("username") || cookie.getName().equals("password")){
                        cookie.setMaxAge(0);
                        response.addCookie(cookie);
                    }
                }
            }
            //創(chuàng)建session對(duì)象,保存用戶的信息
            HttpSession session = request.getSession();
            session.setAttribute("loginUser",loginUser); //存入數(shù)據(jù)

            response.sendRedirect("querybookservlet");
        }


    }
}

? ? ? ? 3.創(chuàng)建 QueryBookServlet

import com.individual.dao.BookDao;
import com.individual.dao.impl.BookDaoImpl;
import com.individual.enity.Book;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;

@WebServlet(name = "QueryBookServlet", value = "/querybookservlet")
public class QueryBookServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //查詢所有圖書信息
        BookDao bookDao = new BookDaoImpl();
        List<Book> allBooks = bookDao.getAllBooks();

        //轉(zhuǎn)發(fā)到bookList.jsp 顯示
        request.setAttribute("list",allBooks);
        request.getRequestDispatcher("bookList.jsp").forward(request,response);
    }
}

? ? ? ? 4.創(chuàng)建 RegisterServlet

import com.individual.dao.UserDao;
import com.individual.dao.impl.UserDaoImpl;
import com.individual.enity.User;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

@WebServlet(name = "RegisterServlet", value = "/registerservlet")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //修改編碼
        request.setCharacterEncoding("UTF-8");

        //獲取表單元素(方式1:)
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String sex = request.getParameter("sex");
                //多選框 -- 不同
        String[] hobbies = request.getParameterValues("hobby");
        String hobbyStr = "" ;
        for (String hobby : hobbies) {
            hobbyStr += hobby + " " ;
        }

        String city = request.getParameter("city");
        String signature = request.getParameter("signature");

        //封裝成User對(duì)象
        User user = new User(username, password, sex, hobbyStr, city, signature);


      /*

        //獲取表單元素(方式2:BeanUtil (jar包:commons-logging-1.2.jar   commons-dbutils-1.7.jar))
            //封裝成User對(duì)象
        User user = new User();
        Map<String, String[]> map = request.getParameterMap(); //多個(gè)單選處理封裝
            //多選框需要單獨(dú)處理
        String[] hobbies = request.getParameterValues("hobby");
        String hobbyStr = "" ;
        for (String hobby : hobbies) {
            hobbyStr += hobby + " " ;
        }

        try {
            BeanUtils.populate(user,map);
            user.setHobby(hobbyStr); //封裝進(jìn)多個(gè)愛好選項(xiàng)
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        */


        //調(diào)用Dao中的注冊(cè)方法
        UserDao userDao = new UserDaoImpl();
        int row = userDao.register(user);

        //跳轉(zhuǎn)到登陸界面
        if (row != 0 ){
            response.sendRedirect("index.jsp");
        }else {
            response.sendRedirect("register.html");
        }


    }
}

?????????5. 創(chuàng)建 GetBookInfoByIdServlet

import com.individual.dao.BookDao;
import com.individual.dao.impl.BookDaoImpl;
import com.individual.enity.Book;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "GetBookInfoByIdServlet", value = "/getBookInfoById")
public class GetBookInfoByIdServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       //修改編碼
        request.setCharacterEncoding("UTF-8");

        //獲取圖書的id
        int id = Integer.parseInt(request.getParameter("id"));

        //根據(jù)圖書的id,查詢圖書的信息
        BookDao bookDao = new BookDaoImpl();
        Book book = bookDao.getBookById(id);

        //跳轉(zhuǎn)到圖書修改頁(yè)面
        request.setAttribute("book",book);
        request.getRequestDispatcher("updateBook.jsp").forward(request,response);
    }
}

? ? ? ? 6. 創(chuàng)建?UpateBookServlet

import com.individual.dao.BookDao;
import com.individual.dao.impl.BookDaoImpl;
import com.individual.enity.Book;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

@WebServlet(name = "UpateBookServlet", value = "/uptBook")
public class UpateBookServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //修改編碼
        request.setCharacterEncoding("UTF-8");

        //獲取頁(yè)面上的圖書信息(圖書信息修改后的)
        Map<String, String[]> map = request.getParameterMap();
        Book book = new Book();

        try {
            BeanUtils.populate(book,map);

            //調(diào)用dao,執(zhí)行修改圖書功能
            BookDao bookDao = new BookDaoImpl();
            int row = bookDao.uptBook(book);

            //調(diào)轉(zhuǎn)回 圖書列表頁(yè)
            if (row != 0){
                response.sendRedirect("querybookservlet");
            }

        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

    }
}

? ? ? ? 7.創(chuàng)建?DeleteBookServlet


import com.individual.dao.BookDao;
import com.individual.dao.impl.BookDaoImpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "DeleteBookServlet", value = "/delBook")
public class DeleteBookServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //獲取圖書id
        int id = Integer.parseInt(request.getParameter("id"));
        //調(diào)用dao中的刪除圖書的方法
        BookDao bookDao = new BookDaoImpl();
        int row = bookDao.dalBook(id);

        //跳轉(zhuǎn)回 列表頁(yè)
        if (row != 0){
            response.sendRedirect("querybookservlet");
        }
    }
}

? ? ? ? ? ? ? ? 2.?創(chuàng)建dao文件夾并在dao下創(chuàng)建文件夾impl

? ? ? ? 1.在dao下創(chuàng)建interface文件 - BookDao

import com.individual.enity.Book;

import java.util.List;

public interface BookDao {
    //查詢所有圖書
    List<Book> getAllBooks();

    //添加圖書
    int addBook(Book book);

    //根據(jù)圖書id,查詢圖書信息
    Book getBookById(int id);

    //修改圖書
    int uptBook(Book book);

    //刪除圖書
    int dalBook(int id);
}

? ? ? ? 2.在dao下創(chuàng)建interface文件 - UserDao

import com.individual.enity.User;

/*
    UserDao :
     數(shù)據(jù)存取對(duì)象 - 增刪改查
*/
public interface UserDao {
    User login(User user) ;  //登陸方法

    int register(User user) ; //注冊(cè)方法

}

? ? ? ? 3.在impl下創(chuàng)建Java文件 - BookDaoImpl

import com.individual.dao.BookDao;
import com.individual.enity.Book;
import com.individual.util.DBUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;

public class BookDaoImpl implements BookDao {

    QueryRunner qr = new QueryRunner();

    @Override
    public List<Book> getAllBooks() {
        List<Book> list = null;
        String sql = "select * from t_book" ;
        try {
            list = qr.query(DBUtil.getConn(),sql,new BeanListHandler<>(Book.class));
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }

    @Override
    public int addBook(Book book) {
        int row = 0 ;
        String sql = "insert into t_book values(null,?,?,?)";
        try {
            row = qr.update(DBUtil.getConn(), sql, book.getBookname(), book.getPrice(), book.getAuthor());
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return row;
    }

    @Override
    public Book getBookById(int id) {
        Book book = null ;
        String sql = "select * from t_book where id = ?" ;
        try {
            book = qr.query(DBUtil.getConn(), sql, new BeanHandler<>(Book.class), id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return book;
    }

    @Override
    public int uptBook(Book book) {
        int row = 0 ;
        String sql = "update t_book set bookname = ? , price = ? , author = ? where id = ?";
        try {
            row = qr.update(DBUtil.getConn(), sql, book.getBookname(), book.getPrice(), book.getAuthor(), book.getId());
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return row ;
    }

    @Override
    public int dalBook(int id) {
        int row = 0;
        String sql = "delete from t_book where id = ?";
        try {
            row = qr.update(DBUtil.getConn(), sql, id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return row;
    }
}

? ? ? ? 4.在impl下創(chuàng)建Java文件 - UserDaoImpl

import com.individual.dao.UserDao;
import com.individual.enity.User;
import com.individual.util.DBUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import java.sql.SQLException;

public class UserDaoImpl implements UserDao {

    QueryRunner qr = new QueryRunner();

    //登錄
    @Override
    public User login(User user) {
        User loginUser = null ;


        String sql = "select * from t_user where username = ? and password = ?" ;
        try {
            loginUser = qr.query(DBUtil.getConn(), sql, new BeanHandler<>(User.class), user.getUsername(), user.getPassword());
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return loginUser;
    }


    //注冊(cè)
    @Override
    public int register(User user) {
        int row = 0 ;

        String sql = "insert into t_user values(null,?,?,?,?,?,?)" ;
        try {
            row = qr.update(DBUtil.getConn(), sql, user.getUsername(), user.getPassword(), user.getSex(), user.getHobby(),
                    user.getCity(), user.getSignature());
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return row;
    }
}

? ? ? ? ??

? ? ? ? ? ? ? ? 3. 創(chuàng)建enity文件夾

? ? ? ? 1.創(chuàng)建Java文件 - Book

/*
    使用Lombok實(shí)體類
 */


import lombok.Data;

@Data

public class Book {
   private int id ;
   private String bookname;
   private float price;
   private String author;

}

? ? ? ? 2.創(chuàng)建Java文件 - User

/*
    實(shí)體類(JavaBean)
*/
public class User {
    private int id ;
    private String username ;
    private String password ;
    private String sex ;
    private String hobby ;
    private String city ;
    private String signature ;

    public User() {
    }

    public User(String username, String password, String sex, String hobby, String city, String signature) {
        this.username = username;
        this.password = password;
        this.sex = sex;
        this.hobby = hobby;
        this.city = city;
        this.signature = signature;
    }

    public User(int id, String username, String password, String sex, String hobby, String city, String signature) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.sex = sex;
        this.hobby = hobby;
        this.city = city;
        this.signature = signature;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    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;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getSignature() {
        return signature;
    }

    public void setSignature(String signature) {
        this.signature = signature;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", sex='" + sex + '\'' +
                ", hobby='" + hobby + '\'' +
                ", city='" + city + '\'' +
                ", signature='" + signature + '\'' +
                '}';
    }
}

? ? ? ? ? ? ?

????????????????? 4. 創(chuàng)建util文件夾??

? ? ? ? 1. 創(chuàng)建Java文件 - DBUtil


import java.sql.*;

/*
    連接數(shù)據(jù)庫(kù)的工具類
 */
public class DBUtil {

    //1.獲取數(shù)據(jù)庫(kù)連接
    public static Connection getConn(){
        Connection conn = null;
        //2.1 加載驅(qū)動(dòng)
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.2 獲取連接
            String url = "jdbc:mysql://localhost:3306/jdbc?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
            String user = "root"; //數(shù)據(jù)庫(kù)的用戶名
            String password = "root"; //數(shù)據(jù)庫(kù)的密碼

            conn = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return conn;
    }
    //2.釋放資源
    public static void closeAll(Connection conn, Statement stmt, ResultSet rs){
        if (rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

????????????????? 5. 直接創(chuàng)建一個(gè)Test的Java類?

? ? ? ? 1. 創(chuàng)建Java文件 - Test

import com.individual.dao.BookDao;
import com.individual.dao.impl.BookDaoImpl;
import com.individual.dao.impl.UserDaoImpl;
import com.individual.enity.Book;
import com.individual.enity.User;

import java.util.List;
import java.util.Scanner;

public class Test {
    static Scanner sc = new Scanner(System.in) ;
    public static void main(String[] args) {

      //  testLogin(); //驗(yàn)證登錄

      //  testRegister(); //驗(yàn)證注冊(cè)

       //   testQueryBook(); //驗(yàn)證查詢所有圖書

        testAddBook(); //驗(yàn)證添加圖書

    }

    private static void testAddBook() {
        Book book = new Book();
        book.setBookname("java");
        book.setPrice(20);
        book.setAuthor("曹操");

        BookDao bookDao = new BookDaoImpl();
        int row = bookDao.addBook(book);
        if (row != 0){
            System.out.println("圖書添加成功");
        }
    }

    private static void testQueryBook() {
        BookDao bookDao = new BookDaoImpl();
        List<Book> books = bookDao.getAllBooks();
        for (Book book : books) {
            System.out.println(book);
        }
    }

    private static void testRegister() {
        System.out.println("請(qǐng)輸入賬號(hào):");
        String username = sc.next();
        System.out.println("請(qǐng)輸入密碼:");
        String password = sc.next();
        System.out.println("請(qǐng)輸入性別:");
        String sex = sc.next();
        System.out.println("請(qǐng)輸入愛好:");
        String hobby = sc.next();
        System.out.println("請(qǐng)輸入城市:");
        String city = sc.next();
        System.out.println("請(qǐng)輸入個(gè)性簽名:");
        String signature = sc.next();

        //構(gòu)建User對(duì)象
        User user = new User(username, password, sex, hobby, city, signature);

        //調(diào)用Dao的注冊(cè)方法
        UserDaoImpl userDao = new UserDaoImpl();
        int row = userDao.register(user) ;
        if (row != 0){
            System.out.println("注冊(cè)成功");
        }else {
            System.out.println("注冊(cè)失敗");
        }

    }

    private static void testLogin() {
            //驗(yàn)證登錄
            System.out.println("請(qǐng)輸入賬號(hào):");
            String username = sc.next();
            System.out.println("請(qǐng)輸入密碼:");
            String password = sc.next();

            User user = new User();
            user.setUsername("username");
            user.setPassword("password");

            UserDaoImpl userDao = new UserDaoImpl();
            User loginUser = userDao.login(user);

            if (loginUser == null){
                System.out.println("登錄失敗");
            }else {
                System.out.println("登陸成功");
            }
        }

}

----------------------------------------------------? 改進(jìn)版? --------------------------------------------------

新增技術(shù):使用? Filter過濾器? 、數(shù)據(jù)庫(kù)連接池

????????Filter過濾器(訪問路徑過濾器、修改編碼過濾器):

訪問路徑過濾器:

在src下新建一個(gè)包,名為: filter

在這個(gè)包下創(chuàng)建名為:?AuthorFilter 的Filter文件


import com.individual.enity.User;

import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebFilter(filterName = "AuthorFilter",urlPatterns = "/*")
public class AuthorFilter implements Filter {
    public void init(FilterConfig config) throws ServletException {
    }

    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {

        HttpServletRequest request1 = (HttpServletRequest) request;
        HttpServletResponse response1 = (HttpServletResponse) response;

        //可直接放行的資源路徑
        String uris[] = {
                "/ch07/",
                "/ch07/index.jsp",
                "/ch07/loginservlet",
                "/ch07/addBook.jsp",
        };

        //有一些資源可直接放行(登錄頁(yè)、驗(yàn)證頁(yè)、首頁(yè))
        String requestURI = request1.getRequestURI();
        if (checkURI(uris,requestURI)){
            chain.doFilter(request, response);
            return;
        }

        //判斷用戶是否登錄
        HttpSession session = request1.getSession();
        User loginUser = (User) session.getAttribute("loginUser");

        if (loginUser != null){
            //已登錄,放行
            chain.doFilter(request, response);
        }else {
            //未登錄,重定向到登錄頁(yè)
            response1.sendRedirect("index.jsp");

        }

    }

    //驗(yàn)證哪些資源可直接放行
    public boolean checkURI(String uris[],String requestUri){
        boolean flag = false;
        for (String s : uris) {
            if (requestUri.equals(s)){
                flag = true;
            }
        }
        return flag;
    }

}

修改編碼過濾器:

在filter包下創(chuàng)建名為: EncodingFilter 的Filter文件

import javax.servlet.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebFilter(filterName = "EncodingFilter",urlPatterns = "/*")
public class EncodingFilter implements Filter {
    public void init(FilterConfig config) throws ServletException {
    }

    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        //修改編碼
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        chain.doFilter(request, response);
    }
}

(此時(shí)就可以將controller包下servlet文件中的修改編碼代碼刪除)?

? ? ? ? ? ? ?

???????????????? 數(shù)據(jù)庫(kù)連接池

在src下新建下圖所示配置文件

JavaWeb階段案例--簡(jiǎn)易版管理圖書系統(tǒng)(增刪改查)

?在lib文件夾下新添druid-1.1.12.jar

在util包下新建Java文件 :?DruidUtils

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DruidUtils {
    //Druid德魯伊,據(jù)說是魔獸世界中的一個(gè)角色,森林女神
    public static DruidDataSource dataSource;//數(shù)據(jù)庫(kù)連接池

    //1.初始化Druid連接池
    static {
        //第二種方式:使用軟編碼通過配置文件初始化
        try {
            Properties properties = new Properties();
            //通過類加載器加載配置文件
            InputStream inputStream = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            properties.load(inputStream);
            //創(chuàng)建連接池
            dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //2.獲取連接
    public static Connection getConnection() {
        try {
            return dataSource.getConnection();//從連接池中獲取連接
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static DataSource getDataSource(){
        return dataSource;
    }

    //3.釋放資源
    public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {
        //釋放resultSet
        try {
            if (resultSet != null) {
                resultSet.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //釋放Statement
        try {
            if (statement != null) {
                statement.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //釋放Connection
        try {
            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

將dao包下的impl包中的BookDaoImpl文件改成:

import com.individual.dao.BookDao;
import com.individual.enity.Book;
import com.individual.util.DruidUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;

public class BookDaoImpl implements BookDao {

    QueryRunner qr = new QueryRunner(DruidUtils.getDataSource());

    @Override
    public List<Book> getAllBooks() {
        List<Book> list = null;
        String sql = "select * from t_book" ;
        try {
            list = qr.query(sql,new BeanListHandler<>(Book.class));
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }

    @Override
    public int addBook(Book book) {
        int row = 0 ;
        String sql = "insert into t_book values(null,?,?,?)";
        try {
            row = qr.update(sql, book.getBookname(), book.getPrice(), book.getAuthor());
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return row;
    }

    @Override
    public Book getBookById(int id) {
        Book book = null ;
        String sql = "select * from t_book where id = ?" ;
        try {
            book = qr.query(sql, new BeanHandler<>(Book.class), id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return book;
    }

    @Override
    public int uptBook(Book book) {
        int row = 0 ;
        String sql = "update t_book set bookname = ? , price = ? , author = ? where id = ?";
        try {
            row = qr.update(sql, book.getBookname(), book.getPrice(), book.getAuthor(), book.getId());
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return row ;
    }

    @Override
    public int dalBook(int id) {
        int row = 0;
        String sql = "delete from t_book where id = ?";
        try {
            row = qr.update(sql, id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return row;
    }
}

將dao包下的impl包中的UserDaoImpl文件改成:

import com.individual.dao.UserDao;
import com.individual.enity.User;
import com.individual.util.DruidUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import java.sql.SQLException;

public class UserDaoImpl implements UserDao {

    QueryRunner qr = new QueryRunner(DruidUtils.getDataSource());

    //登錄
    @Override
    public User login(User user) {
        User loginUser = null ;


        String sql = "select * from t_user where username = ? and password = ?" ;
        try {
            loginUser = qr.query(sql, new BeanHandler<>(User.class), user.getUsername(), user.getPassword());
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return loginUser;
    }


    //注冊(cè)
    @Override
    public int register(User user) {
        int row = 0 ;

        String sql = "insert into t_user values(null,?,?,?,?,?,?)" ;
        try {
            row = qr.update(sql, user.getUsername(), user.getPassword(), user.getSex(), user.getHobby(),
                    user.getCity(), user.getSignature());
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return row;
    }
}

(此時(shí),即可將util包中DBUtil文件刪除)文章來源地址http://www.zghlxwxcb.cn/news/detail-474165.html

到了這里,關(guān)于JavaWeb階段案例--簡(jiǎn)易版管理圖書系統(tǒng)(增刪改查)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于javaweb的圖書管理系統(tǒng)

    基于javaweb的圖書管理系統(tǒng)

    本項(xiàng)目采用eclipse工具開發(fā),jsp+servlet技術(shù)編寫,樣式采用了layui前端框架,數(shù)據(jù)庫(kù)采用的是mysql,navicat開發(fā)工具。 系統(tǒng)一共分為2個(gè)角色分別是: 管理員,學(xué)生 1、登錄 2、修改個(gè)人信息 3、圖書類型管理 4、圖書管理 5、圖書借閱管理 6、借閱審批管理 7、圖書借閱統(tǒng)計(jì) 8、學(xué)生

    2024年02月04日
    瀏覽(25)
  • 基于JavaWeb的圖書館管理系統(tǒng)

    ?? 作者主頁(yè):

    2024年02月05日
    瀏覽(41)
  • JavaWeb期末項(xiàng)目 圖書館管理系統(tǒng)

    JavaWeb期末項(xiàng)目 圖書館管理系統(tǒng)

    1 項(xiàng)目基本信息 1.1 項(xiàng)目名稱 圖書館管理系統(tǒng) 1.2 開發(fā)運(yùn)行環(huán)境 Window 10 64位 JDK 1.8.0 Eclipse 4.8版本 MySql 5.5 Tomcat 9.0 2 項(xiàng)目需求分析 2.1 學(xué)生登錄部分 (1)學(xué)生注冊(cè):在進(jìn)入圖書館前必須要登錄,如果沒有學(xué)號(hào)則要注冊(cè),注冊(cè)時(shí)系統(tǒng)會(huì)將用戶填寫的學(xué)號(hào)與數(shù)據(jù)庫(kù)里面的數(shù)據(jù)對(duì)比,

    2024年02月10日
    瀏覽(31)
  • 用python實(shí)現(xiàn)簡(jiǎn)易圖書管理系統(tǒng)

    用python實(shí)現(xiàn)簡(jiǎn)易圖書管理系統(tǒng)

    很多圖書館都有自己的圖書管理系統(tǒng),它主要擔(dān)負(fù)的功能有 借書和還書 ,以及圖書管理員對(duì)圖書的操作等。 用戶登錄/注冊(cè)—借書/還書/查看圖書----(管理員)添加、修改圖書信息 txt文件 首先,在任意位置創(chuàng)建一個(gè)文件夾,創(chuàng)建以下幾個(gè)txt文件: bookISDN,ISDN.txt :存儲(chǔ)書籍的

    2024年02月08日
    瀏覽(25)
  • 【JAVA】用Java實(shí)現(xiàn)簡(jiǎn)易圖書管理系統(tǒng)

    【JAVA】用Java實(shí)現(xiàn)簡(jiǎn)易圖書管理系統(tǒng)

    圖書館作為每個(gè)大學(xué)或者城市必不可少的部分,其存放的海量書籍與文獻(xiàn)使得其管理顯得尤為困難,此時(shí)圖書管理系統(tǒng)就起 到了一個(gè)重大的作用。 一種是面向管理員開啟的菜單和功能,一種是面向所有普通用戶來提供的菜單和功能。這些功能包括對(duì)于圖書的借閱,歸 還,增

    2024年02月03日
    瀏覽(16)
  • JavaWeb圖書管理系統(tǒng)課設(shè):全面掌握CRUD操作

    詳細(xì)介紹JavaWeb圖書管理系統(tǒng)的開發(fā)過程,包括后端Servlet服務(wù)、前端Ajax交互以及MyBatis的增刪改查實(shí)現(xiàn),適合初學(xué)者鞏固JavaWeb知識(shí)。

    2024年02月08日
    瀏覽(32)
  • 如何用Java實(shí)現(xiàn)一個(gè)簡(jiǎn)易的圖書管理系統(tǒng)

    目錄 確立對(duì)象 確立這些對(duì)象的基本信息和功能 書 書架 管理員和普通用戶 各對(duì)象之間進(jìn)行交互 既然是Java實(shí)現(xiàn),那么就應(yīng)該從面向?qū)ο蟮乃枷肴胧?。首先需要確立有哪些對(duì)象,這些對(duì)象的功能又是什么,然后通過這些對(duì)象的交互實(shí)現(xiàn)這樣一個(gè)建議的圖書管理系統(tǒng)。 要實(shí)現(xiàn)圖

    2024年02月04日
    瀏覽(31)
  • 用Java實(shí)現(xiàn)簡(jiǎn)易的圖書管理系統(tǒng)(超詳細(xì))

    用Java實(shí)現(xiàn)簡(jiǎn)易的圖書管理系統(tǒng)(超詳細(xì))

    目錄 1.設(shè)計(jì)背景 2.設(shè)計(jì)思路 3.模塊展示及代碼演示 3.1 Book類的實(shí)現(xiàn) 3.2 BookList類的實(shí)現(xiàn)(書架) 3.3 異常類的實(shí)現(xiàn)(OperationException) 3.4 用戶類的實(shí)現(xiàn) 3.5 操作接口的實(shí)現(xiàn)(定義規(guī)范) 3.6 操作類的具體實(shí)現(xiàn) 3.6.1 增加操作 3.6.2 查找操作 3.6.3 刪除操作 3.6.4 顯示操作 3.6.5 借書操作 3.6.6 還書

    2024年02月03日
    瀏覽(27)
  • 基于java和sqlserver建立的簡(jiǎn)易圖書管理系統(tǒng)

    基于java和sqlserver建立的簡(jiǎn)易圖書管理系統(tǒng)

    游覽所有圖書、查找書籍、建立新圖書,借出和歸還圖書,刪除某一圖書 選擇需要的操作 釋放連接 Idea,JDK13,驅(qū)動(dòng)包Microsoft JDBC Driver 8.2.2 for SQL Server 數(shù)據(jù)庫(kù):sqlserver2019 Database:library Table:Book Book:書籍編號(hào),書籍名稱,書籍作者,庫(kù)存量 管理員名:sa 密碼:123456 官網(wǎng)下

    2024年02月08日
    瀏覽(25)
  • 【javaweb課設(shè)源碼】圖書管理系統(tǒng)SSM Mysql 期末課設(shè)

    【javaweb課設(shè)源碼】圖書管理系統(tǒng)SSM Mysql 期末課設(shè)

    本系統(tǒng)使用Javaweb技術(shù)制作,數(shù)據(jù)庫(kù)為mysql 附帶論文報(bào)告文檔

    2024年02月09日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包