运用Freemarker技术来实现商品详细页的静态化

商品详情页-数据显示

运用Freemarker技术来实现商品详细页的静态化。通过地址栏输入某地址,如下形式
http://localhost:9101/gen_item.do?goodsId=149187842867979
能在本地电脑某目录生成商品详细页,页面的名称为商品id.html

工程搭建

服务接口层
  • 创建pinyougou-page-interface工程
  • 创建com.pinyougou.page.service包
  • 包下创建接口ItemPageService
package com.pinyougou.page.service;
/**

* Title: ItemPageService

* Description: 生成页面
 
* @author: 张楚楚

* @date 2019年2月28日下午3:01:38

*/
public interface ItemPageService {

	/**
	 * 生成商品详细页
	 * @param goodsId
	 * @return
	 */
	public boolean genItemHtml(Long goodsId);
	
}

服务实现层
  • 创建war工程pinyougou-page-service
  • pom.xml引入依赖 参见其它服务工程, 另外添加freemarker依赖
<!-- freemarker -->
	<dependency>
		<groupId>org.freemarker</groupId>
		<artifactId>freemarker</artifactId>
	</dependency>  
  • 添加web.xml 参见其它服务工程

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">	
	
	<!-- 加载spring容器 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:spring/applicationContext*.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	
</web-app>
  • spring配置文件 参见其它服务工程 ,另外配置:
    这是spring提供的对freemarker支持的配置文件,属性分别为模板目录和字符集
    在WEB-INF下创建ftl目录
  <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>

网页生成目录也可写入配置文件中

  • 创建属性文件page.properties
    在这里插入图片描述
pagedir=d:\\item\\
  • 建立com.pinyougou.page.service.impl包
  • 包下建立类ItemPageServiceImpl
@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;
		}
	}
}
  • 将item.html拷贝至web-inf/ftl下
  • 修改扩展名为ftl
    在这里插入图片描述
  • 将商品名称用插值代替
<div class="sku-name">
	<h4>${goods.goodsName}</h4>
</div>

在D盘建立文件夹item,将必要的样式表和Js拷贝到此目录下,此目录为生成的目录 </

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值