Java之下载word文档,linux视频监控
第二步:將ftl文件放入項(xiàng)目中。編寫下載word的java代碼。
項(xiàng)目的文件存放位置。
項(xiàng)目是比較簡(jiǎn)單的web項(xiàng)目,使用的是Struts2。下面是web.xml中的配置,一切從簡(jiǎn)。
只有一個(gè)簡(jiǎn)單的跳轉(zhuǎn),當(dāng)鏈接訪問/saveDocServlet的時(shí)候請(qǐng)求會(huì)進(jìn)入MyServlet中,進(jìn)行邏輯處理。
下面是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();
// 通過循環(huán)將表單參數(shù)放入鍵值對(duì)映射中
while (paramNames.hasMoreElements()) {
String key = paramNames.nextElement();
String value = req.getParameter(key);
map.put(key, value);
}*/
map.put(“topic”, “我是標(biāo)題”);
map.put(“module”, “我是模塊”);
// 提示:在調(diào)用工具類生成Word文檔之前應(yīng)當(dāng)檢查所有字段是否完整
// 否則Freemarker的模板殷勤在處理時(shí)可能會(huì)因?yàn)檎也坏街刀鴪?bào)錯(cuò) 這里暫時(shí)忽略這個(gè)步驟了
File file = null;
InputStream fin = null;
ServletOutputStream out = null;
try {
// 調(diào)用工具類WordGenerator的createDoc方法生成Word文檔
file = WordGenerator.createDoc(map, “resume”);
fin = new FileInputStream(file);
resp.setCharacterEncoding(“utf-8”);
resp.setContentType(“application/msword”);
// 設(shè)置瀏覽器以下載的方式處理該文件默認(rèn)名為resume.doc
resp.addHeader(“Content-Disposition”,"attachment;filename=r
《一線大廠Java面試題解析+后端開發(fā)學(xué)習(xí)筆記+最新架構(gòu)講解視頻+實(shí)戰(zhàn)項(xiàng)目源碼講義》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整內(nèi)容開源分享
esume.doc");
out = resp.getOutputStream();
byte[] buffer = new byte[512]; // 緩沖區(qū)
int bytesToRead = -1;
// 通過循環(huán)將讀入的Word文件的內(nèi)容輸出到瀏覽器中
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(); // 刪除臨時(shí)文件
}
}
}
map中key值對(duì)應(yīng)ftl模板${topic}中的屬性,可以直接取到key值對(duì)應(yīng)的value值。value值可以是寫死的,可以是前后臺(tái)交互的變量,上面代碼中注釋的是其中一部分,稍加擴(kuò)展就可以實(shí)現(xiàn)。
上面代碼中引用到一個(gè)生成word文件的工具類WordGenerator.createDoc(map,“resume”)
下面是工具類的對(duì)應(yīng)的代碼:
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 鉆石語法
*/
allTemplates = new HashMap<String, Template>();
try {
allTemplates.put(“resume”, configuration.getTemplate(“resume.ftl”));
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
總結(jié)
以上是生活随笔為你收集整理的Java之下载word文档,linux视频监控的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蛮力算法解决问题(c语言)
- 下一篇: Linux下WebLogic12安装