成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

JSP+Servlet實現(xiàn)文件上傳到服務(wù)器功能

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

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

項目目錄結(jié)構(gòu)大致如下:

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

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

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

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

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

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

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

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

增加用戶時代碼如下:

 // 增 public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("add方法被調(diào)用"); // 獲取數(shù)據(jù) 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; // 得到上傳到服務(wù)器上的文件路徑 // C:\\apache-tomcat-7.0.47\\webapps\\taobaoServlet4\\upload\\xx.jpg String uploadFilePath = request.getSession() .getServletContext().getRealPath("upload/"); File saveFile = new File(uploadFilePath, saveFileName); // 把保存的文件寫出到服務(wù)器硬盤上 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、封裝數(shù)據(jù) User user = new User(id, username, password, sex, birthday, address, saveFileName); // 3、調(diào)用邏輯層API IUserService iUserService = new UserServiceImpl(); // 4、控制跳轉(zhuǎn) 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>"); } }

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

 // 改 public void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("update方法被調(diào)用"); HttpSession session = request.getSession(); // 獲取數(shù)據(jù) 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("."),// 截取從最后一個"."到字符串結(jié)束的子串。  picturePath.length()); // 把文件名稱重命名為全球唯一的文件名 String uniqueName = UUID.randomUUID().toString(); saveFileName = uniqueName + extendedName;// 拼接路徑名 // 得到上傳到服務(wù)器上的文件路徑 // C:\\apache-tomcat-7.0.47\\webapps\\CommonhelloWorldServlet\\upload\\xx.jpg String uploadFilePath = request.getSession()  .getServletContext().getRealPath("upload/"); File saveFile = new File(uploadFilePath,  saveFileName); // 把保存的文件寫出到服務(wù)器硬盤上 try { item.write(saveFile); } catch (Exception e) { e.printStackTrace(); } // 3、調(diào)用邏輯層 API // 根據(jù)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、封裝數(shù)據(jù) User user = new User(id, username, password, sex, birthday, address, saveFileName);  if (iUserService.update(user) > 0) { System.out.println("修改數(shù)據(jù)成功!"); List<User> users = new ArrayList<User>(); users = iUserService.listAll(); session.setAttribute("users", users); // 4、控制跳轉(zhuǎn) response.sendRedirect("UserServlet?action=getPage"); } else { System.out.println("修改數(shù)據(jù)失敗!"); PrintWriter out = response.getWriter(); out.print("<script type="text/javascript">"); out.print("alert("修改數(shù)據(jù)失??!請重試!");"); out.print("</script>"); } }

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

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

