servlet请求消息体、文件的上传

请求消息体

请求的消息体可以是文本,也可以是二进制

普通文本消息体

    String value = req.getParameter("参数名");
    //参数名包含:
        //超链接对应的是?号好后面的参数名
        //对于表单的话,参数为 表单控件中 name的值
    //getParameter("参数名");函数可以处理超链接、表单输入框、单选框、单选下拉菜单、文本域

    String[] values = req.getParameterValues("name值");
    //getParameterValues("name值");函数处理表单中的复选框、多选下拉菜单

二进制消息体

    //获得文件对象的part
        Part part = request.getPart("photo");
    //获得该文件对象的文件名
        String fileName = part.getSubmittedFileName();

    //getParameter 当进行二进制传输数据的时候  该方法不能获得输入框中的值。
    //添加了@MultipartConfig注解后 ,使用getParameter方法,文本与二进制没有区别

上传文件

文件操作-客户端的设置

  1. 提交方式为post

  2. enctype="multipart/form-date"(enctype规定表单数据在发送到服务器之前应该如何编码)

文件上传的第一步

  1. 设置form的提交方式为 post 编码方式为 enctype="multipart/form-data"

  2. 书写处理文件上传的servlet. 并且告诉web容器该servlet可以进行文件处理。

  3. 分别获取每个表单元素的值(part)

//获得文件对象的part
    Part part = request.getPart("photo");

//获得该文件对象的文件名
    String fileName = part.getSubmittedFileName();

//获得文件的后缀名
    String ext =fileName.substring(fileName.lastIndexOf("."));

//获得uuid
    String uuid = UUID.randomUUID().toString();

//获得新的文件名
    String newFileName = uuid+ext;

//获得文件存放的地址
    String path = this.getServletContext().getRealPath("存放上传文件的文件夹");

//创建一个文件对象
    File file = new File(path);

//如果没有该imgs文件夹
    if(!file.exists()){
        file.mkdir();
    }

//获得保存文件的路径
    String save_path =  path+File.separator+newFileName;
    //File.separator -> 系统生成的文件分隔符

//上传文件
    part.write(save_path);

其他

  1. 凡是从客户端传过来的都是字符串

原文地址:https://www.cnblogs.com/-Archenemy-/p/12709969.html