日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

html网页上传到服务器_JSP+Servlet实现文件上传到服务器功能

發(fā)布時間:2025/3/12 javascript 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html网页上传到服务器_JSP+Servlet实现文件上传到服务器功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

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

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

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

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

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

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

主要是考慮圖片路徑的問題,手工設(shè)置路徑肯定不能保證不重復(fù),所以取到上傳圖片的后綴名后利用隨機(jī)生成的隨機(jī)數(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 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();

// 得到文件名的擴(kuò)展名:.jpg

String extendedName = sourceFileName.substring(

sourceFileName.lastIndexOf("."),

sourceFileName.length());

// 把文件名稱重命名為全球唯一的文件名

String uniqueName = UUID.randomUUID().toString();

saveFileName = uniqueName + extendedName;

// 得到上傳到服務(wù)器上的文件路徑

// C:apache-tomcat-7.0.47webappsaobaoServlet4甥汰慯dxx.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 users = new ArrayList();

users = iUserService.listAll();

session.setAttribute("users

總結(jié)

以上是生活随笔為你收集整理的html网页上传到服务器_JSP+Servlet实现文件上传到服务器功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。