From ca798314e38fdd6963f5a137f7941e1c451302c8 Mon Sep 17 00:00:00 2001 From: xxy <773861846@qq.com> Date: Sat, 2 May 2020 18:26:18 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../novel/controller/BaseController.java | 11 +++---- .../novel/controller/PageController.java | 12 ++++---- .../novel/core/filter/NovelFilter.java | 21 ++++++++------ .../java2nb/novel/core/utils/Constants.java | 5 ++++ .../java2nb/novel/core/utils/CookieUtil.java | 29 +++++++++++++++++++ ...TemplateUtil.java => ThreadLocalUtil.java} | 17 +++++++++-- .../templates/mobile/book/book_ranking.html | 7 ++++- .../resources/templates/mobile/index.html | 4 +++ 8 files changed, 81 insertions(+), 25 deletions(-) create mode 100644 novel-front/src/main/java/com/java2nb/novel/core/utils/CookieUtil.java rename novel-front/src/main/java/com/java2nb/novel/core/utils/{TemplateUtil.java => ThreadLocalUtil.java} (72%) diff --git a/novel-front/src/main/java/com/java2nb/novel/controller/BaseController.java b/novel-front/src/main/java/com/java2nb/novel/controller/BaseController.java index 0b87f9e..0df2607 100644 --- a/novel-front/src/main/java/com/java2nb/novel/controller/BaseController.java +++ b/novel-front/src/main/java/com/java2nb/novel/controller/BaseController.java @@ -1,6 +1,7 @@ package com.java2nb.novel.controller; import com.java2nb.novel.core.bean.UserDetails; +import com.java2nb.novel.core.utils.CookieUtil; import com.java2nb.novel.core.utils.JwtTokenUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -17,13 +18,9 @@ public class BaseController { protected String getToken(HttpServletRequest request){ - Cookie[] cookies = request.getCookies(); - if(cookies != null) { - for (Cookie cookie : cookies) { - if (cookie.getName().equals("Authorization")) { - return cookie.getValue(); - } - } + String token = CookieUtil.getCookie(request,"Authorization"); + if(token != null){ + return token; } return request.getHeader("Authorization"); } 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 129b4f5..3a5e293 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 @@ -1,6 +1,6 @@ package com.java2nb.novel.controller; -import com.java2nb.novel.core.utils.TemplateUtil; +import com.java2nb.novel.core.utils.ThreadLocalUtil; import com.java2nb.novel.entity.Book; import com.java2nb.novel.entity.BookContent; import com.java2nb.novel.entity.BookIndex; @@ -49,7 +49,7 @@ public class PageController{ * */ @RequestMapping(path = {"/", "/index", "/index.html"}) public String index() { - return TemplateUtil.getTemplateDir()+"index"; + return ThreadLocalUtil.getTemplateDir()+"index"; } /** @@ -66,7 +66,7 @@ public class PageController{ @RequestMapping("book/book_ranking.html") public String bookRank() { - return TemplateUtil.getTemplateDir()+"book/book_ranking"; + return ThreadLocalUtil.getTemplateDir()+"book/book_ranking"; } @@ -80,7 +80,7 @@ public class PageController{ //查询首章目录ID Long firstBookIndexId = bookService.queryFirstBookIndexId(bookId); model.addAttribute("firstBookIndexId",firstBookIndexId); - return TemplateUtil.getTemplateDir()+"book/book_detail"; + return ThreadLocalUtil.getTemplateDir()+"book/book_detail"; } /** @@ -93,7 +93,7 @@ public class PageController{ List bookIndexList = bookService.queryIndexList(bookId,null,null); model.addAttribute("bookIndexList",bookIndexList); model.addAttribute("bookIndexCount",bookIndexList.size()); - return TemplateUtil.getTemplateDir()+"book/book_index"; + return ThreadLocalUtil.getTemplateDir()+"book/book_index"; } /** @@ -116,7 +116,7 @@ public class PageController{ //查询内容 BookContent bookContent = bookService.queryBookContent(bookIndex.getId()); model.addAttribute("bookContent",bookContent); - return TemplateUtil.getTemplateDir()+"book/book_content"; + return ThreadLocalUtil.getTemplateDir()+"book/book_content"; } /** diff --git a/novel-front/src/main/java/com/java2nb/novel/core/filter/NovelFilter.java b/novel-front/src/main/java/com/java2nb/novel/core/filter/NovelFilter.java index fbdf1e1..f0d464e 100644 --- a/novel-front/src/main/java/com/java2nb/novel/core/filter/NovelFilter.java +++ b/novel-front/src/main/java/com/java2nb/novel/core/filter/NovelFilter.java @@ -2,13 +2,10 @@ package com.java2nb.novel.core.filter; import com.java2nb.novel.core.cache.CacheKey; import com.java2nb.novel.core.cache.CacheService; -import com.java2nb.novel.core.utils.BrowserUtil; -import com.java2nb.novel.core.utils.Constants; -import com.java2nb.novel.core.utils.SpringUtil; -import com.java2nb.novel.core.utils.TemplateUtil; -import org.springframework.beans.factory.annotation.Value; +import com.java2nb.novel.core.utils.*; import javax.servlet.*; +import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; @@ -53,23 +50,29 @@ public class NovelFilter implements Filter { } + String userMark = CookieUtil.getCookie(req,Constants.USER_CLIENT_MARK); + if(userMark == null){ + userMark = UUIDUtil.getUUID32(); + CookieUtil.setCookie(resp,Constants.USER_CLIENT_MARK,userMark); + } + ThreadLocalUtil.setCientId(userMark); //根据浏览器类型选择前端模板 String to = req.getParameter("to"); CacheService cacheService = SpringUtil.getBean(CacheService.class); if("pc".equals(to)){ //直接进PC站 - cacheService.set(CacheKey.TEMPLATE_DIR_KEY,"",60*60*24); + cacheService.set(CacheKey.TEMPLATE_DIR_KEY+userMark,"",60*60*24); }else if("mobile".equals(to)){ //直接进手机站 - cacheService.set(CacheKey.TEMPLATE_DIR_KEY,"mobile/",60*60*24); + cacheService.set(CacheKey.TEMPLATE_DIR_KEY+userMark,"mobile/",60*60*24); }else{ //自动识别是PC站还是手机站 if(BrowserUtil.isMobile(req)){ //手机端访问 - TemplateUtil.setTemplateDir("mobile/"); + ThreadLocalUtil.setTemplateDir("mobile/"); }else{ //PC端访问 - TemplateUtil.setTemplateDir(""); + ThreadLocalUtil.setTemplateDir(""); } } diff --git a/novel-front/src/main/java/com/java2nb/novel/core/utils/Constants.java b/novel-front/src/main/java/com/java2nb/novel/core/utils/Constants.java index 8a2eb76..b69eec3 100644 --- a/novel-front/src/main/java/com/java2nb/novel/core/utils/Constants.java +++ b/novel-front/src/main/java/com/java2nb/novel/core/utils/Constants.java @@ -15,4 +15,9 @@ public class Constants { * 本地图片保存前缀 * */ public static final String LOCAL_PIC_PREFIX = "/localPic/"; + + /** + * 用户客户端标识 + * */ + public static final String USER_CLIENT_MARK = "userClientMark"; } diff --git a/novel-front/src/main/java/com/java2nb/novel/core/utils/CookieUtil.java b/novel-front/src/main/java/com/java2nb/novel/core/utils/CookieUtil.java new file mode 100644 index 0000000..7fd4f0d --- /dev/null +++ b/novel-front/src/main/java/com/java2nb/novel/core/utils/CookieUtil.java @@ -0,0 +1,29 @@ +package com.java2nb.novel.core.utils; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @author Administrator + */ +public class CookieUtil { + + public static String getCookie(HttpServletRequest request,String key){ + Cookie[] cookies = request.getCookies(); + if(cookies != null) { + for (Cookie cookie : cookies) { + if (cookie.getName().equals(key)) { + return cookie.getValue(); + } + } + } + return null; + } + public static void setCookie(HttpServletResponse response,String key,String value){ + Cookie cookie = new Cookie(key, value); + cookie.setPath("/"); + response.addCookie(cookie); + } + +} diff --git a/novel-front/src/main/java/com/java2nb/novel/core/utils/TemplateUtil.java b/novel-front/src/main/java/com/java2nb/novel/core/utils/ThreadLocalUtil.java similarity index 72% rename from novel-front/src/main/java/com/java2nb/novel/core/utils/TemplateUtil.java rename to novel-front/src/main/java/com/java2nb/novel/core/utils/ThreadLocalUtil.java index d7e9106..2c63f4c 100644 --- a/novel-front/src/main/java/com/java2nb/novel/core/utils/TemplateUtil.java +++ b/novel-front/src/main/java/com/java2nb/novel/core/utils/ThreadLocalUtil.java @@ -7,13 +7,18 @@ import com.java2nb.novel.core.cache.CacheService; * 模板操作工具类 * @author Administrator */ -public class TemplateUtil { +public class ThreadLocalUtil { /** * 存储当前线程访问的模板目录 * */ private static ThreadLocal templateDir = new ThreadLocal<>(); + /** + * 存储当前会话的sessionID + * */ + private static ThreadLocal clientId = new ThreadLocal<>(); + /** * 设置当前应该访问的模板目录 * */ @@ -26,12 +31,20 @@ public class TemplateUtil { * */ public static String getTemplateDir(){ CacheService cacheService = SpringUtil.getBean(CacheService.class); - String prefix = cacheService.get(CacheKey.TEMPLATE_DIR_KEY); + String prefix = cacheService.get(CacheKey.TEMPLATE_DIR_KEY+clientId.get()); if(prefix != null){ return prefix; } return templateDir.get(); } + + /** + * 设置当前访问线程的客户端ID + * */ + public static void setCientId(String id){ + clientId.set(id); + } + } diff --git a/novel-front/src/main/resources/templates/mobile/book/book_ranking.html b/novel-front/src/main/resources/templates/mobile/book/book_ranking.html index 9e6d2a3..123f9d5 100644 --- a/novel-front/src/main/resources/templates/mobile/book/book_ranking.html +++ b/novel-front/src/main/resources/templates/mobile/book/book_ranking.html @@ -179,6 +179,11 @@ for (var i = 0; i < bookList.length; i++) { var book = bookList[i]; + var end = book.bookDesc.indexOf("<"); + if(end != -1) { + book.bookDesc = book.bookDesc.substring(0,end); + } + bookListHtml += ("