使用notepad++或者其他工具打开xml文件,查看生成的模板是否正确。

符号和变量名没有被分开算正常。符号和变量名没有被分开算正常。符号和变量名没有被分开算正常。{topic}这几个符号是紧密相连的算正常。如果被分开的话,重新编辑一下,确保如我说的那样,其他变量类同。

最后将文件保存之后重命名,后缀由xml改为ftl。使得freemarker能识别相应的模板。

第二步:将ftl文件放入项目中。编写下载word的java代码。

项目的文件存放位置。

项目是比较简单的web项目,使用的是Struts2。下面是web.xml中的配置,一切从简。

只有一个简单的跳转,当链接访问/saveDocServlet的时候请求会进入MyServlet中,进行逻辑处理。

下面是MyServlet的代码;

package com.zhutong.servlet;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.Enumeration;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.zhutong.util.WordGenerator;

public class MyServlet extends HttpServlet {

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

req.setCharacterEncoding(“utf-8”);

Map<String, Object> map = new HashMap<String, Object>();

/* Enumeration paramNames = req.getParameterNames();

// 通过循环将表单参数放入键值对映

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

射中

while (paramNames.hasMoreElements()) {

String key = paramNames.nextElement();

String value = req.getParameter(key);

map.put(key, value);

}*/

map.put(“topic”, “我是标题”);

map.put(“module”, “我是模块”);

// 提示:在调用工具类生成Word文档之前应当检查所有字段是否完整

// 否则Freemarker的模板殷勤在处理时可能会因为找不到值而报错 这里暂时忽略这个步骤了

File file = null;

InputStream fin = null;

ServletOutputStream out = null;

try {

// 调用工具类WordGenerator的createDoc方法生成Word文档

file = WordGenerator.createDoc(map, “resume”);

fin = new FileInputStream(file);

resp.setCharacterEncoding(“utf-8”);

resp.setContentType(“application/msword”);

// 设置浏览器以下载的方式处理该文件默认名为resume.doc

resp.addHeader(“Content-Disposition”,“attachment;filename=resume.doc”);

out = resp.getOutputStream();

byte[] buffer = new byte[512]; // 缓冲区

int bytesToRead = -1;

// 通过循环将读入的Word文件的内容输出到浏览器中

while ((bytesToRead = fin.read(buffer)) != -1) {

out.write(buffer, 0, bytesToRead);

}

} finally {

if (fin != null)

fin.close();

if (out != null)

out.close();

if (file != null)

file.delete(); // 删除临时文件

}

}

}

map中key值对应ftl模板${topic}中的属性,可以直接取到key值对应的value值。value值可以是写死的,可以是前后台交互的变量,上面代码中注释的是其中一部分,稍加扩展就可以实现。

上面代码中引用到一个生成word文件的工具类WordGenerator.createDoc(map,“resume”)

下面是工具类的对应的代码:

package com.zhutong.util;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.HashMap;

import java.util.Map;

import freemarker.template.Configuration;

import freemarker.template.Template;

@SuppressWarnings(“deprecation”)

