servlet中使用commons-fileupload上传文件和文本出现servlet不可用的问题
完全按照commons fileupload官方的userguide写的一个上传方法,代码如下:
现在出现的问题是:
第一次访问这个servlet的时候会报错:
严重: Allocate exception for servlet Fileupload2
java.lang.NoClassDefFoundError:org/apache/commons/fileupload/FileItemFactory
然后再访问就是404错误了,同时在tomcat控制台出现:
信息: Servlet Fileupload2 is currently unavailable
web.xml中的xml配置是没有问题的。
public void upload(HttpServletRequest request,PrintWriter out) throws Exception{
boolean isMultipart;
List city=new ArrayList(1);
if(isMultipart = ServletFileUpload.isMultipartContent(request)){
DiskFileItemFactory factory=new DiskFileItemFactory();
factory.setSizeThreshold(20*1024);//设置缓存的大小,20K
//factory.setRepository(new File( "/tem/a.temp ")); //缓存目录/文件;
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setFileSizeMax(20*1024*1024);//最大文件,20M
List formlists=upload.parseRequest(request);
Iterator iter=formlists.iterator();
while(iter.hasNext()){ //循环获取表单中的内容
FileItem formitem=(FileItem)iter;
if (formitem.isFormField()){ //如果是文本内容
String formname=formitem.getFieldName();//获取form中的名字
String formcontent=formitem.getString();
formname=new String(formname.getBytes(), "gb2312 ");
formcontent=new String(formcontent.getBytes(), "gb2312 ");
if (formname.equals( "city ")){
city.add(formcontent);
}
}
else { //如果是文件,则保存
}
}
if (!city.isEmpty()){ //判断提交的表单内容是否为空
for (int i=0;i <=city.size()-1;i++){
out.println((String)city.get(i));
}
}
}
}
------解决方案--------------------dopost或者doget那???