Java之下载word文档,linux视频监控
第二步:將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();
// 通過循環將表單參數放入鍵值對映射中
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=r
《一線大廠Java面試題解析+后端開發學習筆記+最新架構講解視頻+實戰項目源碼講義》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整內容開源分享
esume.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 鉆石語法
*/
allTemplates = new HashMap<String, Template>();
try {
allTemplates.put(“resume”, configuration.getTemplate(“resume.ftl”));
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
總結
以上是生活随笔為你收集整理的Java之下载word文档,linux视频监控的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蛮力算法解决问题(c语言)
- 下一篇: Linux下WebLogic12安装