IDEA+Java+JSP+Mysql+Tomcat实现Web图书管理系统(1)

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

登录失败

现存图书列表


登录失败

返回登录

info.jsp

<%–

Created by IntelliJ IDEA.

User: shuijianshiqing

Date: 2020/5/26

Time: 22:56

To change this template use File | Settings | File Templates.

–%>

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

<%@ page import=“com.sjsq.po.User”%>

<%@ page import=“com.sjsq.dao.UserDao”%>

<%@ page import=“com.sjsq.dao.impl.UserDaoImpl”%>

<%@ page import=“com.sjsq.service.UserService” %>

<%@ page import=“com.sjsq.service.impl.UserServiceImpl” %>

<%@ page import=“java.util.List” %>

<%

// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错

String path = request.getContextPath();

String basePath = request.getScheme() + “😕/” + request.getServerName() + “:”

  • request.getServerPort() + path + “/”;

%>

用户登录

现存图书列表


---装饰中---

<%

// 设置接收的编码为UTF-8

request.setCharacterEncoding(“utf-8”);

User user = new User();

UserDao dao = new UserDaoImpl();

String name = request.getParameter(“name”);

String password=request.getParameter(“password”);

user.setName(name);

user.setPassword(password);

User us=dao.login(user);

// 把数据库里面的User获取出来

UserService service = new UserServiceImpl();

List list = service.selectUser(user);

for(int i=0;i<list.size();i++){

user = list.get(i);

}

System.out.println(“显示用户信息:”);

System.out.println(user);

session.setAttribute(“user”,user);

if(us != null){

response.sendRedirect(“book.jsp”);

}else{

response.sendRedirect(“fail.jsp”);

}

%>

login.jsp

<%–

Created by IntelliJ IDEA.

User: shuijianshiqing

Date: 2020/5/19

Time: 22:44

To change this template use File | Settings | File Templates.

–%>

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

<%

// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错

String path = request.getContextPath();

String basePath = request.getScheme() + “😕/” + request.getServerName() + “:”

  • request.getServerPort() + path + “/”;

%>

用户登录

用户登录

---正在美化中---

账号: 密码: 找回密码

注册

logout.jsp

<%–

Created by IntelliJ IDEA.

User: shuijianshiqing

Date: 2020/5/25

Time: 21:51

To change this template use File | Settings | File Templates.

–%>

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

退出登录

<%

session.invalidate();

response.sendRedirect(“login.jsp”);

%>

register.jsp

<%–

Created by IntelliJ IDEA.

User: shuijianshiqing

Date: 2020/5/21

Time: 23:14

To change this template use File | Settings | File Templates.

–%>

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

用户注册

用户注册

---装饰中---

注册

重置

登录

search.jsp

<%–

Created by IntelliJ IDEA.

User: shuijianshiqing

Date: 2020/5/22

Time: 23:28

To change this template use File | Settings | File Templates.

–%>

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

<%

// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错

String path = request.getContextPath();

String basePath = request.getScheme() + “😕/” + request.getServerName() + “:”

  • request.getServerPort() + path + “/”;

%>

弹出信息

您的密码是:${user.password}

返回上一级

searchPassword.jsp

<%–

Created by IntelliJ IDEA.

User: shuijianshiqing

Date: 2020/5/22

Time: 23:14

To change this template use File | Settings | File Templates.

–%>

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

<%

// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错

String path = request.getContextPath();

String basePath = request.getScheme() + “😕/” + request.getServerName() + “:”

  • request.getServerPort() + path + “/”;

%>

找回密码

找回密码

返回上一级

请输入账号:

2.后端


Book

package com.sjsq.po;

import java.io.Serializable;

/**

  • @author shuijianshiqing

  • @date 2020/5/19 22:40

*/

public class Book implements Serializable {

private static final long serialVersionUID = 1L;

private Integer bookid;

private String bookname;

private Double price;

private String author;

private String picture;

private String publish;

public static long getSerialVersionUID() {

return serialVersionUID;

}

public Integer getBookid() {

return bookid;

}

public void setBookid(Integer bookid) {

this.bookid = bookid;

}

public String getBookname() {

return bookname;

}

public void setBookname(String bookname) {

this.bookname = bookname;

}

public Double getPrice() {

return price;

}

public void setPrice(Double price) {

this.price = price;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

this.author = author;

}

public String getPicture() {

return picture;

}

public void setPicture(String picture) {

this.picture = picture;

}

public String getPublish() {

return publish;

}

public void setPublish(String publish) {

this.publish = publish;

}

@Override

public String toString() {

return “Book{” +

“bookid=” + bookid +

“, bookname='” + bookname + ‘’’ +

“, price=” + price +

“, author='” + author + ‘’’ +

“, picture='” + picture + ‘’’ +

“, publish='” + publish + ‘’’ +

‘}’;

}

}

