Skip to content

Commit

Permalink
提交 页面级缓存 basecntroller
Browse files Browse the repository at this point in the history
  • Loading branch information
qiurunze committed Dec 10, 2018
1 parent 984f922 commit 5e0213d
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 14 deletions.
65 changes: 65 additions & 0 deletions src/main/java/com/geekq/miaosha/controller/BaseController.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
16 changes: 2 additions & 14 deletions src/main/java/com/geekq/miaosha/controller/GoodsController.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

@Controller
@RequestMapping("/goods")
public class GoodsController {
public class GoodsController extends BaseController {
private static Logger log = LoggerFactory.getLogger(GoodsController.class);

@Autowired
Expand All @@ -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<GoodsVo> 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")
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 5e0213d

Please sign in to comment.