Java之品优购课程讲义_day12(4)

商品详情页-数据显示
2.1 需求分析运用 Freemarker 技术来实现商品详细页的静态化。通过地址栏输入某地址,如下形式
http://localhost:9101/gen_item.do?goodsId=149187842867952

能在本地电脑某目录生成商品详细页,页面的名称为商品 id.html
2.2 工程搭建
2.2.1 服务接口层
创建 pinyougou-page-interface 工程,创建 com.pinyougou.page.service 包,包下创建接口

/**

*商品详细页接口

*@author  Administrator

*

*/

public  interface  ItemPageService  {

/**

*生成商品详细页

*@param  goodsId

*/

public  boolean  genItemHtml(Long  goodsId);

}

2.1.1 服务实现层
(1)创建 war 工程 pinyougou-page-service
(2)pom.xml 引入依赖 参见其它服务工程, 另外添加 freemarker 依赖

<dependency>

<groupId>org.freemarker</groupId>

<artifactId>freemarker</artifactId>

</dependency>

(3)添加 web.xml 参见其它服务工程
(4)spring 配置文件 参见其它服务工程 ,另外配置:

<bean  id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

<property  name="templateLoaderPath"  value="/WEB-INF/ftl/"  />

<property  name="defaultEncoding"  value="UTF-8"  />

</bean>

(5)创建属性文件
Java之品优购课程讲义_day12(4)
内容为:

pagedir=d:\\item\\
用于配置网页生成目录
(6)建立 com.pinyougou.page.service.impl 包,包下建立类

@Service

public  class  ItemPageServiceImpl  implements  ItemPageService  {

@Value("${pagedir}")

private  String  pagedir;

@Autowired

private  FreeMarkerConfig  freeMarkerConfig;

@Autowired

private  TbGoodsMapper  goodsMapper;

@Autowired

private  TbGoodsDescMapper  goodsDescMapper;

@Override

public  boolean  genItemHtml(Long  goodsId){

try {

Configuration  configuration  =  freeMarkerConfig.getConfiguration(); Template  template  =  configuration.getTemplate("item.ftl");
Map  dataModel=new  HashMap<>();

//1.加载商品表数据
TbGoods  goods  =  goodsMapper.selectByPrimaryKey(goodsId); dataModel.put("goods",  goods);
//2.加载商品扩展表数据

TbGoodsDesc  goodsDesc  =  goodsDescMapper.selectByPrimaryKey(goodsId); dataModel.put("goodsDesc",  goodsDesc);
Writer  out=new  FileWriter(pagedir+goodsId+".html"); template.process(dataModel,  out);
out.close();

return  true;

}  catch  (Exception  e)  { e.printStackTrace(); return  false;
}

}

}

(7)将 item.html 拷贝至 web-inf/ftl 下 ,修改扩展名为 ftl ,将商品名称用插值代替

<div  class="sku-name">

<h4>${goods.goodsName}</h4>

</div>

(8)在 D 盘建立文件夹 item,将必要的样式表和 Js 拷贝到此目录下,此目录为生成的目录
2.1.1 运营商管理后台
(1)pinyougou-manager-web 引入依赖 pinyougou-page-interface
(2)在 GoodsController.java 中新增方法

@Reference(timeout=40000)

private  ItemPageService  itemPageService;

/**

*生成静态页(测试)

*@param  goodsId

*/ @RequestMapping("/genHtml")
public  void  genHtml(Long  goodsId){ itemPageService.genItemHtml(goodsId);
}

猜你喜欢

转载自blog.51cto.com/13517854/2287178