From 5e0213d3a70a31b9fe77bbc2b9339be3e031bf91 Mon Sep 17 00:00:00 2001 From: qiurunze Date: Mon, 10 Dec 2018 19:53:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=20=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E7=BA=A7=E7=BC=93=E5=AD=98=20basecntroller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miaosha/controller/BaseController.java | 65 +++++++++++++++++++ .../miaosha/controller/GoodsController.java | 16 +---- src/main/resources/application.properties | 2 + 3 files changed, 69 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/geekq/miaosha/controller/BaseController.java diff --git a/src/main/java/com/geekq/miaosha/controller/BaseController.java b/src/main/java/com/geekq/miaosha/controller/BaseController.java new file mode 100644 index 0000000..387ab0d --- /dev/null +++ b/src/main/java/com/geekq/miaosha/controller/BaseController.java @@ -0,0 +1,65 @@ +package com.geekq.miaosha.controller; + +import com.geekq.miaosha.redis.KeyPrefix; +import com.geekq.miaosha.redis.RedisService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.thymeleaf.context.WebContext; +import org.thymeleaf.spring4.view.ThymeleafViewResolver; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; + +@Controller +public class BaseController { + + + //加一个配置项 + @Value("#{'${pageCache.enbale}'}") + private boolean pageCacheEnable; + + @Autowired + ThymeleafViewResolver thymeleafViewResolver; + + @Autowired + RedisService redisService; + + + public String render(HttpServletRequest request, HttpServletResponse response, Model model, String tplName, KeyPrefix prefix, String key) { + if(!pageCacheEnable) { + return tplName; + } + //取缓存 + String html = redisService.get(prefix, key, String.class); + if(!StringUtils.isEmpty(html)) { + out(response, html); + return null; + } + //手动渲染 + WebContext ctx = new WebContext(request,response, + request.getServletContext(),request.getLocale(), model.asMap()); + html = thymeleafViewResolver.getTemplateEngine().process(tplName, ctx); + if(!StringUtils.isEmpty(html)) { + redisService.set(prefix, key, html); + } + out(response, html); + return null; + } + + public static void out(HttpServletResponse res, String html){ + res.setContentType("text/html"); + res.setCharacterEncoding("UTF-8"); + try{ + OutputStream out = res.getOutputStream(); + out.write(html.getBytes("UTF-8")); + out.flush(); + out.close(); + }catch(Exception e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/geekq/miaosha/controller/GoodsController.java b/src/main/java/com/geekq/miaosha/controller/GoodsController.java index 4b5a2c6..642030c 100644 --- a/src/main/java/com/geekq/miaosha/controller/GoodsController.java +++ b/src/main/java/com/geekq/miaosha/controller/GoodsController.java @@ -27,7 +27,7 @@ import java.util.List; @Controller @RequestMapping("/goods") -public class GoodsController { +public class GoodsController extends BaseController { private static Logger log = LoggerFactory.getLogger(GoodsController.class); @Autowired @@ -54,21 +54,9 @@ public class GoodsController { @ResponseBody public String list(HttpServletRequest request, HttpServletResponse response, Model model, MiaoshaUser user) { model.addAttribute("user", user); - //取缓存 - String html = redisService.get(GoodsKey.getGoodsList, "", String.class); - if(!StringUtils.isEmpty(html)) { - return html; - } List goodsList = goodsService.listGoodsVo(); model.addAttribute("goodsList", goodsList); - SpringWebContext ctx = new SpringWebContext(request,response, - request.getServletContext(),request.getLocale(), model.asMap(), applicationContext ); - //手动渲染 - html = viewResolver.getTemplateEngine().process("goods_list", ctx); - if(!StringUtils.isEmpty(html)) { - redisService.set(GoodsKey.getGoodsList, "", html); - } - return html; + return render(request,response,model,"goods_list",GoodsKey.getGoodsList,""); } @RequestMapping(value="/to_detail2/{goodsId}",produces="text/html") diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index bf7bb18..be31f04 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -6,6 +6,8 @@ spring.thymeleaf.content-type=text/html spring.thymeleaf.enabled=true spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.mode=HTML5 +#是否开启缓存 +pageCache.enbale=true #mybatis mybatis.type-aliases-package=com.geekq.miaosha.domain