Java 实战项目之小说在线阅读系统的实现流程
作者:qq_1334611189 发布时间:2022-01-31 07:41:49
标签:Java,小说,阅读系统,实战
一、项目简述
功能包括(管理员和游客角色):
1:用户及主要操作功能 游客可以浏览网站的主页,但是需要注册为会员后部分小 说才能对网络小说进免费行阅读或阅读。用户可以收藏书 架,留言评论,上次阅读,阅读历史,章节选择等等功 能。
2:管理模块 网络小说管理模块包括不同网络小说类别的添加,删除以 及网络小说的上传,删除管理。可以包括武侠小书,都市 言情,穿越小书等各个类等等功能。
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax等等。
读者操作业务控制层:
@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<Reader> 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<Reader> 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<Reader> 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 MessageController {
@Autowired
private MessageService messageService;
@Autowired
private BookService bookService;
@RequestMapping("/message/list")
public String list(Model model,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "5") Integer pageSize){
PageInfo<Message> pageInfo=messageService.list(page,pageSize);
//将数据转发到页面
model.addAttribute("list",pageInfo.getList());
model.addAttribute("pageInfo",pageInfo);
return "message/message-list";
}
@RequestMapping("/message/addMessage")
public String addMessage(){
return "message/message-add";
}
// 搜索留言显示列表
@RequestMapping("/message/search")
public String searchList(Model model,@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "5") Integer pageSize,
String keyword){
PageInfo<Message> pageInfo=messageService.searchList(page,pageSize,keyword);
model.addAttribute("list",pageInfo.getList());
model.addAttribute("pageInfo",pageInfo);
return "message/message-list";
}
// 添加留言
@RequestMapping(value = "/message/add",method = RequestMethod.POST)
public String add(Message message, HttpSession session,Model model){
/*Reader reader = (Reader)session.getAttribute("reader");
message.setReaderId(reader.getReaderId());*/
message.setReaderId(2);
ResultData resultData = messageService.add(message);
Book book = bookService.findById(message.getBookId());
List<Message> messageList = messageService.findByBookId(message.getBookId());
model.addAttribute("book",book);
model.addAttribute("messageList",messageList);
return "novel";
}
// 留言编辑页面
@RequestMapping("/message/editPage")
public String editPage(Model model,Integer id){
// 从数据库查询到的数据
Message dbMessage = messageService.findById(id);
model.addAttribute("message",dbMessage);
return "message/message-edit";
}
// 更新留言信息的方法
@RequestMapping("/message/edit")
@ResponseBody
public ResultData edit(Message message){
return messageService.edit(message);
}
// 批量删除
@RequestMapping("/message/deleteAll")
@ResponseBody
public ResultData deleteAll(@RequestParam(name = "ids") String ids){
// 将ids转换成数组
String[] idArr=ids.split(",");
return messageService.mesDelete(idArr);
}
}
图书列表控制层:
@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<BookOrder> 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<BookOrder> 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<BookOrder> bookOrderList = bookOrderService.getAll(readerId);
model.addAttribute("bookOrderList",bookOrderList);
return "front/orderCenter";
}
}
历史浏览控制层:
@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<History> 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<History> 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);
}
}
来源:https://blog.csdn.net/m0_59687645/article/details/121436019


猜你喜欢
- HttpClient使用post方法提交数据 源代码:package post;import Java.io.IOException;imp
- 1、Java序列化与反序列化是什么?Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象
- foreach拼接字符串查询无数据返回Mybatis-plus xml使用foreach遍历查询条件,填充IN函数时,查询不到数据入参 Li
- 对某个类型中的方法进行拦截,然后加入固定的业务逻辑,这是AOP面向切面编程可以做的事,在springboot里实现aop的方法也有很多, s
- 目录1、表达式目录树2、构建表达式目录树3、使用Expression来进行不同对象的相同名字的属性映射4、表达式目录树构建SQL删选&nbs
- 本文实例讲述了C#队列Queue多线程用法。分享给大家供大家参考。具体分析如下:这里展示一个例子,供学习使用:private void bu
- Java多线程线程的创建1.继承Thread2.实现Runnable3.实现Callable使用继承Thread类来开发多线程的应用程序在设
- 今天预实现一功能,将txt中的数据转到excel表中,做为matlab的数据源。搜集一些c#操作excel的程序。步骤如下:下载一个Micr
- main.xml:<?xml version="1.0" encoding="utf-8"?&
- OkHttp流程图OkHttp基本使用gradle依赖implementation 'com.squareup.okhttp3:ok
- 一、泛型的基本概念java与c#一样,都存在泛型的概念,及类型的参数化。java中的泛型是在jdk5.0后出现的,但是java中的泛型与C#
- 最近经常在机房看同学在玩一个走迷宫的游戏,比较有趣,自己也用java写一个实现随机生成迷宫的算法,其实就是一个图的深度优先遍历算法.基本思想
- 在本人用editplus写java文件时碰到的问题。 import java.util.*;class collection{ &
- 1 需求Mybatis-plus使用@TableLogic注解进行逻辑删除数据后,在某些场景下,又需要查询该数据时,又不想写SQ
- 做Android开发的童靴们肯定对系统自带的控件使用的都非常熟悉,比如Button、TextView、ImageView等。如果你问我具体使
- 该文章中使用了较多的 委托delegate和Lambda表达式,如果你并不熟悉这些,请查看我的文章《委托与匿名委托》、《匿名委托与Lambd
- 本文实例为大家分享了C语言非递归后序遍历二叉树的具体代码,供大家参考,具体内容如下法一:实现思路:一个栈 先按 根->右子树->
- 原始Spring开发Person.java准备Person.java类:package com.jektong.spring;public
- 前言今天小编给大家带来的是用代码一键实现银行卡识别与绑定功能。银行卡识别的应用场景 介绍开发步骤前,我们先来谈谈银行卡识别的具体应用场景,
- 1.使用List集合方式用list保存activity实例,然后逐一干掉import java.util.LinkedList;import