Java 實(shí)戰(zhàn)項(xiàng)目之小說(shuō)在線閱讀系統(tǒng)的實(shí)現(xiàn)流程
一、項(xiàng)目簡(jiǎn)述
功能包括(管理員和游客角色):
1:用戶及主要操作功能 游客可以瀏覽網(wǎng)站的主頁(yè),但是需要注冊(cè)為會(huì)員后部分小 說(shuō)才能對(duì)網(wǎng)絡(luò)小說(shuō)進(jìn)免費(fèi)行閱讀或閱讀。用戶可以收藏書 架,留言評(píng)論,上次閱讀,閱讀歷史,章節(jié)選擇等等功 能。
2:管理模塊 網(wǎng)絡(luò)小說(shuō)管理模塊包括不同網(wǎng)絡(luò)小說(shuō)類別的添加,刪除以 及網(wǎng)絡(luò)小說(shuō)的上傳,刪除管理??梢园ㄎ鋫b小書,都市 言情,穿越小書等各個(gè)類等等功能。
二、項(xiàng)目運(yùn)行
環(huán)境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
項(xiàng)目技術(shù): JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax等等。





讀者操作業(yè)務(wù)控制層:
@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);
// 判斷登陸成功,將用戶數(shù)據(jù)保存到 session中
// 如何獲取session對(duì)象?
if(resultData.getCode() == 200){
HttpSession session = request.getSession();
session.setAttribute("reader",resultData.getData());
}
return resultData;
}
@RequestMapping("/loginOut")
@ResponseBody
public String loginOut(HttpServletRequest request){
// 只需要去將保存到session的數(shù)據(jù)干掉即可
request.getSession().setAttribute("reader",null);
// 重定向和轉(zhuǎn)發(fā)的區(qū)別?
// 重定向: 1. 客戶端行為 2. 兩次請(qǐng)求 3. 不能攜帶前一次請(qǐng)求的數(shù)據(jù)
// 轉(zhuǎn)發(fā): 1. 服務(wù)器端行為 2. 一次請(qǐng)求 3. 能夠攜帶前一次請(qǐng)求的數(shù)據(jù)
return "redirect:/loginPage";
}
// @RequestMapping("/login")
// @ResponseBody// 該方法返回的是json字符串
// public ResultData login(Admin admin,HttpServletRequest request){
// // 登陸操作
// ResultData resultData = adminService.login(admin);
// // 判斷登陸成功,將用戶數(shù)據(jù)保存到 session中
// // 如何獲取session對(duì)象?
// 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);
}
/**
* 編輯讀者狀態(tài)信息
* @param readerId : 當(dāng)前讀者Id
* @param readerStatus: 讀者當(dāng)前狀態(tài)
* @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轉(zhuǎn)換成數(shù)組
String[] idArr=ids.split(",");
return readerService.batchDelete(idArr);
};
/**
* 批量恢復(fù)
* @param ids
* @return
*/
@RequestMapping("/reader/huifuAll")
@ResponseBody
public ResultData huifuDelete(@RequestParam(name = "ids") String ids){
// 將ids轉(zhuǎn)換成數(shù)組
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);
//將數(shù)據(jù)轉(zhuǎn)發(fā)到頁(yè)面
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";
}
// 留言編輯頁(yè)面
@RequestMapping("/message/editPage")
public String editPage(Model model,Integer id){
// 從數(shù)據(jù)庫(kù)查詢到的數(shù)據(jù)
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轉(zhuǎn)換成數(shù)組
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);
//將數(shù)據(jù)轉(zhuǎn)發(fā)到頁(yè)面
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);
//將數(shù)據(jù)轉(zhuǎn)發(fā)到頁(yè)面
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轉(zhuǎn)換成數(shù)組
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轉(zhuǎn)為數(shù)組
String[] idArr = ids.split(",");
//將字符串?dāng)?shù)組轉(zhuǎn)為int數(shù)組
return historyService.batchDelete(idArr);
}
}
到此這篇關(guān)于Java 實(shí)戰(zhàn)項(xiàng)目之小說(shuō)在線閱讀系統(tǒng)的實(shí)現(xiàn)流程的文章就介紹到這了,更多相關(guān)Java 小說(shuō)在線閱讀系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java實(shí)戰(zhàn)項(xiàng)目練習(xí)之球館在線預(yù)約系統(tǒng)的實(shí)現(xiàn)
- Java?實(shí)戰(zhàn)項(xiàng)目之家政服務(wù)平臺(tái)系統(tǒng)的實(shí)現(xiàn)流程
- Java?實(shí)戰(zhàn)項(xiàng)目之學(xué)生信息管理系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目之畢業(yè)設(shè)計(jì)管理系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目之教材管理系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目之在線點(diǎn)餐系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目之精品養(yǎng)老院管理系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目之誠(chéng)途旅游系統(tǒng)的實(shí)現(xiàn)流程
- Java實(shí)戰(zhàn)網(wǎng)上電子書城的實(shí)現(xiàn)流程
相關(guān)文章
IDEA修改idea64.exe.vmoptions文件以及解決coding卡頓問(wèn)題
IDEA修改idea64.exe.vmoptions文件以及解決coding卡頓問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
淺談Java循環(huán)中的For和For-each哪個(gè)更快
本文主要介紹了淺談Java循環(huán)中的For和For-each哪個(gè)更快,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Spring Boot 中整合 MyBatis-Plus詳細(xì)步驟(最新推薦)
本文詳細(xì)介紹了如何在SpringBoot項(xiàng)目中整合MyBatis-Plus,包括整合步驟、基本CRUD操作、分頁(yè)查詢、批量操作、自定義SQL操作等,通過(guò)這些步驟,開(kāi)發(fā)者可以快速實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作,提高開(kāi)發(fā)效率,感興趣的朋友一起看看吧2025-01-01
Java數(shù)據(jù)結(jié)構(gòu)之單鏈表詳解
在之前的學(xué)習(xí)中,我們主要了解了很多 Java 的 基本語(yǔ)法,但是在之后的 Java學(xué)習(xí)中,了解基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)的知識(shí)非常重要,數(shù)據(jù)結(jié)構(gòu)的思想可以幫助我們更加清晰明白的了解 Java 的解題思路等等.今天我們就來(lái)開(kāi)始學(xué)習(xí)實(shí)現(xiàn)一個(gè)Java基礎(chǔ)的單鏈表,需要的朋友可以參考下2021-05-05
MyBatis-Plus+達(dá)夢(mèng)數(shù)據(jù)庫(kù)實(shí)現(xiàn)高效數(shù)據(jù)持久化的示例
這篇文章主要介紹了MyBatis-Plus和達(dá)夢(mèng)數(shù)據(jù)庫(kù)實(shí)現(xiàn)高效數(shù)據(jù)持久化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08

