日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JSP+Servlet實現文件上傳到服務器功能

瀏覽:921日期:2022-06-07 14:08:30

本文實例為大家分享了JSP+Servlet實現文件上傳到服務器功能的具體代碼,供大家參考,具體內容如下

項目目錄結構大致如下:

正如我在上圖紅線畫的三個東西:Dao、service、servlet 這三層是主要的結構,類似 MVC 架構,Dao是模型實體類(邏輯層),service是服務層,servlet是視圖層,三者協作共同完成項目。

這里的User是由user表來定義的一個類,再封裝增刪改查等操作,實現從數據庫查詢與插入,修改與刪除等操作,并實現了分頁操作,也實現了將圖片放到服務器上運行的效果。

Dao層:主要實現了User類的定義,接口IUserDao的定義與實現(UserDaoImpl);

service層:直接定義一個接口類IUserService,與IUserDao相似,再實現其接口類UserServiceImpl,直接實例化UserDaoImpl再調用其方法來實現自己的方法,重用了代碼。詳見代碼吧;

servlet層:起初是將表User 的每個操作方法都定義成一個servlet 去實現,雖然簡單,但是太多了,不好管理,于是利用 基類BaseServlet 實現了“反射機制”,通過獲取的 action 參數自己智能地調用對應的方法,而UserServlet則具體實現自己的方法,以供調用,方便許多,詳見之前的博文或下述代碼。

將文件上傳到 tomcat 服務器的編譯后運行的過程的某個文件關鍵要在每次編譯后手動為其創建該文件夾來存放相應的上傳文件,否則會導致每次重啟 tomcat 服務器后該編譯后的工程覆蓋了原先的,導致上傳文件存放的文件夾不存在,導致代碼找不到該文件夾而報錯,即上傳不成功。如下圖所示:

主要是考慮圖片路徑的問題,手工設置路徑肯定不能保證不重復,所以取到上傳圖片的后綴名后利用隨機生成的隨機數作為圖片名,這樣就不會重復名字了:

