java中使用commons(JAVA中使用泛型的优点)

本文目录一览:

JAVA中commons-collections-3.2.1.jar包是干什么用的?

Commons项目组中的一个各种集合类和集合工具类的封装

Commons-Collections seek to build upon the JDK classes by providing new interfaces, implementations and utilities.There are many features, including:Bag interface for collections that have a number of copies of each objectBuffer interface for collections that have a well defined removal order, like FIFOsBidiMap interface for maps that can be looked up from value to key as well and key to valueMapIterator interface to provide simple and quick iteration over mapsType checking decorators to ensure that only instances of a certain type can be addedTransforming decorators that alter each object as it is added to the collectionComposite collections that make multiple collections look like oneOrdered maps and sets that retain the order elements are added in, including an LRU based mapIdentity map that compares objects based on their identity (==) instead of the equals methodReference map that allows keys and/or values to be garbage collected under close controlMany comparator implementationsMany iterator implementationsAdapter classes from array and enumerations to collectionsUtilities to test or create typical set-theory properties of collections such as union, intersection, and closure类似C++中的Boost库,对Java容器类型和算法的补充

java怎么用commons-fileupload实现上传文件

文件上传步骤:

     1. 导入jar包

          common-fileupload.jar

          common-io.jar      

     2. 上传jsp页面编辑

         body

            form action=”${pageContext.request.contextPath}/servlet/UploadHandleServlet” enctype=”multipart/form-data” method=”post”

                上传用户:input type=”text” name=”username”br/

                上传文件1:input type=”file” name=”file1″br/

                上传文件2:input type=”file” name=”file2″br/

                            input type=”submit” value=”提交”

            /form

        /body    

     3. 消息提示页面(成功or失败)     

            body

                ${message}

            /body    

     4. 处理文件上传的servlet编写   

         import java.io.File;

         import java.io.FileOutputStream;

         import java.io.IOException;

         import java.io.InputStream;

         import java.util.List;

         import java.util.UUID;

             

             import javax.servlet.ServletException;

             import javax.servlet.http.HttpServlet;

             import javax.servlet.http.HttpServletRequest;

             import javax.servlet.http.HttpServletResponse;

             import org.apache.commons.fileupload.FileItem;

             import org.apache.commons.fileupload.FileUploadBase;

             import org.apache.commons.fileupload.ProgressListener;

             import org.apache.commons.fileupload.disk.DiskFileItemFactory;

             import org.apache.commons.fileupload.servlet.ServletFileUpload;

              

             public class UploadHandleServlet extends HttpServlet {

              

              public void doGet(HttpServletRequest request, HttpServletResponse response)

                throws ServletException, IOException {

                 //得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全

                 String savePath = this.getServletContext().getRealPath(“/WEB-INF/upload”);

                 //上传时生成的临时文件保存目录

                 String tempPath = this.getServletContext().getRealPath(“/WEB-INF/temp”);

                 File tmpFile = new File(tempPath);

                 if (!tmpFile.exists()) {

                  //创建临时目录

                  tmpFile.mkdir();

                 }

                  

                 //消息提示

                 String message = “”;

                 try{

                  //使用Apache文件上传组件处理文件上传步骤:

                  //1、创建一个DiskFileItemFactory工厂

                  DiskFileItemFactory factory = new DiskFileItemFactory();

                  //设置工厂的缓冲区的大小,当上传的文件大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录当中。

                  factory.setSizeThreshold(1024*100);//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB

                  //设置上传时生成的临时文件的保存目录

                  factory.setRepository(tmpFile);

                  //2、创建一个文件上传解析器

                  ServletFileUpload upload = new ServletFileUpload(factory);

                  //监听文件上传进度

                  upload.setProgressListener(new ProgressListener(){

                   public void update(long pBytesRead, long pContentLength, int arg2) {

                    System.out.println(“文件大小为:” + pContentLength + “,当前已处理:” + pBytesRead);

                    /**

                    * 文件大小为:14608,当前已处理:4096

                     文件大小为:14608,当前已处理:7367

                     文件大小为:14608,当前已处理:11419

                     文件大小为:14608,当前已处理:14608

                    */

                   }

                  });

                  //解决上传文件名的中文乱码

                  upload.setHeaderEncoding(“UTF-8”); 

                  //3、判断提交上来的数据是否是上传表单的数据

                  if(!ServletFileUpload.isMultipartContent(request)){

                   //按照传统方式获取数据

                   return;

                  }

                   

                  //设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB

                  upload.setFileSizeMax(1024*1024);

                  //设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB

                  upload.setSizeMax(1024*1024*10);

                  //4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个ListFileItem集合,每一个FileItem对应一个Form表单的输入项

                  ListFileItem list = upload.parseRequest(request);

                  for(FileItem item : list){

                   //如果fileitem中封装的是普通输入项的数据

                   if(item.isFormField()){

                    String name = item.getFieldName();

                    //解决普通输入项的数据的中文乱码问题

                    String value = item.getString(“UTF-8”);

                    //value = new String(value.getBytes(“iso8859-1″),”UTF-8”);

                    System.out.println(name + “=” + value);

                   }else{//如果fileitem中封装的是上传文件

                    //得到上传的文件名称,

                    String filename = item.getName();

                    System.out.println(filename);

                    if(filename==null || filename.trim().equals(“”)){

                     continue;

                    }

                    //注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如: c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt

                    //处理获取到的上传文件的文件名的路径部分,只保留文件名部分

                    filename = filename.substring(filename.lastIndexOf(“\\”)+1);

                    //得到上传文件的扩展名

                    String fileExtName = filename.substring(filename.lastIndexOf(“.”)+1);

                    //如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法

                    System.out.println(“上传的文件的扩展名是:”+fileExtName);

                    //获取item中的上传文件的输入流

                    InputStream in = item.getInputStream();

                    //得到文件保存的名称

                    String saveFilename = makeFileName(filename);

                    //得到文件的保存目录

                    String realSavePath = makePath(saveFilename, savePath);

                    //创建一个文件输出流

                    FileOutputStream out = new FileOutputStream(realSavePath + “\\” + saveFilename);

                   //创建一个缓冲区

                    byte buffer[] = new byte[1024];

                    //判断输入流中的数据是否已经读完的标识        int len = 0;

                    //循环将输入流读入到缓冲区当中,(len=in.read(buffer))0就表示in里面还有数据

                    while((len=in.read(buffer))0){

                     //使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + “\\” + filename)当中

                     out.write(buffer, 0, len);

                    }

                    //关闭输入流

                    in.close();

                    //关闭输出流

                    out.close();        //删除处理文件上传时生成的临时文件        //item.delete();        message = “文件上传成功!”;

                   }

                  }

                 }catch (FileUploadBase.FileSizeLimitExceededException e) {

                  e.printStackTrace();

                  request.setAttribute(“message”, “单个文件超出最大值!!!”);

                  request.getRequestDispatcher(“/message.jsp”).forward(request, response);

                  return;

                 }catch (FileUploadBase.SizeLimitExceededException e) {

                  e.printStackTrace();

                  request.setAttribute(“message”, “上传文件的总的大小超出限制的最大值!!!”);

                  request.getRequestDispatcher(“/message.jsp”).forward(request, response);

                  return;

                 }catch (Exception e) {

                  message= “文件上传失败!”;

                  e.printStackTrace();

                 }

                 request.setAttribute(“message”,message);

                 request.getRequestDispatcher(“/message.jsp”).forward(request, response);

              }

              private String makeFileName(String filename){ //2.jpg

               //为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名

               return UUID.randomUUID().toString() + “_” + filename;

              }  

             private String makePath(String filename,String savePath){

               //得到文件名的hashCode的值,得到的就是filename这个字符串对象在内存中的地址

               int hashcode = filename.hashCode();

               int dir1 = hashcode0xf; //0–15

               int dir2 = (hashcode0xf0)4; //0-15

               //构造新的保存目录

               String dir = savePath + “\\” + dir1 + “\\” + dir2; //upload\2\3 upload\3\5

               if(!file.exists()){

                file.mkdirs();

              }

               return dir;

              }

              

              public void doPost(HttpServletRequest request, HttpServletResponse response)

                throws ServletException, IOException {

               doGet(request, response);

              }

             }

     5.编写web.xml文件(servlet的映射配置)   

            servlet

                servlet-nameUploadHandleServlet/servlet-name

                servlet-classme.gacl.web.controller.UploadHandleServlet/servlet-class

            /servlet

             

            servlet-mapping

                servlet-nameUploadHandleServlet/servlet-name

                url-pattern/servlet/UploadHandleServlet/url-pattern

            /servlet-mapping

 

 

 注: 网上看到的,出处找不到了,望见谅!!

Java利用commons-fileupload进行文件上传中设置缓冲区和临时文件什么意思?请高手扫一下盲

我看到你的问题写了这么一长串,就想呵呵了

你平时读写文件不是要用个byte来读取,其实这个byte数组也算是个缓冲区,只是你的缓冲区比较少,通常搞个1024

这里的意思是, 如果你上传了一个文件,只有5kb,那么他不会生成文件,直接保存在内存中,给你处理

但是当你超过了这个缓冲区,它就会生成一个临时文件再处理

还有哪里不明白?

JAVA中commons-collections-3.2.1.jar包是干什么用的

apache的commons系列库,是很多其他库的基础库,比如hibernate和spring,commons-collections是通用集合库,不过一般你写代码用不上,你会直接用jdk里自带的集合类(List,Set,Map等)

原创文章,作者:OHU24,如若转载,请注明出处:https://www.506064.com/n/127572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
OHU24OHU24
上一篇 2024-10-03 23:16
下一篇 2024-10-03 23:16

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论