springboot-No11-2: 页面优化技术 之 页面静态化技术简单实现(不采用Vue.js的方法)

惯用技法

目前常用的就是angularjs 和 Vue.js

利用浏览器来缓存我们的页面。

因此我们的页面要保证是纯静态的的页面,和后端的数据的交互都要通过 ajax来获取到数据.

思想:

  • 将我们的页面(比如详情页面)上的任何从request等内置对象中获取的操作删除掉 比如  ${}
  • 把要从后端获取的数据,在html上设置hidden来存储值。
  • 加入一个渲染的js函数,一旦请求了后端,那么就刷新这些hidden变量的值。
  • 任何跳转到该详情页面上的链接都不要通过请求后台来进行,就当当前的详情页面是一个静态的资源页面,回到我们当初直接跳转到html的时代
  • 直接指定该静态详情页的文件名进行跳转。


所以用我们这个springboot系列的应用来进行改造。

首先呢就是我们的Controller,这个方法要返回json数据,而不是放在model中供页面获取的。

因此返回值要更改下

Controller的修改,方法返回的json包含了Model中数据

/**
	 * 页面静态化的例子使用
	 * 
	 * @param model
	 * @param user
	 * @param goodsId
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "/detailStatic/{goodsId}")
	@ResponseBody
	public Result detailWithCache(HttpServletRequest request, HttpServletResponse response, User user,
			@PathVariable("goodsId") Long goodsId) throws Exception {

		GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId);
		long startAt = goods.getStartDate().getTime();
		long endAt = goods.getEndDate().getTime();
		long now = System.currentTimeMillis();

		int miaoshaStatus = 0;
		int remainSeconds = 0;
		if (now < startAt) {// 秒杀还没开始,倒计时
			miaoshaStatus = 0;
			// 单位是毫秒
			remainSeconds = (int) ((startAt - now) / 1000);
		} else if (now > endAt) {// 秒杀已经结束
			miaoshaStatus = 2;
			remainSeconds = -1;
		} else {// 秒杀进行中
			miaoshaStatus = 1;
			remainSeconds = 0;
		}

		GoodsDetailVo vo = new GoodsDetailVo();
		vo.setGoods(goods);
		vo.setUser(user);
		vo.setRemainSeconds(remainSeconds);
		vo.setMiaoshaStatus(miaoshaStatus);
		return Result.sucess(vo);
	}


商品列表请求方式修改

原来的请求方式:

详情

修改之后的请求方式: 直接跳转到静态页面

详情  

goods_detail.htm页面改造

  • 去掉之前使用  ${}  方式获取  Model中数据的代码,全部使用控件来替代
  • 页面上不含有直接从Model中获取数据的代码
  • 去掉Thymeleaf引入文件的那个符号  @{}
  • 之前凡是从Model中获取数据的地方全部使用ajax请求后台获取之后渲染到控件里面
  • 当前页面只使用js来请求后台





    商品详情
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    



秒杀商品详情
您还没有登录,请登陆后再操作
没有收货地址的提示。。。
商品名称
商品图片
秒杀开始时间
商品原价
秒杀价
库存数量


看看效果

springboot-No11-2: 页面优化技术 之 页面静态化技术简单实现(不采用Vue.js的方法)_第1张图片

springboot-No11-2: 页面优化技术 之 页面静态化技术简单实现(不采用Vue.js的方法)_第2张图片


你可能感兴趣的:(Java)