请问老师这个为什么不能导入03word?

请问老师这个为什么不能导入03word?

<form action="http://localhost:8080/context/servler3" method="post" enctype="multipart/form-data">
    <input type="text" name="name"/>
    </br>
    <input type="file" name="file"/>
    </br>
    <input type="submit" value="导入word"/>
</form>
package sc;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.poi.hwpf.HWPFDocument;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.List;


@WebServlet("/Servlet3")
public class Servlet3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        try {


            DiskFileItemFactory disk = new DiskFileItemFactory();
            ServletFileUpload servletFileUpload = new ServletFileUpload(disk);
            //这个载入会有流异常
            List<FileItem> fileItemList = servletFileUpload.parseRequest(request);

            for (FileItem item : fileItemList)


                if (item.isFormField()) {

                    String name = item.getFieldName();
                    String value = item.getString("UTF-8");

                    System.out.println("name:" + name);
                    System.out.println("value:" + value);


                } else {

                    HWPFDocument doc = new HWPFDocument(item.getInputStream());
                    System.out.println(doc.getDocumentText());
                    doc.close();
                }


        } catch (FileUploadException e) {
            e.printStackTrace();
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doPost(request, response);

    }
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
提问者 iStream 2018-09-12 10:48:19

 问题这里已经很好的回答:   

https://class.imooc.com/course/qadetail/68227


好帮手慕珊 2018-09-11 14:04:10

最终尝试的结果发现,在控制台是没有内容,但是如果把文档内容存储到request中,然后转发到jsp页面显示是可以的。代码如下:

Servlet,只贴了doPost的代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  try {
        DiskFileItemFactory disk = new DiskFileItemFactory();
        ServletFileUpload servletFileUpload = new ServletFileUpload(disk);
        //这个载入会有流异常
        List<FileItem> fileItemList = servletFileUpload.parseRequest(request);
        for (FileItem item : fileItemList)
            if (item.isFormField()) {
                String name = item.getFieldName();
                String value = item.getString("UTF-8");
                System.out.println("name:" + name);
                System.out.println("value:" + value);
            }
            else {
                InputStream is=item.getInputStream();
                HWPFDocument doc = new HWPFDocument(is);
                request.setAttribute("doc",doc.getDocumentText());
                doc.close();
            }
    } catch (FileUploadException e) {
        e.printStackTrace();
    }
    request.getRequestDispatcher("demo.jsp").forward(request,response);
}

转发后的demo.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String s=(String)request.getAttribute("doc");
    out.println(s);
%>
</body>
</html>

运行效果如下:

http://img1.sycdn.imooc.com//climg/5b975ce800018eba10390111.jpg

祝学习愉快!

好帮手慕珊 2018-09-11 11:40:58

你好!首先运行代码时,点击提交word时发生了404错误,检查发现action中的servler3,首字母s应该大写,3前面的r应该改成t,context应该是你的工程名吧,不知道你在运行代码时是否发生了404错误。

http://img1.sycdn.imooc.com//climg/5b9738090001f67004620049.jpghttp://img1.sycdn.imooc.com//climg/5b97380f0001373302810079.jpg

完成上述改正后可以导入03版的word,下面是浏览器运行结果和控制台输出结果

http://img1.sycdn.imooc.com//climg/5b9738780001a6ff02350109.jpg

http://img1.sycdn.imooc.com//climg/5b9738890001abbb05810108.jpg

我使用的poi的jar包是4.0版本的

http://img1.sycdn.imooc.com//climg/5b9738c80001c3b003760438.jpg

不知道同学说的报错信息指的是什么错误,是404错误,还是控制台发生了错误,建议能贴一下报错的内容,这样我们能更好地针对错误去解决问题。

祝学习愉快!

  • 提问者 iStream #1
    HWPFDocument doc = new HWPFDocument(item.getInputStream()); System.out.println(doc.getDocumentText()); 看到没有啊啊 !!!!!!
    2018-09-11 11:43:01
  • 提问者 iStream #2
    HWPFDocument doc = new HWPFDocument(item.getInputStream()); System.out.println(doc.getDocumentText()); 看到没有啊啊 !!!!你导入 这里就要打印OK????!!!!!@!!
    2018-09-11 11:43:54
  • 提问者 iStream #3
    你 看看你的的 什么大欧没有打印是不是, 答非所问, “为什么不能导入”
    2018-09-11 11:45:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师