最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡(jiǎn)單操作實(shí)現(xiàn)Java jsp servlet文件上傳過程解析

 更新時(shí)間:2019年10月09日 09:03:21   作者:小龍_T無限  
這篇文章主要介紹了簡(jiǎn)單操作實(shí)現(xiàn)Java jsp servlet文件上傳過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

實(shí)現(xiàn)文件上傳的方式

1、進(jìn)入http://commons.apache.org/proper/commons-fileupload/using.html

2、點(diǎn)擊用戶指南

3、對(duì)著用戶指南一步步復(fù)制粘貼,并把代碼擼成自己想要的樣子

補(bǔ)充:記得要將commons-io-2.4.jar和commons-fileupload-1.2.2.jar這兩個(gè)包放到編譯器里面

現(xiàn)成的代碼

JSP 前端頁面

<%--
 Created by IntelliJ IDEA.
 User: Administrator
 Date: 2019/10/8
 Time: 16:14
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>作業(yè)三第1遍</title>
</head>
<body>
文件上傳注意事項(xiàng):<br>
<ol>
  <li>提交方式必須是post</li>
  <li>enctype="multipart/form-data"是以字節(jié)數(shù)據(jù)的形式提交表單,否則默認(rèn)是kv形式,只會(huì)提交文件名</li>
  <li>如果以默認(rèn)的application/x-www-form-urlencode的方式提交,上傳的就不是文件本身</li>
</ol>
<%--application/x-www-form-urlencoded 以鍵值對(duì)的方式上傳 --%>
<%-- multipart/form-data 以二進(jìn)制的方式上傳 --%>
<form action="/work/UploadServlet" method="post" enctype="multipart/form-data">
  <input type="text" name="data1" value="data1Value">
  <hr>
  <input type="text" name="data2" value="data2Value">
  <hr>
  <input type="file" name="dataFile">
  <hr>
  <input type="submit" value="上傳該表單">
  <hr>
</form>


</body>
</html>

Servlet 后臺(tái)處理頁面

package com.bd25;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
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.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;

@WebServlet(name = "UploadServlet", urlPatterns = "/UploadServlet")
public class UploadServlet extends HttpServlet {
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //處理中文亂碼--已經(jīng)測(cè)試這個(gè)要不要無所謂
    request.setCharacterEncoding("UTF-8");

    //判斷是不是傳入的一個(gè)二進(jìn)制的流
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    //創(chuàng)建一個(gè)簡(jiǎn)單工廠實(shí)例
    FileItemFactory factory = new DiskFileItemFactory();
    //創(chuàng)建一個(gè)新的文件上傳處理程序
    ServletFileUpload upload = new ServletFileUpload(factory);
    //解析request
    try {
      List<FileItem> fileItems = upload.parseRequest(request);
      //處理上傳的項(xiàng)目
      Iterator iter=fileItems.iterator();
      while(iter.hasNext()){
        FileItem item = (FileItem) iter.next();
        if (item.isFormField()){
          //普通域
          processFormField(item);
        }else{
          //文件域 此處注意processUploadFile()方法的參數(shù)里面?zhèn)魅雛equest的目的是讓下面寫文件的時(shí)候獲取根目錄用的
          processUploadFile(item,request);
        }
          
      }

    } catch (FileUploadException e) {
      e.printStackTrace();
    }


    ServletInputStream inputStream = request.getInputStream();
    byte[] bs=new byte[1024];
    int total=-1;
    while ((total=inputStream.read(bs))!=-1){
      System.out.print(new String(bs,0,total));
    }
  }

  /**
   * 文件域
   * @param item
   * @param request
   */
  private void processUploadFile(FileItem item, HttpServletRequest request) {
    //獲取文件相關(guān)信息
    String fileName="";
    if (!item.isFormField()) {
      String fieldName = item.getFieldName();
      fileName = item.getName();
      String contentType = item.getContentType();
      boolean isInMemory = item.isInMemory();
      long sizeInBytes = item.getSize();
      System.out.println("文件名: "+fileName+" 文件屬性:"+fieldName+" 文件大小:"+sizeInBytes+" 文件類型:"+contentType);
    }
    //以下是轉(zhuǎn)存操作,找到儲(chǔ)存文件的根路徑
    String fileRootPath=request.getServletContext().getRealPath("/WEB-INF/upload");
    File dir = new File(fileRootPath);
    if (!dir.exists()){
      dir.mkdirs();
    }
    //寫文件
    File file = new File(fileRootPath+"/"+fileName);
    try {
      item.write(file);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * 普通域
   * @param item
   */
  private void processFormField(FileItem item) {
    String key = item.getFieldName();
    String value = null;
    try {
      //處理中文亂碼
      value = item.getString("UTF-8");
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
    System.out.println(key+"----"+value);
  }

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  }

  @Override
  protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    super.service(req, resp);
    System.out.println("刷新....");
  }

  @Override
  public void init() throws ServletException {
    super.init();
    System.out.println("初始化....");
  }
}