public class WordGenerator {

private static Configuration configuration = null;

private static HashMap<String, Template> allTemplates = null;

static {

configuration = new Configuration();

configuration.setDefaultEncoding(“utf-8”);

configuration.setClassForTemplateLoading(WordGenerator.class,"/com/zhutong/ftl");

/*

  • allTemplates = new HashMap<>(); // Java 7 钻石语法

*/

Java之下载word文档,java企业级应用架构相关推荐

  1. Java之下载word文档,linux视频监控

    第二步:将ftl文件放入项目中.编写下载word的java代码. 项目的文件存放位置. 项目是比较简单的web项目,使用的是Struts2.下面是web.xml中的配置,一切从简. 只有一个简单的跳转 ...

  2. 微信小程下载word文档Java后台实现

    微信小程序下载文件 开发环境:微信开发者工具+eclipse+Tomcat+Mysql 1.过程描述 微信开发者工具提供接口,访问eclipse中的Java项目地址,在对应的Java项目中从磁盘读取指 ...

  3. Java之下载word文档

    需求:web页面点击按钮,触发浏览器下载功能,预览或者保存word本地文件. 可预见的问题:java库选择的是freemarker.word基本的模板的制作. 我电脑的环境是tomcat6+jdk1. ...

  4. 关于java下载Word文档图片显示不全的问题

    关于java 从FTP下载Word文档图片显示不全的问题 最近想实现这样一个功能,从ftp服务器获取word文档下载下来,但是出现了一下问题: 本地启动的tomcat,可以下载word,图片显示正常: ...

  5. java下载word文档到本地

    普通的下载功能,不过依然有一个值得关注的重要点--请看到最后! ***HTML***按钮就不上了,你开心设计成button和a我都没有意见: ***JS***代码: function downLoad ...

  6. Java预览下载word文档(poi-tl、thymeleaf模板)

    主要功能 预览word文档 生成并下载word文档 实现 前端Vue代码 预览功能主要使用的是docx-preview下载方式如下: npm install docx-preview --save & ...

  7. 如何用java代码给Word文档添加水印?

    为防止非法使用.定义所有权.显示文档状态等多种目的,在 Word 文档中添加水印.在本文中,您将学习如何使用 Java 为 Word 文档添加水印.文章将分别演示如何将文字和图片水印插入到Word文档 ...

  8. world添加水印java,Java添加水印到Word文档

    水印是一种常用于各种文档的声明.防伪手段,一般可设置文字水印或者加载图片作为水印.以下内容将分享通过Java编程给Word文档添加水印效果的方法,即 文本水印 图片水印 使用工具:Free Spire ...

  9. 【Java实现导出Word文档功能 XDocReport +FreeMarker】

    Java实现导出Word文档功能(XDocReport +FreeMarker) 前言 在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表.医院的患者统计报表.电商平台的 ...

最新文章

  1. rt-thread的定时器管理源码分析
  2. Pokémon Go数据收集是否带来隐私问题
  3. 如何实现模糊查询LIKE
  4. 水晶报表提示“需要数字字段”
  5. KerasSeq2seqGeneration:基于seq2seq模型的文本生成任务项目
  6. split函数python统计英文单词_统计一篇英文文章单词个数,取出出现频次前10的单词(Python实现)...
  7. Spring、SpringBoot常见面试题与答案
  8. leetcode第一刷_Unique Binary Search Trees
  9. spring listener监听器
  10. 基于React 的前端UI开发框架 及与Electron 的结合 https://cxjs.io/
  11. Python基础-基本语法
  12. 年龄和收入对数的线性回归_(CFA教材详解)数量分析:线性回归模型的规范及常见错误...
  13. 苹果录制屏幕在哪设置_屏幕录像专家如何录全屏 屏幕录像专家全屏录制设置方法...
  14. Java的企业级开发项目--OA办公系统
  15. css 背景图片虚化磨砂效果
  16. 谢孟媛老师 初级文法学习笔记
  17. AI不仅要智能,更需要人文:联邦学习重构大数据风控范式
  18. 勃林格殷格翰战略入股新瑞鹏,进一步拓展中国宠物市场
  19. 图片和字符串相互转换
  20. 海南大学信号与系统838报考高频问题整理(五)

热门文章

  1. Firemonkey arm-linux-androideabi-ld.exe: previous definition here
  2. Gem5模拟器,详解官网教程Event-driven programming(五)
  3. 计算机主机启动不了系统安装系统安装软件,电脑主机启动不了怎么办
  4. 单片机0 10秒计时C语言,基于单片机的秒,分,时的精确计时实现
  5. 伦敦银价格换算 在线
  6. 汽车保养知识知多少?这篇文章让你秒懂
  7. 笔记:云相关基础知识
  8. 某厂向用户提供饲料matlab,Matlab习题
  9. SCI科技论文英语翻译的一点个人心得
  10. Java jdk14.0.1安装简单步骤