標簽: JSP
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产精品久久久爽爽爽麻豆色哟哟| 欧美色欧美亚洲另类七区| a美女胸又www黄视频久久| 午夜精品视频| 麻豆91精品| 日韩欧美国产高清| 亚洲欧美另类小说| 国产成人精品午夜视频免费| 亚洲成人资源| 欧美一区二区女人| 一区二区三区精品在线| 国产高清不卡二三区| 国产一区二区三区成人欧美日韩在线观看| 欧美亚洲国产怡红院影院| 国产欧美一区二区三区鸳鸯浴 | 97久久久精品综合88久久| 国产一级精品aaaaa看| 日韩欧美第一区| 中文亚洲欧美| 欧美欧美午夜aⅴ在线观看| 亚洲丝袜自拍清纯另类| 国产大陆精品国产| 久久精品伊人| 日韩一区中文字幕| 99久久精品国产精品久久| 色伊人久久综合中文字幕| 1024成人网| av毛片久久久久**hd| 欧美日韩久久不卡| 亚洲制服丝袜av| 欧美亚韩一区| 欧美精品一区二| 国产美女精品一区二区三区| 91精品在线免费| 99riav一区二区三区| 成人动漫在线一区| 色婷婷久久久久swag精品| 亚洲欧美日韩国产综合| 91美女在线看| 欧美成人乱码一区二区三区| 蜜桃久久久久久久| 久久久久九九九| 伊人色综合久久天天人手人婷| 色综合天天天天做夜夜夜夜做| 欧美美女网站色| 麻豆一区二区三| 色老汉av一区二区三区| 亚洲综合色婷婷| 国产欧美91| 亚洲色欲色欲www| 国内精品福利| 国产精品久久二区二区| 色综合天天视频在线观看| 精品福利在线导航| 99久久精品免费| 26uuuu精品一区二区| 国产传媒日韩欧美成人| 91麻豆精品国产91久久久资源速度| 日韩精品亚洲专区| 91电影在线观看| 日本美女一区二区三区视频| 男女精品视频| 亚洲成人一区二区在线观看| 国产精品久久久久久久久久妞妞| 亚洲精品欧美专区| 亚洲一区三区视频在线观看| 亚洲国产精品久久一线不卡| 噜噜噜噜噜久久久久久91| 无吗不卡中文字幕| 欧美日韩你懂得| 韩日av一区二区| 日韩一区二区三区视频在线| 成人免费视频视频在线观看免费 | 国产精品亚洲午夜一区二区三区 | 国产综合自拍| 一区二区三区精品久久久| 一区二区三区四区五区精品视频| 日韩伦理av电影| 亚洲欧美日韩国产综合精品二区| 香蕉成人伊视频在线观看| 欧美性感一类影片在线播放| 国产乱码精品1区2区3区| 精品1区2区在线观看| 欧美日韩精品免费看| 一区二区三区四区激情| 午夜影院日韩| 国产一区啦啦啦在线观看| 精品久久人人做人人爰| 黄色av成人| 日韩精品成人一区二区三区| 欧美年轻男男videosbes| 99久久精品国产麻豆演员表| 综合网在线视频| 日本电影亚洲天堂一区| 欧美日韩国产123区| 成人高清免费观看| 亚洲美女偷拍久久| 欧美日韩免费视频| 99re亚洲国产精品| 亚洲影视在线播放| 91精品国产一区二区| 国模精品娜娜一二三区| 七七婷婷婷婷精品国产| 精品av综合导航| 日韩图片一区| 国产一区在线看| 亚洲欧美自拍偷拍色图| 欧美性大战久久久久久久蜜臀| 99久久er热在这里只有精品15| 一区二区三区四区在线免费观看| 欧美日韩精品欧美日韩精品一| 欧美日本二区| 精品一区二区三区免费毛片爱 | 日韩五码在线| 狠狠色2019综合网| 亚洲你懂的在线视频| 7777精品伊人久久久大香线蕉经典版下载 | 久久大逼视频| 欧美在线高清| 美脚の诱脚舐め脚责91| 国产精品人妖ts系列视频| 欧美色电影在线| 亚洲激情啪啪| yourporn久久国产精品| 日本三级韩国三级欧美三级| 中文字幕不卡一区| 欧美日韩久久一区二区| 一区二区av| 色综合天天综合给合国产| 老司机午夜精品99久久| 亚洲在线观看免费视频| 久久综合网色—综合色88| 在线亚洲+欧美+日本专区| 亚洲国产精品第一区二区| 成人免费看片app下载| 秋霞电影网一区二区| 一区二区三区在线免费视频| 精品国产伦一区二区三区观看方式 | 自拍偷拍欧美激情| 精品处破学生在线二十三| 欧美日韩色一区| 久久国产66| 亚洲深夜激情| 激情自拍一区| 欧美在线黄色| 岛国一区二区在线观看| 久久99精品久久久久久动态图| 亚洲激情网站免费观看| 国产免费久久精品| 26uuu成人网一区二区三区| 欧美久久一二三四区| 日本韩国一区二区三区| 国产欧美一区二区三区国产幕精品| 欧美另类视频| 色综合久久综合| 99久久久精品| av网站一区二区三区| 国产成人在线影院| 国产一区啦啦啦在线观看| 久久99日本精品| 奇米影视7777精品一区二区| 亚洲电影视频在线| 亚洲国产精品一区二区www| 亚洲另类色综合网站| 国产精品成人在线观看| 国产精品美女久久久久av爽李琼| 久久久九九九九| 国产视频一区二区三区在线观看 | 在线播放日韩| 亚洲国产日韩综合一区| 亚洲区一区二| 亚洲精品一二| 国产精品一区毛片| 性一交一乱一区二区洋洋av| 国产农村妇女精品一区二区| 亚洲一区国产| 久久久噜噜噜| 欧美色精品在线视频| 在线播放91灌醉迷j高跟美女 | 99精品久久免费看蜜臀剧情介绍 | 一区二区三区不卡视频在线观看| 亚洲人成人一区二区在线观看| 亚洲视频免费看| 亚洲444eee在线观看| 美女mm1313爽爽久久久蜜臀| 国内精品久久久久影院一蜜桃| 国产酒店精品激情| 白白色亚洲国产精品| 国产精品v欧美精品v日本精品动漫| 影音先锋中文字幕一区| 亚洲欧美日韩一区在线观看| 在线精品视频一区二区三四| 欧美日产在线观看| 日韩欧美在线影院| 国产精品欧美精品| 亚洲综合精品自拍| 国产在线精品免费| 午夜久久久久| 午夜在线精品| 欧美精品免费视频|