基于javaweb的在线电子书小说阅读系统(java+layui+springboot+mysql+html+ftp)

article/2025/10/24 11:14:36

基于javaweb的在线电子书小说阅读系统(java+layui+springboot+mysql+html+ftp)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

20220519002239

20220519002240

20220519002242

20220519002243

20220519002244

基于javaweb+SpringBoot的在线电子书在线小说阅读系统(java+Layui+Springboot+Maven+mysql+HTML+FTP)

一、项目介绍 环境配置:

Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)

项目技术:

Layui+Springboot+ SpringMVC + HTML + FTP+ JavaScript + JQuery + Ajax + maven等等。

读者用户控制器:

@Controller

public class ReaderController {

@Autowired

private ReaderService readerService;

@RequestMapping(“/duzhe”)

public String duzhe(){

return “loginreader”;

@RequestMapping(“/book/getByType?bookType=1”)

public String xiangqing(){

return “front/personal”;

/**

  • 登陆操作

  • @return

*/

@RequestMapping(“/loginreader”)

@ResponseBody

public ResultData login1(Reader reader,HttpServletRequest request){

// 登陆操作

ResultData resultData = readerService.login1(reader);

// 判断登陆成功,将用户数据保存到 session中

// 如何获取session对象?

if(resultData.getCode() == 200){

HttpSession session = request.getSession();

session.setAttribute(“reader”,resultData.getData());

return resultData;

@RequestMapping(“/loginOut”)

@ResponseBody

public String loginOut(HttpServletRequest request){

// 只需要去将保存到session的数据干掉即可

request.getSession().setAttribute(“reader”,null);

// 重定向和转发的区别?

// 重定向: 1. 客户端行为 2. 两次请求 3. 不能携带前一次请求的数据

// 转发: 1. 服务器端行为 2. 一次请求 3. 能够携带前一次请求的数据

return “redirect:/loginPage”;

// @RequestMapping(“/login”)

// @ResponseBody// 该方法返回的是json字符串

// public ResultData login(Admin admin,HttpServletRequest request){

// // 登陆操作

// ResultData resultData = adminService.login(admin);

// // 判断登陆成功,将用户数据保存到 session中

// // 如何获取session对象?

// if(resultData.getCode() == 200){

// HttpSession session = request.getSession();

// session.setAttribute(“admin”,resultData.getData());

// }

//

// return resultData;

// }

//

//读者列表

@RequestMapping(“/reader/list”)

public String list(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “5”) Integer pageSize){

PageInfo pageInfo = readerService.list(page,pageSize);

model.addAttribute(“list”,pageInfo.getList());

model.addAttribute(“pageInfo”,pageInfo);

return “reader/reader-list”;

//搜索读者显示列表

@RequestMapping(“/reader/search”)

public String searchList(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “5”) Integer pageSize,

String keyword){

PageInfo pageInfo = readerService.searchList(page, pageSize, keyword);

model.addAttribute(“list”,pageInfo.getList());

model.addAttribute(“pageInfo”,pageInfo);

return “reader/reader-list”;

//读者删除列表

@RequestMapping(“/reader/deleteList”)

public String deleteList(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “5”) Integer pageSize){

PageInfo pageInfo = readerService.DeleteList(page,pageSize);

model.addAttribute(“list”,pageInfo.getList());

model.addAttribute(“pageInfo”,pageInfo);

return “reader/reader-del”;

//添加读者

@RequestMapping(“/reader/addPage”)

public String addPage(){

return “front/register”;

// 添加读者的方法

@RequestMapping(“/reader/add”)

@ResponseBody

public ResultData add(Reader reader){

return readerService.add(reader);

/**

  • 编辑读者状态信息

  • @param readerId : 当前读者Id

  • @param readerStatus: 读者当前状态

  • @return

*/

@RequestMapping(“/reader/editStatus”)

@ResponseBody

public ResultData editStatus(Integer readerId, Integer readerStatus){

return readerService.updateStatus(readerId, readerStatus);

/**

  • 编辑读者

  • @param

  • @param

  • @return

*/

@RequestMapping(“/reader/editPage”)

public String editPage(Model model, Integer readerId){

Reader dbreadder = readerService.findById(readerId);

model.addAttribute(“reader”,dbreadder);

return “reader/reader-edit”;

/**

  • 更新读者基本信息的方法

  • @param reader

  • @return

*/

@RequestMapping(“/reader/edit”)

@ResponseBody

public ResultData edit(Reader reader){

return readerService.edit(reader);

/**

  • 批量删除

  • @param ids

  • @return

*/

@RequestMapping(“/reader/deleteAll”)

@ResponseBody

public ResultData deleteAll(@RequestParam(name = “ids”) String ids){

// 将ids转换成数组

String[] idArr=ids.split(“,”);

return readerService.batchDelete(idArr);

};

/**

  • 批量恢复

  • @param ids

  • @return

*/

@RequestMapping(“/reader/huifuAll”)

@ResponseBody

public ResultData huifuDelete(@RequestParam(name = “ids”) String ids){

// 将ids转换成数组

String[] idArr=ids.split(“,”);

return readerService.huifuDelete(idArr);

};

@RequestMapping(“/reader/delete”)

@ResponseBody

public ResultData deleteReader(Integer readerId, Integer readerStatus){

return readerService.deletereader(readerId,readerStatus);

@RequestMapping(“/reader/toCenter”)

public String toCenter(HttpSession session, Model model){

// Reader reader = (Reader)session.getAttribute(“reader”);

// if(reader==null){

// return “login”;

// }

Reader reader = readerService.findById(1 );

model.addAttribute(“reader”,reader);

return “front/center”;

图书管理控制层:

@Controller

public class BookController {

@Autowired

private BookService bookService;

// @Autowired

// private BookService bookService;

//小说列表

@RequestMapping(“/book/list”)

public String list(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “3”) Integer pageSize) {

PageInfo pageInfo=bookService.list(page,pageSize);

model.addAttribute(“list”,pageInfo.getList());

model.addAttribute(“pageInfo”,pageInfo);

return “book/book-list”;

//小说添加

@RequestMapping(“/book/addPage”)

public String addPage() {

return “book/book-add”;

//

// // 添加小说

@RequestMapping(“/book/add”)

@ResponseBody

public ResultData add(Book book) {

return bookService.add(book);

// 编辑小说状态

@RequestMapping(“/book/editCondition”)

@ResponseBody

public ResultData editCondition(Integer bookId, Integer condition){

return bookService.updateStatus(bookId,condition);

// 编辑页面

@RequestMapping(“/book/editPage”)

public String editPage(Model model, Integer bookId){

Book dbBook = bookService.findById(bookId);

model.addAttribute(“book”,dbBook);

return “book/book-edit”;

//更新基本信息

@RequestMapping(“/book/edit”)

@ResponseBody

public ResultData edit(Book book){

return bookService.edit(book);

// 批量删除

@RequestMapping(“/book/deleteAll”)

@ResponseBody

public ResultData deleteAll(@RequestParam(name=“ids”) String ids){

//将ids转为数组

String[] idArr = ids.split(“,”);

//将字符串数组转为int数组

return bookService.batchDelete(idArr);

// search

@RequestMapping(“/book/search”)

public String searchList(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “3”) Integer pageSize,

String keyword) {

PageInfo pageInfo=bookService.searchList(page,pageSize,keyword);

model.addAttribute(“list”,pageInfo.getList());

model.addAttribute(“pageInfo”,pageInfo);

return “book/book-list”;

@RequestMapping(“/book/search1”)

public String searchList1(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “3”) Integer pageSize,

String keyword1) {

PageInfo pageInfo=bookService.searchList1(page,pageSize,keyword1);

model.addAttribute(“list”,pageInfo.getList());

model.addAttribute(“pageInfo”,pageInfo);

return “book/book-list”;

@RequestMapping(value = “/book/getByType”,method = RequestMethod.GET)

public String getByType(Integer bookType, Model model, HttpSession session){

List bookList = bookService.findByType(bookType);

List randList = bookService.findRandList();

//将字符串数组转为int数组

session.setAttribute(“bookList”,bookList);

session.setAttribute(“randList”,randList);

return “/front/personal”;

@RequestMapping(value = “/book/getByName”,method = RequestMethod.POST)

public String getByName(String likeName, Model model, HttpSession session) throws UnsupportedEncodingException {

// String likeName1 = new String(likeName.getBytes(“ISO-8859-1”),“utf-8”);

List bookList = bookService.findByLikeName(likeName);

List randList = bookService.findRandList();

//将字符串数组转为int数组

session.setAttribute(“bookList”,bookList);

session.setAttribute(“randList”,randList);

return “/front/personal”;

图书订单管理控制层:

@Controller

public class BookOrderController {

@Autowired

private BookOrderService bookOrderService;

@Autowired

private BookService bookService;

@RequestMapping(“/bookorder/bookorderlist”)

public String bookorderlist(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “3”) Integer pageSize) {

PageInfo pageInfo = bookOrderService.list(page, pageSize);

//将数据转发到页面

model.addAttribute(“list”, pageInfo.getList());

model.addAttribute(“pageInfo”, pageInfo);

return “bookorder/bookorder-list”;

@RequestMapping(“/bookorder/orderSearch”)

public String searchList(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “3”) Integer pageSize,

String keyword) {

PageInfo pageInfo = bookOrderService.searchList(page,pageSize,keyword);

//将数据转发到页面

model.addAttribute(“list”, pageInfo.getList());

model.addAttribute(“pageInfo”, pageInfo);

return “bookorder/bookorder-list”;

@RequestMapping(“/bookorder/bookorderadd”)

public String bookorderadd() {

return “bookorder/bookorder-add”;

@RequestMapping(value = “/bookorder/add”,method = RequestMethod.POST)

@ResponseBody

public ResultData add(BookOrder bookOrder, HttpSession session) {

Reader reader = (Reader)session.getAttribute(“reader”);

if(reader==null){

return new ResultData(2001,“用户未登陆”,null);

int readerId = reader.getReaderId();

bookOrder.setUserId(1);

bookOrder.setDiscountId(1);

bookOrder.setOrderDate(new Timestamp(System.currentTimeMillis()));

bookOrder.setOrderStatus(1);

bookOrder.setPayStatus(1);

ResultData resultData = bookOrderService.add(bookOrder);

return resultData;

@RequestMapping(“/bookorder/editStatus”)

@ResponseBody

public ResultData editStatus(Integer id, Integer status) {

return bookOrderService.updateStatus(id,status);

@RequestMapping(“/bookorder/deleteAll”)

@ResponseBody

public ResultData deleteAll(@RequestParam(name = “ids”) String ids){

// 将ids转换成数组

String[] idArr = ids.split(“,”);

return bookOrderService.batchDelete(idArr);

@RequestMapping(“/bookorder/delete”)

@ResponseBody

public ResultData delete(Integer orderid,Integer orderStatus){

return bookOrderService.delete(orderid,orderStatus);

@RequestMapping(“/bookOrder/toOrder”)

public String delete(Integer bookId,Model model){

Book book = bookService.findById(bookId);

model.addAttribute(“book”,book);

return “front/order”;

@RequestMapping(“/bookOrder/toOrderCenter”)

public String toOrderCenter(HttpSession session,Model model){

/*Reader reader = (Reader)session.getAttribute(“reader”);

if(reader==null){

return new ResultData(2001,“用户未登陆”,null);

int readerId = reader.getReaderId();*/

int readerId = 1;

List bookOrderList = bookOrderService.getAll(readerId);

model.addAttribute(“bookOrderList”,bookOrderList);

return “front/orderCenter”;

角色管理控制层:

@Controller

public class AuthorController {

@Autowired

private AuthorService authorService;

@RequestMapping(“/zuozhe”)

public String duzhe(){

return “loginauthor”;

@RequestMapping(“/zuoping”)

public String zuoping(){

return “index11”;

/**

  • 登陆操作

  • @return

*/

@RequestMapping(“/loginauthor”)

@ResponseBody

public ResultData login2(Author author){

ResultData resultData=authorService.login2(author);

return resultData;

//作者列表

@RequestMapping(“/author/list”)

public String list(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “5”) Integer pageSize){

PageInfo pageInfo = authorService.list(page,pageSize);

model.addAttribute(“list”,pageInfo.getList());

model.addAttribute(“pageInfo”,pageInfo);

return “author/author-list”;

//搜索作者显示列表

@RequestMapping(“/author/search”)

public String searchList(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “5”) Integer pageSize,

String keyword){

PageInfo pageInfo = authorService.searchList(page, pageSize, keyword);

model.addAttribute(“list”,pageInfo.getList());

model.addAttribute(“pageInfo”,pageInfo);

return “author/author-list”;

//作者删除列表

@RequestMapping(“/author/deleteList”)

public String deleteList(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “5”) Integer pageSize){

PageInfo pageInfo = authorService.DeleteList(page,pageSize);

model.addAttribute(“list”,pageInfo.getList());

model.addAttribute(“pageInfo”,pageInfo);

return “author/author-del”;

//添加作者

@RequestMapping(“/author/addPage”)

public String addPage(){

return “author/author-add”;

// 添加作者的方法

@RequestMapping(“/author/add”)

@ResponseBody

public ResultData add(Author author){

return authorService.add(author);

/**

  • 编辑作者状态信息

  • @param authorId : 当前作者Id

  • @param authorStatus: 作者当前状态

  • @return

*/

@RequestMapping(“/author/editStatus”)

@ResponseBody

public ResultData editStatus(Integer authorId, Integer authorStatus){

return authorService.updateStatus(authorId, authorStatus);

/**

  • 编辑作者

  • @param

  • @param

  • @return

*/

@RequestMapping(“/author/editPage”)

public String editPage(Model model, Integer authorId){

Author dbreadder = authorService.findById(authorId);

model.addAttribute(“author”,dbreadder);

return “author/author-edit”;

/**

  • 更新作者基本信息的方法

  • @param author

  • @return

*/

@RequestMapping(“/author/edit”)

@ResponseBody

public ResultData edit(Author author){

return authorService.edit(author);

/**

  • 批量删除

  • @param ids

  • @return

*/

@RequestMapping(“/author/deleteAll”)

@ResponseBody

public ResultData deleteAll(@RequestParam(name = “ids”) String ids){

// 将ids转换成数组

String[] idArr=ids.split(“,”);

return authorService.batchDelete(idArr);

};

/**

  • 批量恢复

  • @param ids

  • @return

*/

@RequestMapping(“/author/huifuAll”)

@ResponseBody

public ResultData huifuDelete(@RequestParam(name = “ids”) String ids){

// 将ids转换成数组

String[] idArr=ids.split(“,”);

return authorService.huifuDelete(idArr);

};

@RequestMapping(“/author/delete”)

@ResponseBody

public ResultData deleteAuthor(Integer authorId, Integer authorStatus){

return authorService.deleteauthor(authorId,authorStatus);

历史控制层:

@Controller

public class HistoryController {

@Autowired

private HistoryService historyService;

//列表

@RequestMapping(“/history/list”)

public String list(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “3”) Integer pageSize) {

PageInfo pageInfo=historyService.list(page,pageSize);

model.addAttribute(“list”,pageInfo.getList());

model.addAttribute(“pageInfo”,pageInfo);

return “history/history-list”;

//添加

@RequestMapping(“/history/addPage”)

public String addPage(){

return “history/history-add”;

// 添加

@RequestMapping(“/history/add”)

@ResponseBody

public ResultData add(History history){

return historyService.add(history);

// search

@RequestMapping(“/history/search”)

public String searchList(Model model,

@RequestParam(defaultValue = “1”) Integer page,

@RequestParam(defaultValue = “3”) Integer pageSize,

String keyword) {

PageInfo pageInfo=historyService.searchList(page,pageSize,keyword);

model.addAttribute(“list”,pageInfo.getList());

model.addAttribute(“pageInfo”,pageInfo);

return “history/history-list”;

// 批量删除

@RequestMapping(“/history/deleteAll”)

@ResponseBody

public ResultData deleteAll(@RequestParam(name=“ids”) String ids){

//将ids转为数组

String[] idArr = ids.split(“,”);

//将字符串数组转为int数组

return historyService.batchDelete(idArr);



http://chatgpt.dhexx.cn/article/1fNY6aGC.shtml

相关文章

共享Java电子书

共享Java电子书(12月31日更新)热802罗智明 2009-12-14 09:42 免责声明: 这些书籍都是本人从网上收集而来,无一原创,在此做一个总结和归类,免去大家找资料的奔波之苦。 感谢网盘支持:DBank数据银行(华为出品) 电子书索引: Structure&Algorithms C C++ Linux Embedde…

2021必看!java电子书合集

1. 前言 最近面试了几家公司,体验了一下电话面试和今年刚火起来的视频面试, 虽然之前就有一些公司会先通过电话面试的形式先评估下候选人的能力水平,但好像不多,至少我以前的面试形式100%都是现场面试。 面试过程中&#xff0c…

Java硬核福利,实战虚拟机+Springboot+缓存,java电子书教材下载

总目录 1. 消息中间件概述 2. 安装及配置 RabbitMQ 3. RabbitMQ 入门 4. AMQP 5. RabbitMQ 工作模式 6.Spring t Boot 整合 RabbitMQ ![太狠了!阿里大牛纯手写RabbitMQ 笔记,GitHub 70K星,有点东西](https://img-blog. 【一线大厂Java面试题…

软件工程毕业设计课题(21)基于JAVA毕业设计电子书小说网站系统毕设作品项目

项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的电子书阅读系统,整个网站项目使用了B/S架构,基于java的springboot框架下开发;管理员通过后台录入信息、管理信息,设置网站信息,管理会…

Java面试回忆录:java电子书免费

目录 部分内容展示 深入浅出索引(上) 索引的常见模型InnoDB 的索引模型索引维护小结 深入浅出索引(下) 覆盖索引最左前缀原则索引下推 为什么这些SQL语句逻辑相同,性能却差异巨大? 案例一:条…

排名前5位的免费Java电子书

有很多免费的Java电子书,但是大多数已经过时或不准确。 这是我收藏中最好的5本免费Java电子书,它们是使用Java编程语言的知名,完整,更新和详细的内容。 最适合Java初学者,也可能是经验丰富的程序员的良好参考。 PS该订…

python微信小程序 java电子书阅读器系统uniapp

功能介绍 将系统权限按管理员和用户这两类涉及用户划分。 (a) 管理员;管理员使用本系统涉到的功能主要有:个人中心、用户管理、类型管理、书城管理、管理员管理、系统管理等功能。 (b)用户进入系统前台可以实现首页、我的、书城、新书资讯等功能。 随着信…

Java工程师通宵都要看完这几本阿里P8都强烈推荐的Java电子书

以下是楼主收藏的电子书籍以及java架构学习资料 ​ 编辑 添加图片注释,不超过 140 字(可选) 面试资料 ​ 编辑 添加图片注释,不超过 140 字(可选) Java核心知识文档 ​ 编辑切换为居中 添加图片注释&…

在职场中Java工程师通宵都要看完这几本阿里P8小编都强烈推荐的Java电子书

以下是小编收藏的电子书籍以及java架构学习资料 面试资料 Java核心知识文档 Java核心知识PDF 1. JVM 2. JAVA集合 3. JAVA多线程并发 4. JAVA基础 5. Spring 原理 6. 微服务 7. Netty与RPC 8. 网络 9. 日志 10. Zookeeper 11. Kafka 12. Rabbi tMQ 13. Hbase 14.…

Java 学习如逆水行舟,不进则退,100 本 java 电子书推荐

Java 学习如逆水行舟,不进则退。一路自学过来,踩过很多坑,吃过很多苦。 现在回想起来,当初要是能有一个完整的「学习路线」让我按图索骥就好了。 建议做好时间规划,不断的提高自己的学习效率,学习过程中尽…

5本免费的Java电子书

互联网上面有大量的java电子书,但是大部分都是过期或者不准确。这里是mkyong网站经整理的最棒的5本免费的java电子书,它们都有名、完整、更新、详尽的。无论是java初学者还是有经验的程序员都很有帮助。 1. the java language specification, third edition 下载 : http://j…

【转】7本免费的Java电子书和教程

本文由 ImportNew - 唐小娟 翻译自 Javapapers。如需转载本文,请先参见文章末尾处的转载要求。 1. Thinking in Java (Third Edition) 本书的作者是Bruce Eckel,它一直都是Java最畅销的免费电子书。这本书可以帮助你系统的学习Java,里面包含有…

Android_Data 资料

项目地址: Freelander/Android_Data 简介:Some Android learning materials, hoping to help you learn Android development. 收集整理这份资料灵感来自于 trip_to_iOS, 征得同意引用了该资料的开头描述 收集整理这份资料主要帮助初学者学习 Android 开…

Android安全启动学习(一):AVB校验是什么?

最近老师让学习一下AVB,这玩意很难找到资料。只有网上搜索一些零碎的资料和博客。最多的资料就是官网的。这里来整理学习一下AVB的相关资料。 1、AVB是什么? 如果你知道安全启动ATF,那么到这里肯定是能接上的,如果没有那也不影响…

Android学习之路

学习路线图 一张图搞定,非常全面 扩展资料 Android 开发书籍推荐 & 学习路线图 & 资料汇整

【Kotlin -- 知识点】学习资料

| Кotlin 是一种在 Java 虚拟机上运行的现代编程语言。它具有优雅的语法,并且可以与所有现有的 Java 库进行互操作。在 2017 年的 Google I/O 上,Android 团队宣布 Kotlin 将成为 Android 平台的官方编程语言。这使 Kotlin 有望成为未来的顶级编程语言…

Android OpenGL ES 学习(二) -- 图形渲染管线和GLSL

OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学习(三) – 绘制平面图形 Android OpenGL ES 学习(四) – 正交投屏 Android OpenGL ES 学习(五) – 渐变色 Android OpenGL ES 学习(六) – 使用…

Android开发的经典入门教材和学习路线

---------------------------------------------------------------------------------------------------------------------- Android开发书籍推荐:从入门到精通系列学习路线书籍介绍 (https://www.diycode.cc/wiki/androidbook) 很多时候我们都会不断收到新手…

2022 Android 进阶学习RoadMap

看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺“;这的确不假,今年已经是2022年了,距离Android巅峰时期那会已经过去七八年了,现在想找一个适合的中高级Android工程师的确不…