Weblogic读不到Word文件
之前遇到一导出word文件的需求,我的做法是把对应导出内容放到一个word文件中,把其中变化的内容作为变量,然后把该word文件放在WEB-INF目录下用来作为模板。在导出时通过ServletContext的getRealPath()方法获取到作为模板的word文件的真实路径,然后针对该路径new一个FileInputStream。之后通过该word的InputStream构造一个HWPFDocument,再对里面的变量进行替换后输出到response的输出流中。大概代码如下所示:
@WebServlet("/servlet/word/export.do") public class WordExportorServlet extends HttpServlet { /** * serialVersionUID */ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String wordName = "中国人"; //假设这是我们word文档导出的文件名 //假设这里获取到了word模板文件的相对于ServletContext根的路径 String path = "/template.doc"; ServletContext context = getServletContext(); //获取word模板文件的绝对路径 String realPath = context.getRealPath(path); //获取到作为模板的word文件的输入流 InputStream is = new FileInputStream(realPath); HWPFDocument doc = new HWPFDocument(is); Range range = doc.getRange(); //替换变量 range.replaceText("${xx}", "xxx"); response.setHeader("Content-Disposition", "attachment;filename=" + this.getFileName(wordName) + ""); OutputStream output = response.getOutputStream(); doc.write(output); output.close(); is.close(); } /** * 把wordName以ISO-8859-1编码,同时加上“.doc”后缀进行返回。 * @param wordName 要导出的word文件的名称 * @return */ private String getFileName(String wordName) { try { wordName = new String(wordName.getBytes("UTF-8"), "ISO-8859-1"); //防中文乱码 } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return wordName + ".doc"; } }
这种方式放在tomcat或runJetty上都是没有问题的,但是一旦打包放到weblogic上就不行了。原因是weblogic上访问的是未解压的包里面的内容,这个时候通过ServletContext的getRealPath()方法是获取不到模板文件基于硬盘的真实路径的,从而导致获取不到模板文件的输入流,也就不能利用它来生成新的Word文档进行导出了。解决方法是在获取模板文件对应的输入流时不要通过ServletContext获取到文件的真实路径后再通过FileInputStream去取对应的输入流,而是直接通过ServletContext的getResourceAsStream()方法来获取到ServletContext环境下的资源作为输入流。建议以后需要在Web环境下获取资源文件时都通过getResourceAsStream()来获取。
@WebServlet("/servlet/word/export.do") public class WordExportorServlet extends HttpServlet { /** * serialVersionUID */ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String wordName = "中国人"; //假设这是我们word文档导出的文件名 //假设这里获取到了word模板文件的相对于ServletContext根的路径 String path = "/template.doc"; ServletContext context = getServletContext(); //获取到作为模板的word文件的输入流 InputStream is = context.getResourceAsStream(path); HWPFDocument doc = new HWPFDocument(is); Range range = doc.getRange(); //替换变量 range.replaceText("${xx}", "xxx"); response.setHeader("Content-Disposition", "attachment;filename=" + this.getFileName(wordName) + ""); OutputStream output = response.getOutputStream(); doc.write(output); output.close(); is.close(); } /** * 把wordName以ISO-8859-1编码,同时加上“.doc”后缀进行返回。 * @param wordName 要导出的word文件的名称 * @return */ private String getFileName(String wordName) { try { wordName = new String(wordName.getBytes("UTF-8"), "ISO-8859-1"); //防中文乱码 } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return wordName + ".doc"; } }
(注:本文是基于poi3.9所写)
相关推荐
例如,对于常见的Word文档(`.doc`)和Excel表格(`.xls`),可以按照以下方式配置: ```xml <extension>doc <mime-type>application/msword <extension>xls <mime-type>application/msexcel ``` ...
这个“weblogic2.rar”压缩包包含了一系列关于WebLogic配置和使用的PDF文档以及一个名为“WEBLOGIC详细配置 - YAN.doc”的Word文档,还有两个与WTC(WebTier Clustering)配置相关的文件——“WTC配置.mht”和“WTC...
### Weblogic实施方案知识点详解 #### 一、Weblogic概述与...通过以上详细的介绍,我们可以了解到Weblogic6.1的安装、配置以及使用过程中的一些关键技术和技巧。这对于成功部署和管理基于Weblogic的应用程序至关重要。
本文将深入探讨基于给定的文件内容的Java学习方向,分为两个主要阶段,涵盖了基础增强、数据库技术、JDBC、JavaWeb和JavaMail开发技术,以及相关的项目案例。 **第一阶段:Java基础增强与数据库技术** 在Java基础...
Java的官方文档是学习过程中不可或缺的资源,详细解释了Java的各个方面,包括语法、API和最佳实践。建议在编程时随时查阅。 4. 应用服务器(App Server) 应用服务器为Java企业组件提供运行环境,如BEA的WebLogic...
"Java学习从入门到精通"的教程涵盖了从基础到高级的Java技术,包括JDK的使用、文档学习以及应用服务器的介绍。 首先,JDK(Java Development Kit)是Java开发的基础,它包含了Java运行环境、开发工具和标准类库。...
6. Web服务器和应用服务器:文档提到了Nginx、Apache、IIS、WebLogic和JBoss等服务器技术,这些都是用于托管网络应用程序和管理客户端请求的服务端软件。 7. HTTP协议和Web安全:文档提到了HTTP协议,这是传输超...
1. 需要把数据库字段内容填充到Word/Excel指定位置的; 2. 需要把Word/Excel指定位置的内容提取出来保存到数据库字段的; 3. 需要动态生成指定格式的Word文档的; 4. 需要把html页面中表格导出到excel的; 5. 需要在...
《公司信息化软件资源管理制度》是企业规范信息化软件资源管理的重要文件,旨在确保信息安全,消除软件浪费,提升软件管理效能,降低法律风险,节约成本,并提高使用效率。该制度主要涉及以下几个核心知识点: 1. *...
Tomcat支持最新的Servlet和JSP规范,并因其免费、性能稳定和易于扩展而受到开发者青睐。Tomcat可以与Apache HTTP服务器集成,以处理静态内容和动态内容的混合需求。 Tomcat的架构允许它作为一个独立的服务器运行,...
Java开发过程中,JAR(Java ...拥有了这个JAR大全,开发者可以快速集成所需的库,提高开发效率,减少因找不到合适库而浪费的时间。然而,使用这些库时仍需注意版权问题,遵循相应的许可协议,并确保与项目的兼容性。
步骤包括解压缩RMI插件包,将jar文件复制到指定目录,生成许可证文件,然后在Eclipse的偏好设置中配置RMI许可证,以便于进行RMI相关的编译工作。 5. **集成应用服务器**: - 在Eclipse中集成应用服务器,如...
每个端口号是一个16位的数字,范围从0到65535,其中0到1023是知名的端口号,由IANA(互联网号码分配机构)进行管理,分配给特定的网络服务。 FTP(文件传输协议)是最常见的网络服务之一,它使用20和21两个端口。20...
在硬件方面,文档中可能提到过"CM2006"、"WEBLOGIC"、"Alt"、"Ctrl"、"Shift"、"PrintScreen"等,但内容不连续,难以确定具体所指。然而,这些词汇与计算机的中央处理器(CPU)型号、中间件产品、键盘操作、屏幕截图...
"里面有详细的word文档说明"表明项目提供了一份详细的指导文档,这对于理解和调试项目非常有帮助,特别是对于初学者或不熟悉该项目结构的人来说,文档将起到导航的作用。 【Java Web项目详解】 Java Web项目是指...
XML解析器有DOM、SAX、StAX等,DOM一次性加载整个文档,适用于小型XML;SAX事件驱动,适用于大文件;StAX是推拉结合的方式。 18. **性能优化**: 通过缓存、减少数据库交互、优化算法、避免全局变量等方式提升...
9. **排序算法**:常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等,它们的时间复杂度各不相同,从O(n^2)到O(n log n)。 10. **数据库设计原则与范式**:设计原则包括正常化、最小...
67. 生成Word 和 Excel文档? 68. JSP如何读取Word内容? 69. 浏览服务器目录/文件? 70. jsp直接弹出下载框下载文件? 71. 配置数据连接池和数据源(Tomcat)? 72. 点击图1变为图2? 73. JSP中显示图片的方法之一? 74....
- **Microsoft Office**:SAP Crystal Reports 2008 SP5支持与Microsoft Office集成,允许用户轻松地将报告嵌入到Word或Excel等应用程序中。 - **Adobe Reader**:为了查看PDF格式的报告,用户需要安装Adobe Reader...
数字转中文 128 自动计算金额 129 JSP页面打印中使用WebBrowser控件 130 不刷新页面添加新的类别 131 鼠标滚动缩放图片 132 根据输入的表名生成输入数据表格 133 JSP表格输出到Excel 134.JSP...