Java doGet, doPost方法和文件上传实例代码
作者:lqh 发布时间:2023-01-19 03:24:19
标签:Java,doGet,doPost方法
Java doGet, doPost方法和文件上传
index.html
<!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>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


猜你喜欢
- Scala异常处理Scala是一种多范式的编程语言,支持面向对象和函数式编程。Scala也支持异常处理,即在程序运行过程中发生意外或错误时,
- 文件数据流在java语言中,进行文件输入和输出时,经常会使用到FileIntputStream和FileOutputStream两个文件数据
- 官方文档 8.0Spring为不同缓存做了一层抽象,这里通过阅读文档以及源码会对使用以及原理做一些学习笔记。1.简介
- 前言开发传统Java WEB工程时,我们可以使用JSP页面模板语言,但是在SpringBoot中已经不推荐使用了。SpringBoot支持如
- 一个线程的生命周期:新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态
- 前言之前看到某公司的官网的文章的浏览量刷新一次网页就会增加一次,给人的感觉不太好,一个公司的官网给人如此直白的漏洞,我批量发起请求的时候发现
- 背景之前在网上发现这个问题public class GenericTest { //方法一 public static <T exte
- c#调用surfer软件,添加应用的方法:1.在项目文件上右键->添加引用2.选择COM标签页3.找到Surfer 9 type li
- timer和timertask是jdk自带的定时任务实现,无需导入第三方jar包来完成1、指定多久之后执行此任务,注意:只会执行一次publ
- 本文需求实现了java通过方向键控制小球移动的具体过程,供大家参考,具体内容如下需求分析:第一 要画出一个小球第二 要能通过控制方向键控制它
- springboot配置mysql数据库spring.datasource.url报错spring.datasource.url=jdbc:
- 在Flutter中实现整个App变为灰色是非常简单的,只需要在最外层的控件上包裹ColorFiltered,用法如下:@overrideWi
- 静态数组Java中最基本的数组大家肯定不会陌生:int[] array = new int[6];for (int i = 0; i <
- mybatis 查询返回Map<String,Object> 类型,平时没太注意怎么用,今天又遇到了总结记录一下,方便以后处理此
- 导入项目集成环境:IntelliJ IDEA 2020.1.2演示系统:DELL Windows 10Eclipse项目如何导入IDEA并成
- java 定时任务在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现。下面
- 前言上一篇做了一个滑动折叠的Header控件,主要就是练习了一下滑动事件冲突的问题,控件和文章写的都不怎么样。本来想通过这篇文章的控件,整合
- 准备学习java2游戏编程。(其实这是一本书啦)然后作为基础的基础的基础,必须学习如何让键盘与界面进行交互。下面就是对一个基础得不能再基础的
- 流程控制语句是C语言中最基本的判断语句,通常我们可以使用IF来构建多分支结构,但同样可以使用Switch语句构建,Switch语句针对多分支
- 本文实例讲述了Android编程设计模式之备忘录模式。分享给大家供大家参考,具体如下:一、介绍备忘录模式是一种行为模式,该模式用于保存对象当