1. <dd id="erndk"></dd>
                1. JavaWeb開發常用組件功能

                  互聯網 2022/1/4 12:38:02

                  常用組件化Web開發內容 1.文件的上傳 (1)需要引入的 jar 文件:commons-fileupload-1.3.2、commons-io-2.5.jar。 <!-- 文件上傳相關包:commons-fileupload --> <dependency><groupId>commons-fileupload</groupId><artifactId>commons-…

                  常用組件化Web開發內容

                  1.文件的上傳

                  (1)需要引入的 jar 文件:commons-fileupload-1.3.2、commons-io-2.5.jar。

                  <!-- 文件上傳相關包:commons-fileupload -->
                  <dependency>
                      <groupId>commons-fileupload</groupId>
                      <artifactId>commons-fileupload</artifactId>
                      <version>1.4</version>
                  </dependency>
                  
                  <!-- 文件IO相關包:commons-io -->
                  <dependency>
                      <groupId>commons-io</groupId>
                      <artifactId>commons-io</artifactId>
                      <version>2.11.0</version>
                  </dependency>
                  
                  

                  (2)進行配置項的封裝

                  #-- 配置參數封裝成為成員變量
                      //1.文件上傳保存在服務器地址的路徑
                      private static final String UPLOAD_DIRECTORY = "D:\\uploadFiles";
                  
                      // # 臨時記憶存儲大?。▎挝蛔止潱?    private static final int MEMORY_THRESHOLD   = 1024 * 1024 * 3;
                      //# 最大文件大?。▎挝蛔止潱?    private static final int MAX_FILE_SIZE      = 1024 * 1024 * 40;
                      //# 最大請求大?。▎挝蛔止潱?    private static final int MAX_REQUEST_SIZE   = 1024 * 1024 * 50;
                  

                  (3) 編寫文件上傳doPost方法

                  注意:文件上傳請求只能使用post請求

                  3.1 判斷請求是否是包含了媒體元素上傳的請求
                  //1.檢測是否為文件媒體元素上傳
                          boolean multipartContent = ServletFileUpload.isMultipartContent(req);
                          if(!multipartContent){//不是包含了文件媒體元素上傳的請求
                  
                              Result res = new Result();
                              res.setCode("9999");
                              res.setMsg("不是一個標準的文件上傳請求");
                              writer.print(res.toString());
                              writer.flush();
                              writer.close();
                  
                              return;
                          }
                  
                  3.2 通過工廠類來生產文件上傳對象(加載配置過程)
                  //2.創建工廠類
                          DiskFileItemFactory factory = new DiskFileItemFactory();
                  
                          //設置臨界值
                          factory.setSizeThreshold(MEMORY_THRESHOLD);
                          //設置臨時存儲的地址
                          factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
                          //生成ServletFileUpload對象
                          ServletFileUpload upload = new ServletFileUpload(factory);
                  
                  3.3 文件上傳對象配置加載
                  // 設置最大文件上傳值
                          upload.setFileSizeMax(MAX_FILE_SIZE);
                          // 設置最大請求值 (包含文件和表單數據)
                          upload.setSizeMax(MAX_REQUEST_SIZE);
                          //文件內容編解碼字符集設置
                          upload.setHeaderEncoding("UTF-8");
                  
                  3.4 獲取上傳的文件進行文件的寫出
                  //1.獲取所有請求提交的元素內容
                  int uploadCont = 0;//文件上傳總數計數
                          try {
                              List<FileItem> fileItems = upload.parseRequest(req);
                  
                              //判斷請求提交是否有內容
                              if(fileItems != null&&fileItems.size()>0){//如果有內容在進行上傳文件
                  
                                  for(FileItem item : fileItems){//遍歷請求項目
                                      if (!item.isFormField()){//當表單項目內容不是一個普通表單時(就是文件)
                  
                                          //獲取上傳的文件封裝為對象
                                          System.out.println("上傳中:文件名:"+item.getName());
                                          File file = new File(item.getName());
                  
                                          //封裝文件輸出路徑和對象
                                          String outPath = UPLOAD_DIRECTORY+"\\"+file.getName();
                                          //封裝一個輸出的文件對象
                                          File outFile = new File(outPath);
                                          //調用輸出方法寫出到硬盤位置
                                          item.write(outFile);
                  
                                          uploadCont++;
                                      }
                                  }
                  
                              }
                  
                          } catch (Exception e) {
                              System.err.println("文件上傳出錯");
                              e.printStackTrace();
                              res.setCode("9999");
                              res.setMsg("文件上傳出錯");
                              writer.print(res.toString());
                              writer.flush();
                              writer.close();
                              return;
                          }
                  
                          res.setCode("0000");
                          res.setMsg("文件上傳成功!");
                          res.setData(uploadCont);
                  
                  
                          writer.print(res.toString());
                          writer.flush();
                          writer.close();
                  

                  (4)前端文件上傳方法

                  4.1 表單提交方法
                  <form action="http://localhost:8090/webDemo/uploadFiles"
                    method="post"     #----  有文件上傳的請求只能為post請求
                        enctype="multipart/form-data"    #--- 文件上傳必須要定義
                  >
                      <input type="text" name="name" />
                     <input type="file" name="uploadFile" />
                      <input type="file" name="uploadFile2" />
                     <input type="submit" value="上傳" />
                  </form>
                  
                  4.2 ajax文件上傳方法
                  <form id="myForm">
                      <input type="file" name="file1"  />
                      <input type="file" name="file2"  />
                  </form>
                  
                  <button type="button" onclick="toUp()">AJAX文件上傳</button>
                  
                  function toUp(){
                  
                         //模擬一個表單數據
                         console.dir($("#myForm"));
                         var formData = new FormData($("#myForm")[0]);
                  
                         $.ajax({
                             url:"http://localhost:8090/webDemo/uploadFiles",
                             type:"POST",
                             data:formData,
                             async:false,
                             dataType:"JSON",
                             cache:false,
                             contentType:false,
                             processData:false,
                             success:function(data){
                                 console.dir(data);
                             },
                             error:function(XMLHttpRequest, textStatus, errorThrown){
                                 console.dir("請求失??!");
                             }
                         });
                     }
                  

                  (5) 項目開發中的文件上傳管理

                  要求:

                  單個業務數據能關聯相關的文件信息

                  要設計文件與數據關聯的中間表

                  實現:

                  能查詢數據關聯的文件

                  (1)設計數據與文件對應關系表
                  drop table if exists t_files;
                  
                  /*==============================================================*/
                  /* Table: t_files                                               */
                  /*==============================================================*/
                  create table t_files
                  (
                     isDelete             int comment '是否刪除:1:刪除 0:沒刪除',
                     ipaddress            varchar(50) comment '操作者IP地址',
                     addTime              datetime comment '添加時間',
                     updateTime           datetime comment '修改時間',
                     deleteTime           datetime comment '刪除時間',
                     fileID               varchar(50) not null comment '文件id',
                     bisID                varchar(50) comment '關聯業務id',
                     filePath             varchar(300) comment '文件位置',
                     fileName             varchar(50) comment '文件名稱',
                     fileExt              varchar(50) comment '文件后綴',
                     fileSize             varchar(50) comment '文件大小',
                     primary key (fileID)
                  );
                  
                  
                  (2) 在文件上傳時保存數據,改寫文件名稱
                   for(FileItem item : fileItems){//遍歷請求項目
                                      if (!item.isFormField()){//當表單項目內容不是一個普通表單時(就是文件)
                  
                  
                  
                                          //獲取上傳的文件封裝為對象
                                          System.out.println("上傳中:文件名:"+item.getName());
                                          File file = new File(item.getName());
                  
                                          //文件后綴
                                          String fileName = item.getName();
                                          int i = fileName.lastIndexOf(".");
                  
                                          String etx = item.getName().substring(i, item.getName().length());
                  
                                          //生成一個UUID的文件名(同時為關聯表主鍵字段)
                                          String pk = UUID.randomUUID().toString().replaceAll("-","").substring(0,20);
                  
                                          //封裝文件輸出路徑和對象
                                          String outPath = UPLOAD_DIRECTORY+"\\"+pk+etx;
                  
                                          //調用保存文件信息到文件關聯表中    !!!!關鍵!!!!!
                                          saveFileData(item,etx,pk,"user1",outPath);//模擬一個業務id為user1
                  
                                          //封裝一個輸出的文件對象
                                          File outFile = new File(outPath);
                                          //調用輸出方法寫出到硬盤位置
                                          item.write(outFile);
                  
                  
                                          uploadCont++;
                                      }
                                  }
                  
                  //保存關聯信息方法
                  /**
                       * 保存業務信息與文件信息關聯表
                       * @param item  文件對象
                       * @param etx  文件后綴
                       * @param pk  文件名稱
                       * @param user1 關聯業務id
                       * @param outPath  文件保存位置
                       */
                      private void saveFileData(FileItem item,String etx, String pk, String user1,String outPath) {
                  
                          Connection con = MyC3P0Util.getCon();
                  
                  
                  
                  
                          String sql = "INSERT INTO `t_files` VALUES\n" +
                                  "\t( 0, NULL, NULL, NULL, NULL, ?, ?, ?, ?, ?, ? );";
                          try{
                              PreparedStatement ps = con.prepareStatement(sql);
                  
                              ps.setString(1,pk);
                              ps.setString(2,user1);
                              ps.setString(3,outPath);
                              ps.setString(4,pk);
                              ps.setString(5,etx);
                              ps.setString(6,item.getSize()+"");
                  
                              ps.executeUpdate();
                  
                              con.close();
                          }catch (SQLException e){
                              System.err.println("保存數據到文件表異常!");
                              e.printStackTrace();
                          }
                  
                  
                      }
                  

                  2.文件下載

                  3.Excel導入

                  4.Excel導出

                  5.Java郵件發送

                  6.Tomcat的打包部署

                  隨時隨地學軟件編程-關注百度小程序和微信小程序
                  關于找一找教程網

                  本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。
                  本站提供了軟件編程、網站開發技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。
                  [JavaWeb開發常用組件功能]http://www.yachtsalesaustralia.com/tech/detail-279879.html

                  贊(0)
                  關注微信小程序
                  程序員編程王-隨時隨地學編程

                  掃描二維碼或查找【程序員編程王】

                  可以隨時隨地學編程啦!

                  技術文章導航 更多>
                  国产在线拍揄自揄视频菠萝

                        1. <dd id="erndk"></dd>