f_html.createNewFile()
要想生成html页面的话,容器会替我们直接把jsp编译成servlet输出成html静态页面进行展示。
你要像手动输出html的展示内容可以自己写一个servlet,使用output方法输出html标签代码段直接打印到客户端。
还有如果你想写入html文件的话,你可以通过fileinput字节写入。(这种写法servlet教程上很多实例,包括如何生成文件,如何通过字节或者字符流的形式写入和保存)
不是很明白你的需求。这么说吧,要想生成html页面的话,容器会替我们直接把jsp编译成servlet输出成html静态页面进行展示。
你要像手动输出html的展示内容可以自己写一个servlet,使用output方法输出html标签代码段直接打印到客户端。
还有如果你想写入html文件的话,你可以通过fileinput字节写入。(这种写法servlet教程上很多实例,包括如何生成文件,如何通过字节或者字符流的形式写入和保存)
那么你问的是哪一种呢?
@RequestMapping("download")public void exportWord( HttpServletRequest request, HttpServletResponse response)
throws Exception {
User user = AppContext.getLoginUser()
Student student = studentSvc.findByUserId(user.getId())
try {
//word内容
String content="<html><body></body></html>"
byte b[] = content.getBytes("utf-8") //这里是必须要设置编码的,不然导出中文就会乱码。
ByteArrayInputStream bais = new ByteArrayInputStream(b)//将字节数组包装到流中
/*
* 关键地方
* 生成word格式
*/
POIFSFileSystem poifs = new POIFSFileSystem()
DirectoryEntry directory = poifs.getRoot()
DocumentEntry documentEntry = directory.createDocument("WordDocument", bais)
//输出文件
String fileName="实习考核鉴定表"
request.setCharacterEncoding("utf-8")
response.setContentType("application/msword")//导出word格式
response.addHeader("Content-Disposition", "attachmentfilename=" +
new String( (fileName + ".doc").getBytes(),
"iso-8859-1"))
OutputStream ostream = response.getOutputStream()
poifs.writeFilesystem(ostream)
bais.close()
ostream.close()
}catch(Exception e){
AppUtils.logError("导出出错:%s", e.getMessage())
}
}