求教一个简单的文件上传问题 表示困扰很久了

Q蛋黄酱 2014-03-30 04:02:00
最近在做一个企业级java的上机实验

实现文件的上传

期间遇到了一个问题,也不知道是哪儿出错了 麻烦大神们给指点指点

xml代码


<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>fileupload</servlet-name>
<servlet-class>com.cugb.java.fileupload</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>fileupload</servlet-name>
<url-pattern>/fileupload</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>


然后是index.jsp里的代码

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>

<body>

<form action="fileupload" method="post" enctype="Multipart/form-data">
username:<input type="text" name="usename"> <br/>
Choose a file:
<input type="file" name="file1"><br>
<input type="submit" value="submit">



</form>
</body>
</html>



Servlet里的代码 fileupload.java'

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

DiskFileItemFactory dfu =new DiskFileItemFactory();

String path=request.getRealPath("/upload");
dfu.setRepository(new File(path));

dfu.setSizeThreshold(1024*1024);

ServletFileUpload upload=new ServletFileUpload(dfu);

try{
List<FileItem> list=(List<FileItem>)upload.parseRequest(request);
for(FileItem item : list)
{
String name=item.getFieldName();
if(!item.isFormField());
{
String value=item.getName();
int start=value.lastIndexOf("\\");

String filename=value.substring(start+1);

request.setAttribute(name, filename);
item.write( new File(path,filename) );
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (Exception e) {
// TODO Auto-generated catch block

//e.printStackTrace();
}
request.getRequestDispatcher("index.jsp").forward(request, response);
}


发布到tomcat上都是没问题的 就是点击提交的时候 报错 我也不知道是哪儿错了

exception

javax.servlet.ServletException: Servlet execution threw an exception


root cause

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:191)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:350)
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
com.cugb.java.fileupload.doPost(fileupload.java:88)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:191)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:350)
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
com.cugb.java.fileupload.doPost(fileupload.java:88)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.






希望各位热心的大神给看看 困扰很久了
...全文
150 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Q蛋黄酱 2014-03-30
  • 打赏
  • 举报
回复
引用 2 楼 longtian1213 的回复:
当commons-fileupload包从版本1.0升到1.1时,DeferredFileOutputStream.class被移走了。如果Tomcat使用1.1及其以上版本,你得为它找到这个类。 解决方法: 进入目录:$CATALINA/server/webapps/manager/WEB-INF/lib,检查是否存在三个包: commons-io catalina-manager.jar commons-fileupload.jar 如果缺少commons-io,拷一个过来。 或者直接使用老版本的commons-fileupload.jar
我看看
S117 2014-03-30
  • 打赏
  • 举报
回复
当commons-fileupload包从版本1.0升到1.1时,DeferredFileOutputStream.class被移走了。如果Tomcat使用1.1及其以上版本,你得为它找到这个类。 解决方法: 进入目录:$CATALINA/server/webapps/manager/WEB-INF/lib,检查是否存在三个包: commons-io catalina-manager.jar commons-fileupload.jar 如果缺少commons-io,拷一个过来。 或者直接使用老版本的commons-fileupload.jar

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