A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 谷粒姐姐 于 2018-9-28 15:28 编辑

商品详情页-数据显示
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 包,包下创建接口
[AppleScript] 纯文本查看 复制代码
/**

*商品详细页接口

*@author  Administrator

*

*/

public  interface  ItemPageService  {

/**

*生成商品详细页

*@param  goodsId

*/

public  boolean  genItemHtml(Long  goodsId);

}
2.1.1 服务实现层
(1)创建 war 工程 pinyougou-page-service
(2)pom.xml 引入依赖 参见其它服务工程, 另外添加 freemarker 依赖
[AppleScript] 纯文本查看 复制代码
<dependency>

<groupId>org.freemarker</groupId>

<artifactId>freemarker</artifactId>

</dependency>
(3)添加 web.xml 参见其它服务工程
(4)spring 配置文件 参见其它服务工程 ,另外配置:
[AppleScript] 纯文本查看 复制代码
<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)创建属性文件
内容为:
[AppleScript] 纯文本查看 复制代码
pagedir=d:\\item\\
用于配置网页生成目录
(6)建立 com.pinyougou.page.service.impl 包,包下建立类
[AppleScript] 纯文本查看 复制代码
@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 ,将商品名称用插值代替
[AppleScript] 纯文本查看 复制代码
<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 中新增方法
[AppleScript] 纯文本查看 复制代码
@Reference(timeout=40000)

private  ItemPageService  itemPageService;

/**

*生成静态页(测试)

*@param  goodsId

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马