From c9f1500976d4770a3e320464cc1d8c7de0554894 Mon Sep 17 00:00:00 2001 From: xiongxiaoyang <773861846@qq.com> Date: Thu, 24 Dec 2020 16:26:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E404=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=EF=BC=8C=E8=AE=BF=E9=97=AE=E5=B7=B2=E5=88=A0=E9=99=A4=E7=9A=84?= =?UTF-8?q?=E4=B9=A6=E9=A1=B5/=E7=9B=AE=E5=BD=95=E9=A1=B5/=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E9=A1=B5=E8=87=AA=E5=8A=A8=E8=B7=B3=E8=BD=AC=E5=88=B0?= =?UTF-8?q?404=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../novel/controller/PageController.java | 25 +++++++++++++++--- .../novel/core/config/ErrorPageConfig.java | 25 ++++++++++++++++++ .../novel/service/impl/BookServiceImpl.java | 6 +++-- .../src/main/resources/static/images/404.jpeg | Bin 0 -> 9702 bytes .../src/main/resources/templates/404.html | 17 ++++++++++++ 5 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 novel-front/src/main/java/com/java2nb/novel/core/config/ErrorPageConfig.java create mode 100644 novel-front/src/main/resources/static/images/404.jpeg create mode 100644 novel-front/src/main/resources/templates/404.html diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/PageController.java b/novel-front/src/main/java/com/java2nb/novel/controller/PageController.java index aa6ba24..23f69ca 100644 --- a/novel-front/src/main/java/com/java2nb/novel/controller/PageController.java +++ b/novel-front/src/main/java/com/java2nb/novel/controller/PageController.java @@ -9,6 +9,7 @@ import com.java2nb.novel.service.BookService; import com.java2nb.novel.service.NewsService; import com.java2nb.novel.service.UserService; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Controller; @@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; import java.util.List; @@ -97,9 +99,14 @@ public class PageController extends BaseController{ /** * 详情页 * */ + @SneakyThrows @RequestMapping("/book/{bookId}.html") - public String bookDetail(@PathVariable("bookId") Long bookId, Model model) { + public String bookDetail(@PathVariable("bookId") Long bookId, HttpServletResponse resp, Model model) { Book book = bookService.queryBookDetail(bookId); + if(book == null){ + resp.sendError(HttpServletResponse.SC_NOT_FOUND); + return null; + } model.addAttribute("book",book); if(book.getLastIndexId() != null) { //查询首章目录ID @@ -112,9 +119,14 @@ public class PageController extends BaseController{ /** * 目录页 * */ + @SneakyThrows @RequestMapping("/book/indexList-{bookId}.html") - public String indexList(@PathVariable("bookId") Long bookId, Model model) { + public String indexList(@PathVariable("bookId") Long bookId, HttpServletResponse resp, Model model) { Book book = bookService.queryBookDetail(bookId); + if(book == null){ + resp.sendError(HttpServletResponse.SC_NOT_FOUND); + return null; + } model.addAttribute("book",book); List bookIndexList = bookService.queryIndexList(bookId,null,1,null); model.addAttribute("bookIndexList",bookIndexList); @@ -125,13 +137,18 @@ public class PageController extends BaseController{ /** * 内容页 * */ + @SneakyThrows @RequestMapping("/book/{bookId}/{bookIndexId}.html") - public String indexList(@PathVariable("bookId") Long bookId,@PathVariable("bookIndexId") Long bookIndexId, HttpServletRequest request,Model model) { + public String indexList(@PathVariable("bookId") Long bookId,@PathVariable("bookIndexId") Long bookIndexId, HttpServletRequest request, HttpServletResponse resp,Model model) { //查询书籍 Book book = bookService.queryBookDetail(bookId); - model.addAttribute("book",book); //查询目录 BookIndex bookIndex = bookService.queryBookIndex(bookIndexId); + if(book == null || bookIndex == null){ + resp.sendError(HttpServletResponse.SC_NOT_FOUND); + return null; + } + model.addAttribute("book",book); model.addAttribute("bookIndex",bookIndex); //查询上一章节目录ID Long preBookIndexId = bookService.queryPreBookIndexId(bookId,bookIndex.getIndexNum()); diff --git a/novel-front/src/main/java/com/java2nb/novel/core/config/ErrorPageConfig.java b/novel-front/src/main/java/com/java2nb/novel/core/config/ErrorPageConfig.java new file mode 100644 index 0000000..1dd2d6f --- /dev/null +++ b/novel-front/src/main/java/com/java2nb/novel/core/config/ErrorPageConfig.java @@ -0,0 +1,25 @@ +package com.java2nb.novel.core.config; + +import org.springframework.boot.web.server.ErrorPage; +import org.springframework.boot.web.server.ErrorPageRegistrar; +import org.springframework.boot.web.server.ErrorPageRegistry; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpStatus; + +/** + * 错误页面配置 + * @author xiongxiaoyang + */ +@Configuration +public class ErrorPageConfig implements ErrorPageRegistrar { + + @Override + public void registerErrorPages(ErrorPageRegistry registry) { + /*1.错误类型为404,默认显示404.html网页*/ + ErrorPage e404 = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"); + /** + TODO 2.错误类型为500,表示服务器响应错误,默认显示/500.html网页 + */ + registry.addErrorPages(e404); + } +} diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java index baae58b..6996981 100644 --- a/novel-front/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java +++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java @@ -235,7 +235,8 @@ public class BookServiceImpl implements BookService { .where(id, isEqualTo(bookId)) .build() .render(RenderingStrategies.MYBATIS3); - return bookMapper.selectMany(selectStatement).get(0); + List books = bookMapper.selectMany(selectStatement); + return books.size() > 0 ? books.get(0) : null; } @Override @@ -264,7 +265,8 @@ public class BookServiceImpl implements BookService { .where(BookIndexDynamicSqlSupport.id, isEqualTo(bookIndexId)) .build() .render(RenderingStrategies.MYBATIS3); - return bookIndexMapper.selectMany(selectStatement).get(0); + List bookIndices = bookIndexMapper.selectMany(selectStatement); + return bookIndices.size() > 0 ? bookIndices.get(0) : null; } @Override diff --git a/novel-front/src/main/resources/static/images/404.jpeg b/novel-front/src/main/resources/static/images/404.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..1308714de3cc33cc89b24ea6e1d855b22b4398e5 GIT binary patch literal 9702 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 literal 0 HcmV?d00001 diff --git a/novel-front/src/main/resources/templates/404.html b/novel-front/src/main/resources/templates/404.html new file mode 100644 index 0000000..47cb326 --- /dev/null +++ b/novel-front/src/main/resources/templates/404.html @@ -0,0 +1,17 @@ + + + + + Page Not Found + + + + + + + \ No newline at end of file