Java doGet, doPost方法和文件上傳實(shí)例代碼
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>測(cè)試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);//設(shè)置未保存在臨時(shí)路徑的最大值
factory.setRepository(new File("C:/temp/temp"));//超過(guò)上述最大值后保存的臨時(shí)路徑
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();
}
//可以從輸入流中讀取數(shù)據(jù)
// 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的請(qǐng)求參數(shù)</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/>");
// }
//接收來(lái)自瀏覽器的文件,
os.write(builder.toString().getBytes("UTF-8"));
//參數(shù)列表: 待轉(zhuǎn)碼的字符串, 字符編碼
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>
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Java commons-httpclient如果實(shí)現(xiàn)get及post請(qǐng)求
- JAVA發(fā)送http get/post請(qǐng)求,調(diào)用http接口、方法詳解
- java web學(xué)習(xí)_淺談request對(duì)象中g(shù)et和post的差異
- java模擬http的Get/Post請(qǐng)求,并設(shè)置ip與port代理的方法
- Java如何實(shí)現(xiàn)URL帶請(qǐng)求參數(shù)(get/post)及得到get和post請(qǐng)求url和參數(shù)列表的方法
- java中form以post、get方式提交數(shù)據(jù)中文亂碼問(wèn)題總結(jié)
- java發(fā)送get請(qǐng)求和post請(qǐng)求示例
- java使用httpclient模擬post請(qǐng)求和get請(qǐng)求示例
- Java httpcomponents發(fā)送get post請(qǐng)求代碼實(shí)例
相關(guān)文章
Java刪除二叉搜索樹(shù)最大元素和最小元素的方法詳解
這篇文章主要介紹了Java刪除二叉搜索樹(shù)最大元素和最小元素的方法,結(jié)合實(shí)例形式詳細(xì)分析了java針對(duì)二叉搜索樹(shù)的基本遍歷、查找、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下2020-03-03
idea創(chuàng)建springboot項(xiàng)目,java版本只能選擇17和21的解決方案
這篇文章主要介紹了idea創(chuàng)建springboot項(xiàng)目,java版本只能選擇17和21的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
java+mysql模擬實(shí)現(xiàn)銀行系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java+mysql模擬實(shí)現(xiàn)銀行系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
詳解Spring中使用@within與@target的區(qū)別
這篇文章主要介紹了Spring中使用@within與@target的一些區(qū)別,本文通過(guò)項(xiàng)目案例給大家詳細(xì)分析,給大家介紹的非常詳細(xì),代碼簡(jiǎn)單易懂,需要的朋友可以參考下2021-09-09
@RequestParam使用defaultValue屬性設(shè)置默認(rèn)值的操作
這篇文章主要介紹了@RequestParam使用defaultValue屬性設(shè)置默認(rèn)值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
SpringBoot使用spring.config.import多種方式導(dǎo)入配置文件
本文主要介紹了SpringBoot使用spring.config.import多種方式導(dǎo)入配置文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
Java如何導(dǎo)入Jsoup庫(kù)做一個(gè)有趣的爬蟲(chóng)項(xiàng)目
Jsoup庫(kù)是一款Java的HTML解析器,可用于從網(wǎng)絡(luò)或本地文件中獲取HTML文檔并解析其中的數(shù)據(jù),這篇文章給大家介紹Java導(dǎo)入Jsoup庫(kù)做一個(gè)有趣的爬蟲(chóng)項(xiàng)目,感興趣的朋友跟隨小編一起看看吧2023-11-11
Java中的延遲隊(duì)列DelayQueue詳細(xì)解析
這篇文章主要介紹了Java中的延遲隊(duì)列DelayQueue詳細(xì)解析,JDK自身支持延遲隊(duì)列的數(shù)據(jù)結(jié)構(gòu),其實(shí)類:java.util.concurrent.DelayQueue,<BR>我們通過(guò)閱讀源碼的方式理解該延遲隊(duì)列類的實(shí)現(xiàn)過(guò)程,需要的朋友可以參考下2023-12-12
Java FileInputStream與FileOutputStream使用詳解
這篇文章主要介紹了Java FileInputStream與FileOutputStream使用詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08