運(yùn)行結(jié)果

//說明:路徑出現(xiàn)的位置就是網(wǎng)頁發(fā)布的路徑

//說明:路徑出現(xiàn)的位置就是網(wǎng)頁發(fā)布的路徑

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Spring中的攔截器與過濾器

    詳解Spring中的攔截器與過濾器

    Filter?過濾器和Interceptor?攔截器是SpringBoot?的?Web?項(xiàng)目開發(fā)中長(zhǎng)用到的,本文主要來和大家討論一下?Filter?與?Interceptor?的做法及它們之間的區(qū)別,需要的可以參考下
    2023-07-07
  • Java Spring @Autowired的這些騷操作,你都知道嗎

    Java Spring @Autowired的這些騷操作,你都知道嗎

    這篇文章主要介紹了徹底搞明白Spring中的自動(dòng)裝配和Autowired注解的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-09-09
  • Java Springboot之Spring家族的技術(shù)體系

    Java Springboot之Spring家族的技術(shù)體系

    今天帶大家來學(xué)習(xí)Spring家族的技術(shù)體系,文中有非常詳細(xì)的圖文介紹及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • java中concat()方法的使用說明

    java中concat()方法的使用說明

    這篇文章主要介紹了java中concat()方法的使用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Spring MVC 中 短信驗(yàn)證碼功能的實(shí)現(xiàn)方法

    Spring MVC 中 短信驗(yàn)證碼功能的實(shí)現(xiàn)方法

    短信驗(yàn)證功能在各個(gè)網(wǎng)站應(yīng)用都非常廣泛,那么在springmvc中如何實(shí)現(xiàn)短信驗(yàn)證碼功能呢?今天小編抽時(shí)間給大家介紹下Spring MVC 中 短信驗(yàn)證碼功能的實(shí)現(xiàn)方法,一起看看吧
    2016-09-09
  • Java神操作:圖片快速轉(zhuǎn)換PDF秘籍

    Java神操作:圖片快速轉(zhuǎn)換PDF秘籍

    想掌握J(rèn)ava神操作,將圖片快速轉(zhuǎn)換成PDF嗎?這份秘籍將一步步引導(dǎo)你,輕松實(shí)現(xiàn)這一目標(biāo),別等了,跟著我們一起,解鎖這項(xiàng)超實(shí)用技能吧!
    2024-02-02
  • win10下定時(shí)運(yùn)行與開機(jī)自啟動(dòng)jar包的方法記錄

    win10下定時(shí)運(yùn)行與開機(jī)自啟動(dòng)jar包的方法記錄

    這篇文章主要給大家介紹了關(guān)于win10下定時(shí)運(yùn)行與開機(jī)自啟動(dòng)jar包的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • java多線程實(shí)現(xiàn)有序輸出ABC

    java多線程實(shí)現(xiàn)有序輸出ABC

    這篇文章主要為大家詳細(xì)介紹了java多線程實(shí)現(xiàn)有序輸出ABC,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Java實(shí)現(xiàn)時(shí)間與字符串互相轉(zhuǎn)換詳解

    Java實(shí)現(xiàn)時(shí)間與字符串互相轉(zhuǎn)換詳解

    這篇文章主要為大家詳細(xì)介紹了Java中實(shí)現(xiàn)時(shí)間與字符串互相轉(zhuǎn)換的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • Java定時(shí)清理過期文件的實(shí)例代碼

    Java定時(shí)清理過期文件的實(shí)例代碼

    這篇文章主要介紹了Java定時(shí)清理過期文件的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-12-12

最新評(píng)論

慈利县| 额济纳旗| 怀远县| 宁陵县| 远安县| 广安市| 汨罗市| 莱州市| 阜宁县| 游戏| 德江县| 瑞金市| 克东县| 富蕴县| 龙胜| 惠水县| 奉化市| 香港| 天全县| 湖州市| 定边县| 林州市| 博客| 漳州市| 弥渡县| 海安县| 名山县| 昔阳县| 鄄城县| 白河县| 娱乐| 株洲市| 伊吾县| 赤峰市| 浦城县| 治县。| 宕昌县| 寻甸| 龙门县| 留坝县| 威宁|