String extendedName = picturePath.substring(picturePath.lastIndexOf("."),// 截取從最后一個"."到字符串結束的子串。 picturePath.length()); // 把文件名稱重命名為全球唯一的文件名 String uniqueName = UUID.randomUUID().toString(); saveFileName = uniqueName + extendedName;// 拼接路徑名

增加用戶時代碼如下:

 // 增 public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("add方法被調用"); // 獲取數據 int id = 0; String username = null; String password = null; String sex = null; Date birthday = null; String address = null; String saveFileName = null; String picturePath = null; // 得到表單是否以enctype="multipart/form-data"方式提交 boolean isMulti = ServletFileUpload.isMultipartContent(request); if (isMulti) { // 通過FileItemFactory得到文件上傳的對象 FileItemFactory fif = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(fif);  try { List<FileItem> items = upload.parseRequest(request); for (FileItem item : items) { // 判斷是否是普通表單控件,或者是文件上傳表單控件 boolean isForm = item.isFormField(); if (isForm) {// 是普通表單控件 String name = item.getFieldName(); if ("id".equals(name)) { id = Integer.parseInt(item.getString("utf-8")); System.out.println(id); } if ("sex".equals(name)) { sex = item.getString("utf-8"); System.out.println(sex); } if ("username".equals(name)) { username = item.getString("utf-8"); System.out.println(username); } if ("password".equals(name)) { password = item.getString("utf-8"); System.out.println(password); } if ("birthday".equals(name)) { String birthdayStr = item.getString("utf-8"); SimpleDateFormat sdf = new SimpleDateFormat(  "yyyy-MM-dd"); try { birthday = sdf.parse(birthdayStr); } catch (ParseException e) { e.printStackTrace(); } System.out.println(birthday); } if ("address".equals(name)) { address = item.getString("utf-8"); System.out.println(address); } if ("picturePath".equals(name)) { picturePath = item.getString("utf-8"); System.out.println(picturePath); } } else {// 是文件上傳表單控件 // 得到文件名 xxx.jpg String sourceFileName = item.getName(); // 得到文件名的擴展名:.jpg String extendedName = sourceFileName.substring( sourceFileName.lastIndexOf("."), sourceFileName.length()); // 把文件名稱重命名為全球唯一的文件名 String uniqueName = UUID.randomUUID().toString(); saveFileName = uniqueName + extendedName; // 得到上傳到服務器上的文件路徑 // C:\\apache-tomcat-7.0.47\\webapps\\taobaoServlet4\\upload\\xx.jpg String uploadFilePath = request.getSession() .getServletContext().getRealPath("upload/"); File saveFile = new File(uploadFilePath, saveFileName); // 把保存的文件寫出到服務器硬盤上 try { item.write(saveFile); } catch (Exception e) { e.printStackTrace(); } } } } catch (NumberFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 2、封裝數據 User user = new User(id, username, password, sex, birthday, address, saveFileName); // 3、調用邏輯層API IUserService iUserService = new UserServiceImpl(); // 4、控制跳轉 HttpSession session = request.getSession(); if (iUserService.save(user) > 0) { System.out.println("添加新用戶成功!"); List<User> users = new ArrayList<User>(); users = iUserService.listAll(); session.setAttribute("users", users); response.sendRedirect("UserServlet?action=getPage"); } else { System.out.println("添加新用戶失敗!"); PrintWriter out = response.getWriter(); out.print("<script type="text/javascript">"); out.print("alert("添加新用戶失敗!請重試!");"); out.print("</script>"); } }

修改用戶時注意考慮圖片更改和沒更改這兩種情況,圖片更改時要先獲取原圖片并刪除其在服務器上的圖片,再添加新圖片到服務器;圖片不更改時則無需更新圖片路徑。

 // 改 public void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("update方法被調用"); HttpSession session = request.getSession(); // 獲取數據 int id = (int)session.getAttribute("id"); String username = null; String password = null; String sex = null; Date birthday = null; String address = null; String saveFileName = null; String picturePath = null; IUserService iUserService = new UserServiceImpl(); // 得到表單是否以enctype="multipart/form-data"方式提交 boolean isMulti = ServletFileUpload.isMultipartContent(request); if (isMulti) { // 通過FileItemFactory得到文件上傳的對象 FileItemFactory fif = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(fif); try { List<FileItem> items = upload.parseRequest(request); for (FileItem item : items) { // 判斷是否是普通表單控件,或者是文件上傳表單控件 boolean isForm = item.isFormField(); if (isForm) {// 是普通表單控件 String name = item.getFieldName(); if ("sex".equals(name)) { sex = item.getString("utf-8"); System.out.println(sex); } if ("username".equals(name)) { username = item.getString("utf-8"); System.out.println(username); } if ("password".equals(name)) { password = item.getString("utf-8"); System.out.println(password); } if ("birthday".equals(name)) { String birthdayStr = item.getString("utf-8"); SimpleDateFormat sdf = new SimpleDateFormat(  "yyyy-MM-dd"); try { birthday = sdf.parse(birthdayStr); } catch (ParseException e) { e.printStackTrace(); } System.out.println(birthday); } if ("address".equals(name)) { address = item.getString("utf-8"); System.out.println(address); } if ("picturePath".equals(name)) { picturePath = item.getString("utf-8"); System.out.println(picturePath); } } else {// 是文件上傳表單控件 // 得到文件名 xxx.jpg picturePath = item.getName(); if (picturePath != "") {// 有選擇要上傳的圖片 // 得到文件名的擴展名:.jpg String extendedName = picturePath.substring(  picturePath.lastIndexOf("."),// 截取從最后一個"."到字符串結束的子串。  picturePath.length()); // 把文件名稱重命名為全球唯一的文件名 String uniqueName = UUID.randomUUID().toString(); saveFileName = uniqueName + extendedName;// 拼接路徑名 // 得到上傳到服務器上的文件路徑 // C:\\apache-tomcat-7.0.47\\webapps\\CommonhelloWorldServlet\\upload\\xx.jpg String uploadFilePath = request.getSession()  .getServletContext().getRealPath("upload/"); File saveFile = new File(uploadFilePath,  saveFileName); // 把保存的文件寫出到服務器硬盤上 try { item.write(saveFile); } catch (Exception e) { e.printStackTrace(); } // 3、調用邏輯層 API // 根據id查詢用戶并獲取其之前的圖片 User user = iUserService.getUserById(id); String oldPic = user.getPicturePath(); String oldPicPath = uploadFilePath + "\\" + oldPic; File oldPicTodelete = new File(oldPicPath); oldPicTodelete.delete();// 刪除舊圖片 } } } } catch (NumberFormatException e) { e.printStackTrace(); } catch (FileUploadException e) { e.printStackTrace(); } } System.out.println(id + "\t" + username + "\t" + password + "\t" + sex + "\t" + address + "\t" + picturePath + "\t" + birthday);  // 2、封裝數據 User user = new User(id, username, password, sex, birthday, address, saveFileName);  if (iUserService.update(user) > 0) { System.out.println("修改數據成功!"); List<User> users = new ArrayList<User>(); users = iUserService.listAll(); session.setAttribute("users", users); // 4、控制跳轉 response.sendRedirect("UserServlet?action=getPage"); } else { System.out.println("修改數據失敗!"); PrintWriter out = response.getWriter(); out.print("<script type="text/javascript">"); out.print("alert("修改數據失敗!請重試!");"); out.print("</script>"); } }

刪除的話就比較簡單了,直接獲取原圖片路徑并刪除,則原圖片在服務器上被刪除。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。

標簽: JSP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
在线中文字幕播放| 奇米色欧美一区二区三区| 婷婷综合福利| 国产欧美丝祙| 国产成人精品福利| 欧美日韩一二| 免费人成在线不卡| 麻豆中文一区二区| 国产99精品| 日韩在线网址| 蜜桃久久久久| 里番精品3d一二三区| 夜鲁夜鲁夜鲁视频在线播放| 亚洲精品一区二区妖精| 亚洲开心激情| 久久精品女人| 日韩一级不卡| 国产精品美女午夜爽爽| 色一区二区三区| 鲁大师成人一区二区三区| 国产精品亚洲综合色区韩国| 日韩美女精品| 亚洲一二av| 欧美成人精品午夜一区二区| 91av亚洲| 视频一区国产视频| 日韩一区精品视频| 国产精品对白久久久久粗| 私拍精品福利视频在线一区| 99国产精品久久久久久久成人热| 国产午夜一区| 久久在线电影| 国产欧美一区| 欧美.日韩.国产.一区.二区| 日本午夜免费一区二区 | 国产精品久av福利在线观看| 日韩精品dvd| 日本欧美一区二区| 91看片一区| 手机精品视频在线观看| 国产精品久久久久久久久久10秀| 新版的欧美在线视频| 99成人在线| 亚洲免费观看高清完整版在线观| 精品美女视频| 爽好久久久欧美精品| 国产一区日韩| 日本91福利区| 中日韩男男gay无套| 成人午夜在线| 亚洲人成高清| 国产一在线精品一区在线观看| 国产精品午夜一区二区三区| 午夜在线视频观看日韩17c| 国产欧美精品| 久久国产精品99国产| 久久麻豆精品| 成人精品久久| 国产欧美日韩精品一区二区三区| 模特精品在线| 激情婷婷欧美| 精品国产三区在线| 日本精品国产| 五月激激激综合网色播| 亚洲欧美日本国产专区一区| 欧美亚洲国产一区| 激情亚洲影院在线观看| 麻豆精品在线观看| 国产精品一区二区精品视频观看| 久久久精品午夜少妇| 精品久久视频| 国产精品乱战久久久| 日本强好片久久久久久aaa| 美女91精品| 亚洲午夜电影| 精品在线99| 欧美日韩水蜜桃| 久久一区二区三区喷水| 日韩精品网站| 欧美成人精品三级网站| 在线视频精品| 免费在线观看一区二区三区| se01亚洲视频| 日韩深夜视频| 91午夜精品| 日韩在线黄色| 日韩精品高清不卡| 日韩和欧美一区二区| 亚洲影视一区| 日本一区免费网站| 在线一区二区三区视频| 丝袜a∨在线一区二区三区不卡| 欧美一区二区三区激情视频| 91精品蜜臀一区二区三区在线| 日韩精品1区| 欧美色图国产精品| 亚洲一区二区动漫| 蜜桃一区二区三区在线观看| 亚洲精品系列| 欧美偷窥清纯综合图区| 九九久久国产| 国产精品毛片久久| 午夜日本精品| 亚洲一区二区日韩| 日韩激情av在线| 欧美交a欧美精品喷水| 精品视频一区二区三区在线观看 | 国产精品亚洲一区二区三区在线观看| 高清一区二区三区av| 欧美成a人免费观看久久| 99视频精品全部免费在线视频| 精品国产精品久久一区免费式| 午夜精品成人av| 国产视频一区免费看| 午夜亚洲福利| 国产精品九九| 日韩精品中文字幕第1页| 久久精品二区三区| 亚洲欧美日本国产| 精品欧美视频| 激情五月色综合国产精品| 婷婷综合福利| 国产伦久视频在线观看| 亚州av乱码久久精品蜜桃| 日韩av中文在线观看| 精品久久福利| 欧美黄色网页| 亚洲日韩中文字幕一区| 国产一区调教| 久久xxxx精品视频| 精品一区二区三区的国产在线观看| 久久国产亚洲| 日韩激情综合| 亚洲福利国产| 奇米777国产一区国产二区| 免费观看亚洲| 日本成人精品| 日韩精品午夜| 日韩不卡在线观看日韩不卡视频 | 久久91视频| 日韩视频免费| 国产精品mm| 在线视频日韩| 美女视频免费精品| 免费日韩av| 国产在线不卡一区二区三区| 国产亚洲高清视频| 精品72久久久久中文字幕| 亚洲尤物av| 成人片免费看| 青青国产精品| 欧美日韩国产免费观看| 国内不卡的一区二区三区中文字幕| 亚洲中字黄色| 久久天堂精品| 日韩中文欧美在线| 日韩免费av| 国产麻豆一区二区三区精品视频| 亚洲国产一区二区在线观看| 久久精品系列| 日韩av中文字幕一区| 野花国产精品入口| 日韩成人亚洲| 成人台湾亚洲精品一区二区| 亚洲区第一页| 宅男噜噜噜66国产日韩在线观看| 国产一区二区三区亚洲| 亚洲精品美女91| 亚洲精品123区| 国产精品毛片久久| 亚洲精品系列| 午夜亚洲一区| 欧美日韩国产高清电影| 成人日韩在线| 国产一区二区三区四区五区| 国产欧美亚洲一区| 亚洲精品日韩久久| 中文精品在线| 91久久久精品国产| 狠狠久久伊人中文字幕| 国产探花在线精品| 香蕉久久一区| 亚洲欧洲美洲国产香蕉| 免播放器亚洲| 影音先锋国产精品| 日韩欧美另类一区二区| 国际精品欧美精品| 国产精品玖玖玖在线资源| 欧美一级二级视频| 中文字幕一区二区三区日韩精品| 国产农村妇女精品一二区| 国内激情久久| 欧美+亚洲+精品+三区| 久久中文视频| www成人在线视频| 日本综合字幕| 久久九九精品| 五月天久久网站| 亚洲一区二区动漫| 亚洲欧美日韩专区|