Card

package com.sjsq.po;

/**

  • @author shuijianshiqing

  • @date 2020/5/29 19:34

*/

public class Card {

// 主键

private Integer id;

// 用户Id

private Integer userid;

// 用户名

private String username;

// 书名

private Integer bookid;

// 书本的数量

private int booknum;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public Integer getUserid() {

return userid;

}

public void setUserid(Integer userid) {

this.userid = userid;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public Integer getBookid() {

return bookid;

}

public void setBookid(Integer bookid) {

this.bookid = bookid;

}

public int getBooknum() {

return booknum;

}

public void setBooknum(int booknum) {

this.booknum = booknum;

}

@Override

public String toString() {

return “Card{” +

“id=” + id +

“, userid=” + userid +

“, username='” + username + ‘’’ +

“, bookid=” + bookid +

“, booknum=” + booknum +

‘}’;

}

}

User

package com.sjsq.po;

import java.io.Serializable;

/**

  • @author shuijianshiqing

  • @date 2020/5/19 22:19

  • 用户的实体类

*/

public class User implements Serializable {

// 增加序列号,作用是反序列化的时候不会报错,切能进行IO的持久化

public static final long serialVersionUID = 1L;

private Integer id;

private String name;

private String password;

private String email;

private String phone;

public static long getSerialVersionUID() {

return serialVersionUID;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getPhone() {

return phone;

}

public void setPhone(String phone) {

this.phone = phone;

}

@Override

public String toString() {

return “User{” +

“id=” + id +

“, name='” + name + ‘’’ +

“, password='” + password + ‘’’ +

“, email='” + email + ‘’’ +

“, phone='” + phone + ‘’’ +

‘}’;

}

}

BookDao

package com.sjsq.dao;

import com.sjsq.po.Book;

import java.util.List;

/**

  • @author shuijianshiqing

  • @date 2020/5/20 23:13

  • 图书信息接口

*/

public interface BookDao {

/**

  • 查询图书信息

  • @param sql

  • @param arr

  • @return

*/

public List select(String sql,Object[] arr);

/**

  • 根据图书编号进行查询

  • @param id

  • @return

*/

public Book getBook(Integer id);

}

CardDao

package com.sjsq.dao;

import com.sjsq.po.Book;

import com.sjsq.po.Card;

import com.sjsq.po.User;

import java.util.List;

/**

  • @author shuijianshiqing

  • @date 2020/5/29 19:42

*/

public interface CardDao {

/**

  • 通过用户Id获取用户的购物车

  • @param id

  • @return

*/

public List getCard(Integer id);

/**

  • 添加用户信息和图书信息到用户的购物车

  • @param user

  • @param book

  • @param booknum

  • @return

*/

public boolean addCard(User user, Book book,Integer booknum);

/**

  • 使用Book来获取booknum

  • @param book

  • @return

*/

public Integer getBookNum(Book book);

}

UserDao

package com.sjsq.dao;

import com.sjsq.po.User;

import java.util.List;

/**

  • @author shuijianshiqing

  • @date 2020/5/20 22:10

  • 创建一个接口用于声明用户登录注册的方法

*/

public interface UserDao {

/**

  • 用户登录

  • @param user

  • @return

*/

public User login(User user);

/**

  • 用户注册

  • @param user

  • @return

*/

public boolean register(User user);

/**

  • 查询用户信息

  • @param sql

  • @param arr

  • @return

*/

public List selectUser(String sql,Object arr[]);

}

BookService

package com.sjsq.service;

import com.sjsq.po.Book;

import java.util.List;

/**

  • @author shuijianshiqing

  • @date 2020/5/20 23:37

  • Book的Service层

*/

public interface BookService {

/**

  • 查询图书信息

  • @param book

  • @return

*/

public List select(Book book);

/**

  • 根据编号来查询

  • @param book

  • @return

*/

public Book getBook(Book book);

}

CardService

package com.sjsq.service;

import com.sjsq.po.Book;

import com.sjsq.po.Card;

import com.sjsq.po.User;

import java.util.List;

/**

  • @author shuijianshiqing

  • @date 2020/5/29 23:00

*/

public interface CardService {

/**

  • 获取用户的购物车

  • @param id

  • @return

*/

public List getCard(Integer id);

/**

  • 添加用户信息和图书信息到用户的购物车

  • @param user

  • @param book

  • @param booknum

  • @return

*/

public boolean addCard(User user, Book book, Integer booknum);

/**

  • 根据Book获取booknum

  • @param book

  • @return

*/

public Integer getBookNum(Book book);

}

UserService

package com.sjsq.service;

import com.sjsq.po.User;

import java.util.List;

/**

  • @author shuijianshiqing

  • @date 2020/5/20 22:54

  • Service层

*/

public interface UserService {

/**

  • 用户查询的信息

  • @param user

  • @return

*/

public List selectUser(User user);

}

BookServiceImpl

package com.sjsq.service.impl;

import com.sjsq.dao.BookDao;

import com.sjsq.dao.impl.BookDaoImpl;

import com.sjsq.po.Book;

import com.sjsq.service.BookService;

import java.util.ArrayList;

import java.util.List;

/**

  • @author shuijianshiqing

  • @date 2020/5/20 23:42

  • Book的Service实现层

*/

public class BookServiceImpl implements BookService {

private BookDao dao = new BookDaoImpl();

/**

  • 查询所有图书信息

  • @param book

  • @return

*/

@Override

public List select(Book book) {

StringBuffer sql = new StringBuffer("select * from book where 1 = 1 ");

List list = new ArrayList();

if(book != null){

// 根据bookid来查找对应的书籍

if(book.getBookid() != null && book.getBookid() != 0){

sql.append(" and bookid = ?");

list.add(book.getBookid());

}

}

return dao.select(sql.toString(),list.toArray());

}

/**

  • 根据图书编号查询信息

  • @param book

  • @return

*/

@Override

public Book getBook(Book book) {

if(book.getBookid() != null && book.getBookid() != 0){

return dao.getBook(book.getBookid());

}

return null;

}

}

CardServiceImpl

package com.sjsq.service.impl;

import com.sjsq.dao.CardDao;

import com.sjsq.dao.impl.CardDaoImpl;

import com.sjsq.po.Book;

import com.sjsq.po.Card;

import com.sjsq.po.User;

import com.sjsq.service.CardService;

import java.util.List;

/**

  • @author shuijianshiqing

  • @date 2020/5/29 23:01

*/

public class CardServiceImpl implements CardService {

private CardDao dao = new CardDaoImpl();

@Override

public List getCard(Integer id) {

if(id != null){

return dao.getCard(id);

}

return null;

}

/**

  • 添加信息到购物车

  • @param user

  • @param book

  • @param booknum

  • @return

*/

@Override

public boolean addCard(User user, Book book, Integer booknum) {

return dao.addCard(user,book,booknum);

}

/**

  • 根据Book查询booknum

  • @param book

  • @return

*/

@Override

public Integer getBookNum(Book book) {

if(dao.getBookNum(book) == null){

return 0;

}

return dao.getBookNum(book);

}

}

UserServiceImpl

package com.sjsq.service.impl;

import com.sjsq.dao.UserDao;

import com.sjsq.dao.impl.UserDaoImpl;

import com.sjsq.po.User;

import com.sjsq.service.UserService;

import java.util.ArrayList;

import java.util.List;

/**

  • @author shuijianshiqing

  • @date 2020/5/20 22:56

*/

public class UserServiceImpl implements UserService {

// 定义dao对象

private UserDao dao = new UserDaoImpl();

/**

  • 查询用户信息

  • @param user

  • @return

*/

@Override

public List selectUser(User user) {

StringBuffer sql = new StringBuffer("select * from user where 1 = 1 ");

List list = new ArrayList();

if(user != null){

// 按照姓名查询

if(user.getName() != null && !user.getName().equals(“”)){

sql.append(" and name = ?");

list.add(user.getName());

}

// 按照email查询

if(user.getEmail() != null && !user.getEmail().equals(“”)){

sql.append(" and email = ?");

list.add(user.getEmail());

}

}

// 交给dao层处理逻辑

return dao.selectUser(sql.toString(),list.toArray());

}

}

BaseDao

package com.sjsq.utils;

import java.sql.*;

/**

  • @author shuijianshiqing

  • @date 2020/5/19 23:08

  • 数据交互层dao层

*/

public class BaseDao {

private static String driver = “com.mysql.cj.jdbc.Driver”;

private static String url = “jdbc:mysql://localhost/book_management?serverTimezone=UTC”;

private static String user = “root”;

private static String password = “admin”;

/**

  • 连接数据库的方法

  • @return

  • @throws ClassNotFoundException

  • @throws SQLException

*/

public static Connection getConnection() throws ClassNotFoundException, SQLException {

// 加载数据库驱动

Class.forName(driver);

Connection con = DriverManager.getConnection(url,user,password);

return con;

}

/**

  • 关闭数据库的方法

  • @param con

  • @param ps

  • @param rs

*/

public static void close(Connection con, PreparedStatement ps, ResultSet rs){

// 关闭资源,避免出现异常

if(rs != null){

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(ps != null){

try {

ps.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(con != null){

try {

con.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

/**

  • 设置增删改的方法

  • @param sql

  • @param arr

  • @return

*/

public static boolean addUpdateDelete(String sql,Object[] arr){

Connection con = null;

PreparedStatement ps = null;

try {

// 第一步:连接数据库

con = BaseDao.getConnection();

// 第二步:预编译

ps = con.prepareStatement(sql);

// 第三步:设置值

if(arr != null && arr.length !=0){

for (int i = 0; i < arr.length; i++) {

ps.setObject(i+1,arr[i]);

}

}

int count = ps.executeUpdate();

if(count > 0){

return true;

}else{

return false;

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

return false;

}

public static void main(String[] args){

try {

BaseDao.getConnection();

System.out.println(“—测试数据库链接成功—”);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

3.所用到的包


jquery-3.4.1.min.js

mysql-connector-java-8.0.15.jar

四、数据库

====================================================================

SQL


/*

Navicat Premium Data Transfer

Source Server : MySQL

Source Server Type : MySQL

Source Server Version : 80013

Source Host : localhost:3306

Source Schema : book_management

Target Server Type : MySQL

Target Server Version : 80013

File Encoding : 65001

Date: 01/06/2020 21:45:17

*/

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;


– Table structure for book


DROP TABLE IF EXISTS book;

CREATE TABLE book (

bookid int(11) NOT NULL AUTO_INCREMENT,

bookname varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,

price decimal(10, 2) NULL DEFAULT NULL,

author varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,

picture varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,

publish varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,

PRIMARY KEY (bookid) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;


– Records of book


INSERT INTO book VALUES (1, ‘水浒传’, 23.00, ‘施耐庵’, NULL, ‘人民文学出版社’);

INSERT INTO book VALUES (2, ‘西游记’, 25.00, ‘吴承恩’, NULL, ‘人民文学出版社’);

INSERT INTO book VALUES (3, ‘红楼梦’, 35.00, ‘曹雪芹’, NULL, ‘人民文学出版社’);

INSERT INTO book VALUES (4, ‘三国演义’, 28.00, ‘罗贯中’, NULL, ‘人民文学出版社’);


– Table structure for card


DROP TABLE IF EXISTS card;

CREATE TABLE card (

id int(11) NOT NULL AUTO_INCREMENT,

userid varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,

username varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,

bookid varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,

booknum int(11) NULL DEFAULT NULL,

PRIMARY KEY (id) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;


– Records of card


INSERT INTO card VALUES (11, ‘1’, ‘2001’, ‘1’, 2);

INSERT INTO card VALUES (12, ‘1’, ‘2001’, ‘3’, 1);


– Table structure for user


DROP TABLE IF EXISTS user;

CREATE TABLE user (

id int(11) NOT NULL AUTO_INCREMENT,

name varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,

password varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,

email varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,

phone varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,

PRIMARY KEY (id) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 54 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;


– Records of user


INSERT INTO user VALUES (1, ‘2001’, ‘111111’, ‘312321@qq.com’, ‘31321’);

INSERT INTO user VALUES (53, ‘张三’, ‘1’, ‘’, ‘’);

SET FOREIGN_KEY_CHECKS = 1;

五、感悟及商务合作

========================================================================

1.感悟


手写日志太麻烦,所以后来出现了Log4j,Jsp中Java代码和Html混在一起,太不方便了,所以后来有了Servlet和各种框架,所以这也就是框架的意义。简单的事情重复做,做到一定的熟练度,把它抽象出来,形成公用的方法,就有了框架。还要数据连接,JDBC里面有很多重复性代码,后续就有了Mybatis等等。

2.项目参考及搭建


备注1:关于如何搭建项目之前文章里面已经写过,请移步:

IDEA创建Web项目详细说明

备注2:若您想添加管理员增删改查功能,请移步:

图书管理系统-添加管理员增删改查功能

备注3:感谢别先生的博客,是参照他的博客实现的。

别先生的博客地址

备注4:要是侵犯到您的权益,请通知我删除此文章。

六、其他

===================================================================

1.其他系统实现


Java+JSP系统系列实现

Java+JSP实现学生图书管理系统

Java+JSP实现学生信息管理系统

Java+JSP实现用户信息管理系统

Java+Servlet+JSP系统系列实现

Java+Servlet+JSP实现航空订票系统

Java+Servlet+JSP实现新闻发布系统

Java+Servlet+JSP实现图书管理系统

Java+Servlet+JSP实现停车场管理系统

Java+Servlet+JSP实现房屋租赁管理系统

Java+Servlet+JSP实现学生选课管理系统

Java+Servlet+JSP实现宠物诊所管理系统

Java+Servlet+JSP实现学生宿舍管理系统

Java+Servlet+JSP实现学生信息管理系统

Java+Servlet+JSP实现学生成绩管理系统1

Java+Servlet+JSP实现学生成绩管理系统2

Java+SSM系统系列实现

Java+SSM+JSP实现宠物商城系统

Java+SSM+Easyui实现网上考试系统

Java+SSM+Layui实现学生成绩管理系统

Java+SSM+Bootstrap实现学生信息管理系统

Java+SSH系统系列实现

Java+SSH+Bootstrap实现在线考试系统

Java+SSH+JSP实现医院在线挂号系统

Java+Springboot系统系列实现

Java+Springboot+H-ui实现营销管理系统

Java+Springboot+Bootstrap实现网上商城系统

JavaSwing+Mysql系统系列实现

Java+Swing实现斗地主游戏

Java+Swing实现图书管理系统

Java+Swing实现医院管理系统

Java+Swing实现考试管理系统

Java+Swing实现酒店管理系统

Java+Swing实现超市管理系统

Java+Swing实现网上订餐系统

Java+Swing实现电影购票系统

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
‘’, ‘’);

SET FOREIGN_KEY_CHECKS = 1;

五、感悟及商务合作

========================================================================

1.感悟


手写日志太麻烦,所以后来出现了Log4j,Jsp中Java代码和Html混在一起,太不方便了,所以后来有了Servlet和各种框架,所以这也就是框架的意义。简单的事情重复做,做到一定的熟练度,把它抽象出来,形成公用的方法,就有了框架。还要数据连接,JDBC里面有很多重复性代码,后续就有了Mybatis等等。

2.项目参考及搭建


备注1:关于如何搭建项目之前文章里面已经写过,请移步:

IDEA创建Web项目详细说明

备注2:若您想添加管理员增删改查功能,请移步:

图书管理系统-添加管理员增删改查功能

备注3:感谢别先生的博客,是参照他的博客实现的。

别先生的博客地址

备注4:要是侵犯到您的权益,请通知我删除此文章。

六、其他

===================================================================

1.其他系统实现


Java+JSP系统系列实现

Java+JSP实现学生图书管理系统

Java+JSP实现学生信息管理系统

Java+JSP实现用户信息管理系统

Java+Servlet+JSP系统系列实现

Java+Servlet+JSP实现航空订票系统

Java+Servlet+JSP实现新闻发布系统

Java+Servlet+JSP实现图书管理系统

Java+Servlet+JSP实现停车场管理系统

Java+Servlet+JSP实现房屋租赁管理系统

Java+Servlet+JSP实现学生选课管理系统

Java+Servlet+JSP实现宠物诊所管理系统

Java+Servlet+JSP实现学生宿舍管理系统

Java+Servlet+JSP实现学生信息管理系统

Java+Servlet+JSP实现学生成绩管理系统1

Java+Servlet+JSP实现学生成绩管理系统2

Java+SSM系统系列实现

Java+SSM+JSP实现宠物商城系统

Java+SSM+Easyui实现网上考试系统

Java+SSM+Layui实现学生成绩管理系统

Java+SSM+Bootstrap实现学生信息管理系统

Java+SSH系统系列实现

Java+SSH+Bootstrap实现在线考试系统

Java+SSH+JSP实现医院在线挂号系统

Java+Springboot系统系列实现

Java+Springboot+H-ui实现营销管理系统

Java+Springboot+Bootstrap实现网上商城系统

JavaSwing+Mysql系统系列实现

Java+Swing实现斗地主游戏

Java+Swing实现图书管理系统

Java+Swing实现医院管理系统

Java+Swing实现考试管理系统

Java+Swing实现酒店管理系统

Java+Swing实现超市管理系统

Java+Swing实现网上订餐系统

Java+Swing实现电影购票系统

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-HFFQcNXb-1715457392880)]

[外链图片转存中…(img-T8PoVK0h-1715457392881)]

[外链图片转存中…(img-JohiVp4n-1715457392881)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 13
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值