6.管理员对用户的增删改查
7.管理员对用户类型的增删改查
8.管理员查看借阅记录
4.数据库文件
/*
Navicat Premium Data Transfer
Source Server : MYSQL
Source Server Type : MySQL
Source Server Version : 80013
Source Host : localhost:3306
Source Schema : ssm_library_management
Target Server Type : MySQL
Target Server Version : 80013
File Encoding : 65001
Date: 12/12/2021 16:30:13
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
– Table structure for admin
DROP TABLE IF EXISTS admin
;
CREATE TABLE admin
(
id
bigint(4) NOT NULL AUTO_INCREMENT,
username
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
password
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (id
) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
– Records of admin
INSERT INTO admin
VALUES (1, ‘admin’, ‘admin’);
– Table structure for book
DROP TABLE IF EXISTS book
;
CREATE TABLE book
(
id
bigint(4) NOT NULL AUTO_INCREMENT,
type
varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
name
varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
number
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
author
varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
press
varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
publicationdate
date NULL DEFAULT NULL,
price
decimal(10, 2) NULL DEFAULT NULL,
pagecount
int(4) NULL DEFAULT NULL,
keyword
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
createtime
date NULL DEFAULT NULL,
isborrow
int(4) NULL DEFAULT NULL,
remark
varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (id
) USING BTREE,
INDEX BOOK_PK
(type
) USING BTREE,
CONSTRAINT BOOK_PK
FOREIGN KEY (type
) REFERENCES booktype
(number
) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
– Records of book
INSERT INTO book
VALUES (14, ‘bt004’, ‘大雪中的山庄’, ‘b001’, '东野圭吾 ', ‘北京十月文艺出版社’, ‘2018-06-16’, 36.00, 200, NULL, NULL, 0, ‘1’);
INSERT INTO book
VALUES (16, ‘bt004’, ‘特工皇妃’, ‘b004’, ‘潇湘冬儿’, ‘江苏文艺出版社’, ‘2011-05-05’, 74.80, 333, NULL, NULL, 0, NULL);
INSERT INTO book
VALUES (17, ‘bt006’, ‘人类简史’, ‘b005’, '[以色列] 尤瓦尔·赫拉利 ', ‘中信出版社’, ‘2014-11-01’, 68.00, 100, NULL, NULL, 0, NULL);
INSERT INTO book
VALUES (18, ‘bt006’, ‘明朝那些事儿(1-9)’, ‘b006’, '当年明月 ', ‘中国海关出版社’, ‘2009-04-06’, 358.20, 500, NULL, NULL, 0, NULL);
INSERT INTO book
VALUES (19, ‘bt002’, ‘经济学原理(上下)’, ‘b007’, '[美] 曼昆 ', ‘机械工业出版社’, ‘2003-08-05’, 88.00, 156, NULL, NULL, 0, NULL);
INSERT INTO book
VALUES (20, ‘bt004’, ‘方向’, ‘b008’, '马克-安托万·马修 ', ‘北京联合出版公司’, ‘2017-04-01’, 99.80, 186, NULL, NULL, 0, NULL);
INSERT INTO book
VALUES (21, ‘bt004’, ‘画的秘密’, ‘b009’, '马克-安托万·马修 ', ‘北京联合出版公司’, ‘2016-01-01’, 60.00, 556, NULL, NULL, 0, NULL);
INSERT INTO book
VALUES (22, ‘bt004’, ‘造彩虹的人’, ‘b010’, '东野圭吾 ', ‘北京十月文艺出版社’, ‘2017-06-01’, 39.50, 775, NULL, NULL, 0, NULL);
INSERT INTO book
VALUES (23, ‘bt004’, ‘控方证人’, ‘b011’, '阿加莎·克里斯蒂 ', ‘新星出版社’, ‘2017-05-01’, 35.00, 195, NULL, NULL, 0, NULL);
INSERT INTO book
VALUES (24, ‘bt004’, ‘少有人走的路’, ‘b012’, 'M·斯科特·派克 ', ‘吉林文史出版社’, ‘2007-01-01’, 26.00, 300, NULL, NULL, 0, NULL);
INSERT INTO book
VALUES (25, ‘bt004’, ‘追寻生命的意义’, ‘b013’, '[奥] 维克多·弗兰克 ', ‘新华出版社’, ‘2003-01-01’, 12.00, 250, NULL, NULL, 0, NULL);
INSERT INTO book
VALUES (26, ‘bt004’, ‘秘密花园’, ‘b014’, '乔汉娜·贝斯福 ', ‘北京联合出版公司’, ‘2015-06-01’, 42.00, 450, NULL, NULL, 0, NULL);
– Table structure for booktype
DROP TABLE IF EXISTS booktype
;
CREATE TABLE booktype
(
id
bigint(4) NOT NULL AUTO_INCREMENT,
number
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
name
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
keyword
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
remark
varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
createtime
date NULL DEFAULT NULL,
PRIMARY KEY (id
) USING BTREE,
INDEX number
(number
) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
– Records of booktype
INSERT INTO booktype
VALUES (5, ‘bt001’, ‘军事’, NULL, NULL, NULL);
INSERT INTO booktype
VALUES (6, ‘bt002’, ‘经济’, NULL, NULL, NULL);
INSERT INTO booktype
VALUES (8, ‘bt003’, ‘语言’, NULL, NULL, NULL);
INSERT INTO booktype
VALUES (9, ‘bt004’, ‘文学’, NULL, NULL, NULL);
INSERT INTO booktype
VALUES (10, ‘bt005’, ‘艺术’, NULL, NULL, NULL);
INSERT INTO booktype
VALUES (11, ‘bt006’, ‘历史’, NULL, NULL, NULL);
INSERT INTO booktype
VALUES (22, ‘bt007’, ‘综合’, NULL, NULL, NULL);
INSERT INTO booktype
VALUES (23, ‘bt008’, ‘地理’, NULL, NULL, NULL);
– Table structure for reader
DROP TABLE IF EXISTS reader
;
CREATE TABLE reader
(
id
bigint(4) NOT NULL AUTO_INCREMENT,
number
varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
name
varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
type
varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
sex
varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
workunit
varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
homeaddress
varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
tel
varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
email
varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
createtime
date NULL DEFAULT NULL,
remark
varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (id
) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
– Records of reader
INSERT INTO reader
VALUES (1, ‘r001’, ‘张三’, ‘rt002’, ‘女’, ‘广州’, ‘广州’, ‘15626277129’, ‘913772015@qq.com’, NULL, NULL);
INSERT INTO reader
VALUES (2, ‘r002’, ‘李四’, ‘rt001’, ‘男’, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO reader
VALUES (5, ‘r003’, ‘王五’, ‘rt001’, ‘男’, ‘市委’, ‘湖南长沙’, ‘12345678911’, ‘wangwu@qq.com’, ‘2021-12-11’, NULL);
– Table structure for reader_account
DROP TABLE IF EXISTS reader_account
;
CREATE TABLE reader_account
(
id
bigint(4) NOT NULL,
username
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
password
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (id
) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
– Records of reader_account
INSERT INTO reader_account
VALUES (1, ‘r001’, ‘r001’);
INSERT INTO reader_account
VALUES (2, ‘r002’, ‘r002’);
INSERT INTO reader_account
VALUES (3, ‘r003’, ‘r003’);
– Table structure for readertype
DROP TABLE IF EXISTS readertype
;
CREATE TABLE readertype
(
id
bigint(4) NOT NULL AUTO_INCREMENT,
number
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
name
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
borrownumber
varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘借书数量’,
borrowterm
varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘借书期限’,
remark
varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
createtime
date NULL DEFAULT NULL,
PRIMARY KEY (id
) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
– Records of readertype
INSERT INTO readertype
VALUES (1, ‘rt001’, ‘一级读者’, ‘8’, ‘30’, NULL, NULL);
INSERT INTO readertype
VALUES (2, ‘rt002’, ‘二级读者’, ‘10’, ‘60’, NULL, NULL);
– Table structure for record
DROP TABLE IF EXISTS record
;
CREATE TABLE record
(
id
bigint(4) NOT NULL AUTO_INCREMENT,
readernumber
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
booknumber
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
borrowdate
date NULL DEFAULT NULL,
returndate
date NULL DEFAULT NULL,
remark
varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (id
) USING BTREE,
INDEX reader
(readernumber
) USING BTREE,
INDEX book
(booknumber
) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
– Records of record
INSERT INTO record
VALUES (8, ‘r002’, ‘b001’, ‘2018-06-27’, ‘2018-06-27’, NULL);
INSERT INTO record
VALUES (9, ‘r001’, ‘b001’, ‘2018-06-27’, ‘2018-06-27’, NULL);
INSERT INTO record
VALUES (10, ‘r001’, ‘b001’, ‘2018-06-27’, ‘2018-06-27’, NULL);
INSERT INTO record
VALUES (11, ‘r001’, ‘b001’, ‘2021-12-11’, ‘2021-12-11’, ‘’);
INSERT INTO record
VALUES (12, ‘r001’, ‘b001’, ‘2021-12-11’, ‘2021-12-11’, NULL);
INSERT INTO record
VALUES (14, ‘r001’, ‘b001’, ‘2021-12-11’, ‘2021-12-11’, ‘r001’);
INSERT INTO record
VALUES (15, ‘r001’, ‘b004’, ‘2021-12-11’, ‘2021-12-11’, ‘r001’);
INSERT INTO record
VALUES (16, ‘r001’, ‘b005’, ‘2021-12-11’, ‘2021-12-11’, ‘r001’);
SET FOREIGN_KEY_CHECKS = 1;
二、系统展示
======
1.登录系统
2.用户-借阅书籍
3.管理员-图书管理
4.管理员-图书类型管理
5.管理员-读者管理
6.管理员-读者类型管理
7.管理员-借阅记录查看
三、部分代码
======
BookController
package com.sjsq.controller;
import com.sjsq.pojo.Book;
import com.sjsq.pojo.BookType;
import com.sjsq.pojo.Record;
import com.sjsq.service.BookService;
import com.sjsq.service.ReaderService;
import com.sjsq.service.RecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Controller
public class BookController {
@Autowired
private BookService bookService;
@Autowired
private RecordService recordService;
@Autowired
private ReaderService readerService;
@RequestMapping(“/book/list”)
public String bookList(Model model, HttpServletRequest request) throws Exception {
request.setCharacterEncoding(“UTF-8”);
String name = request.getParameter(“bookName”);
String type = request.getParameter(“bookType”);
String press = request.getParameter(“bookPress”);
List bookList = bookService.queryBook(name, type, press);
List bookTypeList = bookService.queryAllBookType();
List bookNumberList = bookService.queryBookNumber();
List readerNumberList = readerService.queryReaderNumber();
model.addAttribute(“books”, bookList);
request.getSession().setAttribute(“bookTypes”, bookTypeList);
request.getSession().setAttribute(“bookNumbers”, bookNumberList);
request.getSession().setAttribute(“readerNumbers”, readerNumberList);
model.addAttribute(“bookName”, name);
model.addAttribute(“bookType”, type);
return “admin_books”;
}
@RequestMapping(“/book/listreader”)
public String bookListReader(Model model, HttpServletRequest request) throws Exception {
request.setCharacterEncoding(“UTF-8”);
String name = request.getParameter(“bookName”);
String type = request.getParameter(“bookType”);
String press = request.getParameter(“bookPress”);
List bookList = bookService.queryBook(name, type, press);
List bookTypeList = bookService.queryAllBookType();
List bookNumberList = bookService.queryBookNumber();
List readerNumberList = readerService.queryReaderNumber();
model.addAttribute(“books”, bookList);
request.getSession().setAttribute(“bookTypes”, bookTypeList);
request.getSession().setAttribute(“bookNumbers”, bookNumberList);
request.getSession().setAttribute(“readerNumbers”, readerNumberList);
model.addAttribute(“bookName”, name);
model.addAttribute(“bookType”, type);
return “reader_books”;
}
@RequestMapping(“/book/edit.action”)
public @ResponseBody
Book bookEdit(String number) {
Book book = bookService.queryBookByNumber(number);
return book;
}
@RequestMapping(“/book/update.action”)
public @ResponseBody
String bookUpdate(Book book) {
bookService.updateBookById(book);
return “OK”;
}
/用book实体接收不了前端传过来的变量,只能一个一个收/
@RequestMapping(“/book/add.action”)
public @ResponseBody
String bookAdd(HttpServletRequest request) throws Exception {
Date publicationdate = null;
Integer pagecount = null;
BigDecimal price = null;
String name = request.getParameter(“name”);
String type = request.getParameter(“type”);
String author = request.getParameter(“anthor”);
String number = request.getParameter(“number”);
String press = request.getParameter(“press”);
String publicationdateStr = request.getParameter(“publicationdate”);
String priceStr = request.getParameter(“price”);
String pagecountStr = request.getParameter(“pagecount”);
String remark = request.getParameter(“remark”);
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
String createtimeStr = sdf.format(new Date());
Date createtime = sdf.parse(createtimeStr);
if (publicationdateStr != “”) {
publicationdate = sdf.parse(publicationdateStr);
}
if (pagecountStr != “”) {
pagecount = Integer.parseInt(pagecountStr);
}
if (priceStr != “”) {
price = new BigDecimal(priceStr);
}
Book book = new Book(type, name, number, author, press, publicationdate,
price, pagecount, createtime, 0, remark);
bookService.addBook(book);
return “OK”;
}
@RequestMapping(“/book/delete.action”)
public @ResponseBody
String bookDelete(String number) {
bookService.deleteBookByNumber(number);
return “OK”;
}
@RequestMapping(“/book/lent.action”)
public @ResponseBody
String lentBook(HttpServletRequest request) throws Exception {
String bookNumber = request.getParameter(“bookNumber”);
String readerNumber = request.getParameter(“readerNumber”);
String remark = request.getParameter(“remark”);
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
String borrowtimeStr = sdf.format(new Date());
Date borrowtime = sdf.parse(borrowtimeStr);
Record record = new Record();
record.setReaderNumber(readerNumber);
record.setBookNumber(bookNumber);
record.setBorrowDate(borrowtime);
record.setRemark(remark);
bookService.updateBookStatusByNumber(1, bookNumber);
recordService.addRecord(record);
return “OK”;
}
@RequestMapping(“/book/return.action”)
public @ResponseBody
String returnBook(HttpServletRequest request) throws Exception {
String bookNumber = request.getParameter(“bookNumber”);
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
String returntimeStr = sdf.format(new Date());
Date returntime = sdf.parse(returntimeStr);
bookService.updateBookStatusByNumber(0, bookNumber);
recordService.setReturnDate(bookNumber, returntime);
return “OK”;
}
@RequestMapping(“/record/list”)
public String recordList(Model model, HttpServletRequest request) throws Exception {
request.setCharacterEncoding(“UTF-8”);
List recordList = recordService.queryAllFullRecord();
model.addAttribute(“records”, recordList);
return “record”;
}
}
BookTypeController
package com.sjsq.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sjsq.pojo.BookType;
import com.sjsq.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Controller
public class BookTypeController {
@Autowired
private BookService bookService;
@RequestMapping(“/booktype/list”)
public String bookTypeList(Model model, HttpServletRequest request) throws Exception {
request.setCharacterEncoding(“UTF-8”);
List bookTypeList = bookService.queryAllBookType();
ObjectMapper om = new ObjectMapper();
String jsonStr = om.writeValueAsString(bookTypeList);
System.out.println(jsonStr);
model.addAttribute(“bookTypes”, bookTypeList); //前端foreach标签好像解析不了json
model.addAttribute(“bookTypesJSON”, jsonStr);
return “admin_booktype”;
}
@RequestMapping(“/booktype/edit.action”)
public @ResponseBody
BookType bookTypeEdit(String number) {
BookType booktype = bookService.queryBookTypeByNumber(number);
return booktype;
}
@RequestMapping(“/booktype/update.action”)
public @ResponseBody
String bookTypeUpdate(BookType bookType) {
bookService.updateBookTypeById(bookType);
return “OK”;
}
@RequestMapping(“/booktype/add.action”)
public @ResponseBody
String bookTypeAdd(HttpServletRequest request) throws Exception {
/*private int id;
private String number;
private String name;
private String keyword;
private String remark;*/
String name = request.getParameter(“name”);
String number = request.getParameter(“number”);
String remark = request.getParameter(“remark”);
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
String createtimeStr = sdf.format(new Date());
Date createtime = sdf.parse(createtimeStr);
BookType bookType = new BookType(number, name, remark, createtime);
bookService.addBookType(bookType);
return “OK”;
}
@RequestMapping(“/booktype/delete.action”)
public @ResponseBody
String bookTypeDelete(String number) {
bookService.deleteBookTypeByNumber(number);
return “OK”;
}
}
LoginController
package com.sjsq.controller;
import com.sjsq.pojo.Admin;
import com.sjsq.pojo.ReaderAccount;
import com.sjsq.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
@Controller
public class LoginController {
@Autowired
private LoginService loginService;
@RequestMapping(value = {“/”, “/login.html”})
public String toLogin(HttpServletRequest request) {
return “index”;
}
@RequestMapping(“/logout.html”)
public String logout(HttpServletRequest request) {
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
@Controller
public class LoginController {
@Autowired
private LoginService loginService;
@RequestMapping(value = {“/”, “/login.html”})
public String toLogin(HttpServletRequest request) {
return “index”;
}
@RequestMapping(“/logout.html”)
public String logout(HttpServletRequest request) {
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-cHoa4wxw-1714869662134)]
[外链图片转存中…(img-LibV7YGT-1714869662134)]
[外链图片转存中…(img-eUZXtsSe-1714869662135)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!