Freemarker

实现商品页面静态化

ActiveMQ
使用topic模式,添加商品时
监听到消息,根据商品id
从数据库中查询商品信息,生成静态页面

注意
不从redis中获取商品信息
添加商品时,redis没有该商品信息
根据商品id,从数据库中查询商品信息

不直接传递商品信息,而是根据id,从数据库中查询
因为,不在一个项目中,静态化页面是一个独立的项目
传输数据的效率不高,修改商品信息时,也需要更新静态页面

引入ActiveMQ

<!-- activemq的jar包 -->
<dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId>
</dependency>

监听器

ItemAddMesssageListener
public class ItemAddMesssageListener implements MessageListener {@Autowiredprivate ItemService itemService;@Autowiredprivate FreeMarkerConfigurer freeMarkerConfigurer;@Value("${HTML_OUT_PATH}")private String HTML_OUT_PATH;@Overridepublic void onMessage(Message message) {try {//从消息中取商品idTextMessage textMessage = (TextMessage) message;String strId = textMessage.getText();Long itemId = Long.parseLong(strId);//等待事务提交Thread.sleep(1000);//根据商品id查询商品信息及商品描述TbItem tbItem = itemService.getItemById(itemId);Item item = new Item(tbItem);TbItemDesc itemDesc = itemService.getItemDescById(itemId);//使用freemarker生成静态页面Configuration configuration = freeMarkerConfigurer.getConfiguration();//1.创建模板//2.加载模板对象Template template = configuration.getTemplate("item.ftl");//3.准备模板需要的数据Map data = new HashMap<>();data.put("item", item);data.put("itemDesc", itemDesc);//4.指定输出的目录及文件名Writer out = new FileWriter(new File(HTML_OUT_PATH + strId + ".html"));//5.生成静态页面template.process(data, out);//关闭流out.close();} catch (Exception e) {e.printStackTrace();}}
}

配置监听器

springmvc-activemq.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"><!-- JMS服务厂商提供的ConnectionFactory --><bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"><constructor-arg name="brokerURL" value="tcp://192.168.25.168:61616"/></bean><!-- spring对象ConnectionFactory的封装 --><bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"><property name="targetConnectionFactory" ref="targetConnectionFactory"></property></bean><bean id="itemAddTopic" class="org.apache.activemq.command.ActiveMQTopic"><constructor-arg name="name" value="item-add-topic"></constructor-arg></bean><bean id="itemAddMessageListener" class="com.taotao.item.listener.ItemAddMesssageListener"/><bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"><property name="connectionFactory" ref="connectionFactory" /><property name="destination" ref="itemAddTopic" /><property name="messageListener" ref="itemAddMessageListener" /></bean>
</beans>

加载配置文件

Web.xml中配置Servlet

<!-- 前端控制器 -->
<servlet><servlet-name>taotao-item-web</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- contextConfigLocation不是必须的, 如果不配置contextConfigLocation, springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/springmvc*.xml</param-value></init-param><load-on-startup>1</load-on-startup>
</servlet>

Freemarker静态化ActiveMQ实现相关推荐

  1. Freemarker静态化页面的使用

    Freemarker 是一种基于模板的,用来生成输出文本的通用工具,所以我们必须要定制符合自己业务的模板,然后生成自己的文本(html页面,string字符串,xml文本等等).Freemarker是 ...

  2. FreeMarker静态化文件解决SEO推广问题

    1.问题背景 SEO一直是网站对外推广的一个重要手段,如何能够让搜索引擎快速搜索到网站对于增强网站的浏量,提升网站对外形象有着重要意义.那么怎样能够对SEO进行优化呢?一个非常常用的手段就是在网页的关 ...

  3. 关于freemarker静态化,生成html页面乱码的问题(亲测有效)

    freemarker生成html页面的时候出现了中文乱码的问题 在网上也查了下大致给了以下几种解决方案 首先是说ftl文件的head标签,加上 <meta http-equiv="Co ...

  4. Freemarker网页静态化

    1 课程计划 第九天: 1.使用freemarker实现网页静态化 a )  FreeMarker的使用方法 b )  FreeMarker的模板语法 c )  FreeMarker整合springm ...

  5. html怎么转换成ftl模板,FreeMarker入门+模板静态化+模板字符串静态化

    只是根据模板的内容,将数据模型在模板中显示并输出文件(通常为html,也可以生成其它格式的文本文件) 数据模型:数据模型在java中可以是基本类型也可以List.Map.Pojo等复杂类型 模板 输出 ...

  6. Freemarker页面静态化

    1 FreeMarker 研究 1.1 FreeMarker介绍 1.freemarker是一个用Java开发的模板引擎 常用的java模板引擎还有哪些? Jsp.Freemarker.Thymele ...

  7. 学成在线 第4天 讲义-页面静态化 页面预览

    1页面静态化需求 1.为什么要进行页面管理? 本项目cms系统的功能就是根据运营需要,对门户等子系统的部分页面进行管理,从而实现快速根据用户需求修改 页面内容并上线的需求. 2.如何修改页面的内容? ...

  8. 网页静态化技术Freemarker

    网页静态化技术Freemarker 一.Freemarker的基本介绍 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道 ...

  9. 【工具类】页面静态化 --- Freemarker的使用

    介绍 FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP. ...

最新文章

  1. AtcoderCodeForces杂题11.6
  2. 重磅!深度学习知识总结和调参技巧开放下载了
  3. 为什么说Transformer就是图神经网络?
  4. linux 系统lv扩展_Linux增加LV(逻辑卷)容量
  5. [bzoj 3594] [Scoi2014]方伯伯的玉米田
  6. 【模板篇】树状数组们(三)
  7. 网管开始往ITSM迁移(第二季)
  8. CODING Pages 服务全面升级,更快更稳更可靠!
  9. 如何画出一张合格的技术架构图?
  10. m2增长率曲线_中国通胀率(中国m2历年数据曲线图)
  11. 计算机文件搜索快捷方式,文件搜索快捷键是什么
  12. 给你的公众号添加一个智能机器人
  13. OSPF之Stub区域
  14. glibc源码下载在线阅读地址
  15. 2018-1-27工作周总结
  16. USB转多路串口 USB hub USB扩展
  17. Android之Mob第三方短信验证服务
  18. DNS协议——域名解析
  19. Camels and Bridge[ARC105C][二分+Dp]
  20. MySQL数据备份批处理

热门文章

  1. 填充路径时使用的非零环绕规则
  2. 统一的定义导航栏的背景颜色(NavigationController)
  3. Ubuntu文件中文乱码
  4. android开发 权限大全
  5. 一个好的软件开发人员的标准
  6. ubuntu 12.04下搭建web服务器(MySQL+PHP+Apache) 教程
  7. java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)
  8. C++ Primer 5th笔记(2)chapter 2变量和基本类型
  9. Exclusive monitor在spinlock中的应用
  10. [How TO]-外网访问自己的HTTP服务器