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

本文介绍了如何使用Freemarker技术实现商品详情页的静态化,包括工程搭建、模板构建和前端逻辑。通过服务接口层、服务实现层的设置,以及在商品详情页中生成基本数据、图片列表、扩展属性、规格列表和商品类型面包屑等,实现了动态商品信息的静态展示。同时,文章还讨论了前端的购买数量加减操作、规格选择以及读取SKU信息等功能。
摘要由CSDN通过智能技术生成

商品详情页-数据显示

运用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-nam
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>