轉發頁面:html
通常都是controller將數據轉發到指定的模板上,模板引擎(視圖解析器)(modelAndView)幫咱們去渲染頁面,而後將渲染好的頁面發給瀏覽器
另外一種作法是,咱們去用模板引擎加載數據,提早產生好頁面,將這個頁面的html語句做爲json發送給瀏覽器redis
@RequestMapping(value="/to_list",produces = "text/html") @ResponseBody public String list(HttpServletRequest request, HttpServletResponse response, Model model, MiaoshaUser user) { // 通常是token,而後對token從redis取user,user爲空拋異常跳轉(或者給出異常json),這裏經過argumentResolver來封裝成user; //取緩存 String html = redisService.get(GoodsKey.getGoodsList, "", String.class); if(!StringUtils.isEmpty(html)) { return html; } List<GoodsVo> goodsList = goodsService.listGoodsVo(); model.addAttribute("goodsList", goodsList); /* return "goods_list"; 普通轉發頁面*/ SpringWebContext ctx = new SpringWebContext(request,response, request.getServletContext(),request.getLocale(), model.asMap(), applicationContext ); //手動渲染 html = thymeleafViewResolver.getTemplateEngine().process("goods_list", ctx);//兩個參數,一個模板名稱,一個是IContext的實現類 //存入的不是list數據,而是整個靜態頁面級的緩存 if(!StringUtils.isEmpty(html)) { redisService.set(GoodsKey.getGoodsList, "", html); } return html; }