当前位置: 移动技术网 > IT编程>开发语言>Java > Java doGet, doPost方法和文件上传实例代码

Java doGet, doPost方法和文件上传实例代码

2019年07月22日  | 移动技术网IT编程  | 我要评论

java doget, dopost方法和文件上传

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>title</title>
</head>
<body>
<form action="/test" method="post" enctype="multipart/form-data">
  <table >
    <tr>
      <td>
        用户名:
      </td>
      <td>
        <input name="username" type="text">
      </td>      <tr>
      <td>
        密  码:
      </td>
      <td colspan="2">
        <input name="password" type="password">
      </td>
    </tr>
    <tr align="center">
      <td><input name="login" type="submit" value="登陆"></td>
      <td><input name="register" type="reset" value="重置"></td>
    </tr>

    <tr>
      <td colspan="2">
        <input type="radio" name="sex" value="male">男
      </td> <td colspan="2">
        <input type="radio" name="sex" value="female">女
      </td>
    </tr>
    <tr>
      <td colspan="2" >
        <input name="upload" type="file">
      </td>
    </tr>

  </table>

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

testservlet.java

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 javax.servlet.servletexception;
import javax.servlet.servletinputstream;
import javax.servlet.servletoutputstream;
import javax.servlet.annotation.webservlet;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import java.io.bytearrayoutputstream;
import java.io.file;
import java.io.ioexception;
import java.net.urldecoder;
import java.net.urlencoder;
import java.util.enumeration;
import java.util.list;

/**
 * project: day15_web
 * created: lulu
 * date: 2016/8/16
 */
@webservlet(name = "testservlet")
public class testservlet extends httpservlet {
  private file root_upload;
  public testservlet() {
    root_upload = new file("c:/temp");
    if (!root_upload.exists()) {
      root_upload.mkdirs();
    }
  }


  //两种链接方式 dopost doget
  protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {

    response.setcharacterencoding("utf-8");
    request.setcharacterencoding("utf-8");
    servletoutputstream os = response.getoutputstream();
    stringbuilder builder = new stringbuilder();

    builder.append("<html>");
    builder.append("<head>");
    builder.append("  <meta charset=\"utf-8\">");
    builder.append("  <title>测试servlet</title>");
    builder.append("</head>");
    builder.append("<body>");

    enumeration<string> names = request.getheadernames();
    while (names.hasmoreelements()) {
      string name = names.nextelement();
      builder.append(name)
          .append(":")
          .append(request.getheader(name))
          .append("<br>");
    }

    diskfileitemfactory factory = new diskfileitemfactory();
    factory.setsizethreshold(10);//设置未保存在临时路径的最大值
    factory.setrepository(new file("c:/temp/temp"));//超过上述最大值后保存的临时路径
    servletfileupload upload = new servletfileupload(factory);
    try {
      list<fileitem> list = upload.parserequest(request);//上传的文件列表

      for (fileitem item : list) {
        builder.append(item.getfieldname())
            .append(":")
            .append(item.isformfield() ? item.getstring() : item.getname())//判断是不是属性, 如果是属性, 就
            .append("<br>");
        if (!item.isformfield()) {
          file file = new file(root_upload, item.getname());
          builder.append(file.getabsolutepath()).append("<br>");
          item.write(file);
        }
      }

    } catch (fileuploadexception e) {
      e.printstacktrace();
    } catch (exception e) {
      e.printstacktrace();
    }


    //可以从输入流中读取数据
//    servletinputstream is = request.getinputstream();
//    byte[] buffer = new byte[8192];
//    int len ;
//    bytearrayoutputstream bos= new bytearrayoutputstream();
//    while ((len = is.read(buffer)) != -1) {
//      bos.write(buffer, 0, len);
//    }
//    builder.append("inputstream: ")
//        .append(bos.tostring("utf-8"))
//        .append("<br>");

//    builder.append("<h1>post的请求参数</h1>").append("<br/>");
//
//    enumeration<string> parameternames = request.getparameternames();
//    while (parameternames.hasmoreelements()) {
//      string name = parameternames.nextelement();
//      builder.append(name)
//          .append(":")
//          .append(request.getparameter(name))
//          .append("<br/>");
//    }

    //接收来自浏览器的文件,

    os.write(builder.tostring().getbytes("utf-8"));
    //参数列表: 待转码的字符串, 字符编码
    urlencoder.encode("&", "utf-8");
    urldecoder.decode("%26", "utf-8");
    builder.append("</body>");
    builder.append("</html>");

  }

  protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
    dopost(request, response);
  }
}

web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
     xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     version="3.1">
  <servlet>
    <servlet-name>testservlet</servlet-name>
    <servlet-class>org.lulu.learn.testservlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testservlet</servlet-name>
    <url-pattern>/test</url-pattern>
  </servlet-mapping>
</web-app>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网