您的位置 首页 > 数码极客

freemarker如何获取页面请求的参数?

主题词:Freemarker、freemarker与Spring的整合

  1. 常见的模板引擎

国内:Beetl enjoy

国外:freemarker velocity Thymeleaf

  1. 什么是Freemarker?
  2. FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
  3. FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据。
  4. 简单总结

What:是一个模板引擎,可以将模板和数据整合,生成静态页面

Why:提高高并发系统的响应性能,是一种缓存策略

When:对于频繁使用数据查询但是更新内容很少的应用

  1. 面试题:高并发网络架构解决方案分析

  1. Freemarker常用手册
  • 官网:
  • 英文手册:docs/index.html
  • 中文手册:
  • 基本原理


  • 需求1:使用freemarker在本地硬盘目录下生成html页面
  • 创建一个configuration对象。构造函数的参数就是对应的版本号
  • 设置模板文件所在的路径
  • 设置模板文件使用的字符集,使用UTF-8字符集
  • 加载模板,创建模板对象
  • 创建数据集,可以是POJO也可以是Map,多使用Map
  • 创建一个Writer对象,多创建FileWriter对象,并制定生成的文件名
  • 调用模板对象的process方法输出文件
  • 关闭流
  • 实际代码
​ @Test public void test1() throws Exception{ //创建配置对象 Configuration configuration = new Configuration()); //设置模板文件所在的路径 con(),"/ftl"); //设置字符集 con("UTF-8"); //创建模板对象 Template template = con("01.ftl"); //创建数据集 Map<String,Object> dataModel = new HashMap<String,Object>(); da("name", "丁昊成"); //创建Writer对象 Writer out = new FileWriter("d:/ftl;); //使用模板对象输出文件 (dataModel, out); //关闭流 out.close(); }
  • 学习站点:
  1. Freemarker与Spring整合
  • 需求2:完成商品详情页系统tt-item-web
  • 创建
<!-- 配置freemarker --> <bean id="freemarkerConfig" class="org.;> <property name="templateLoaderPath" value="/WEB-INF/ftl/" /> <property name="defaultEncoding" value="UTF-8" /> </bean>
  • 创建产生HtmlGenerateAction测试
@Controller public class HtmlGenerateAction { @Autowired private FreeMarkerConfigurer freeMarkerConfigurer; ​ @RequestMapping("/genhtml") @ResponseBody public String genHtml()throws Exception { // 1、从spring容器中获得FreeMarkerConfigurer对象。 // 2、从FreeMarkerConfigurer对象中获得Configuration对象。 Configuration configuration = (); // 3、使用Configuration对象获得Template对象。 Template template = con(";); // 4、创建数据集 Map<String, Object> dataModel = new HashMap<String, Object>(); da("hello", "1000"); // 5、创建输出文件的Writer对象。 Writer out = new FileWriter(new File("D:/ftl;)); // 6、调用模板对象的process方法,生成文件。 (dataModel, out); // 7、关闭流。 out.close(); return "OK"; } }
  • 创建消费者监听器
/** * 监听商品添加消息,生成对应的静态页面 */ public class HtmlGenListener implements messageListener { @Autowired private ItemService itemService; @Autowired private FreeMarkerConfigurer freeMarkerConfigurer; @Override public void onMessage(Message message) { try { //创建一个模板,参考jsp //从消息中取商品id TextMessage textMessage = (TextMessage) message; String text = (); Long itemId = new Long(text); //等待事务提交 (1000); //根据商品id查询商品信息,商品基本信息和商品描述。 TbItem tbItem = i(itemId); Item item = new Item(tbItem); //取商品描述 TbItemDesc itemDesc = i(itemId); //创建一个数据集,把商品数据封装 Map<String, Object> data = new HashMap<String, Object>(); da("item", item); da("itemDesc", itemDesc); //加载模板对象 Configuration configuration = (); Template template = con("i;); //创建一个输出流,指定输出的目录及文件名。 Writer out = new FileWriter("D:/ftl/" + itemId + ".html"); //生成静态页面。 (data, out); //关闭流 out.close(); } catch (Exception e) { e.printStackTrace(); } ​ } ​ }
  • 在配置文件中配置消费者)
<!-- 配置消费者 --> <!-- 监听商品添加消息,生成静态页面--> <bean id="htmlGenListener" class="com.d;/> <bean class="org.;> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="topicDestination" /> <property name="messageListener" ref="htmlGenListener" /> </bean>

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“freemarker如何获取页面请求的参数?,freemarker获取页面变量”边界阅读