У цьому прикладі ми збираємось дізнатись про завантаження та завантаження файлу через JSP.
Вихідні файли - це дуже важливі операції. Тут ми збираємося читати та писати файл за допомогою JSP.
Завантаження файлу JSP
- Ми можемо завантажувати будь-які файли за допомогою JSP.
- Це може бути текстовий файл, двійковий файл, файл зображення або будь-який інший документ.
- Тут у разі завантаження файлу буде використовуватися лише метод POST, а не метод GET.
- Для атрибута Enctype слід встановити значення multipart / form-data.
Приклад: Використання дії
У цьому прикладі ми завантажуємо файл за допомогою об’єкта IO
Action_file.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Файл гуру Завантаження файлу гуру: Виберіть файл:
Action_file_upload.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ import import = "java.io. *, java.util. *, javax.servlet. *"%><% @ page import = "javax.servlet.http. *"%><% @ page import = "org.apache.commons.fileupload. *"%><% @ page import = "org.apache.commons.fileupload.disk. *"%><% @ page import = "org.apache.commons.fileupload.servlet. *"%><% @ page import = "org.apache.commons.io.output. *"%>Завантажити файл гуру <%Файловий файл;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;Рядок filePath = "E: / guru99 / data";Рядок contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory factory = новий DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (новий файл ("c: \\ temp"));ServletFileUpload upload = новий ServletFileUpload (завод);upload.setSizeMax (maxFileSize);спробуй {Список fileItems = upload.parseRequest (запит);Ітератор i = fileItems.iterator ();out.println ("");out.println ("");while (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {Ім'я поля рядка = fi.getFieldName ();Рядок fileName = fi.getName ();логічний isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();файл = новий файл (filePath + "yourFileName");fi.write (файл);out.println ("Завантажена назва файлу: + filePath + fileName + "
");}}out.println ("");out.println ("");} catch (Виняток ex) {System.out.println (ех);}} ще {out.println ("");out.println ("");out.println ("Файл не завантажено
");out.println ("");out.println ("");}%>
Пояснення коду:
Action_file.jsp
Рядок коду 12-18: Тут ми створюємо форму з полем файлу, яка завантажить файл на сервер, а дія буде передана до action_file_upload.jsp
Action_file_upload.jsp
Рядок коду 20: Тут ми надаємо шлях до файлу до певного шляху
Кодовий рядок 23-38: Тут ми перевіряємо, чи є тип вмісту багаточастинним / form-data. Якщо це так, тоді вміст має тип файлу, і його читають. Після читання файлу він записується у тимчасовий файл, а потім тимчасовий файл перетворюється в основний файл.
Коли ви виконуєте наведений вище код, ви отримуєте такий результат
Вихід:
Ми завантажуємо файл за допомогою кнопки вибрати файл, а кнопка завантаження файлу завантажить файл на сервер за вказаним шляхом.
Приклад: Використання операцій JSP
У цьому прикладі ми збираємось завантажити файл за допомогою операцій JSP.
Ми візьмемо форму, яка матиме кнопку "завантажити", і коли ви натиснете кнопку завантаження, файл буде завантажений.
Uploading_1.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Гуру, який завантажує файл Файл:
Пояснення коду:
Рядок коду 11-12: Тут ми беремо форму, яка діє на сервлет guru_upload, який пройде через метод POST. Крім того, тут ми вводимо атрибут, тобто атрибут, який визначає спосіб кодування даних форми та надсилання їх на сервер, і він використовується лише з методом POST. Тут ми встановлюємо як multipart / form-data, які призначені для файлу (оскільки дані будуть великими).
Рядок коду 13: Тут ми вказуємо елемент guru_file з файлом типу і надаємо розмір 50.
Рядок коду 15: Це кнопка типу надсилання з назвою "Завантажити", через яку буде викликаний сервлет дії, а запит буде оброблений, а файл буде прочитано та записано в сервлет.
Guru_upload.java
демотест пакету;імпорт java.io.File;імпортувати java.io.IOException;імпортувати java.util.List;імпортувати javax.servlet.ServletException;імпортувати javax.servlet.http.HttpServlet;імпортувати javax.servlet.http.HttpServletRequest;імпортувати javax.servlet.http.HttpServletResponse;імпорт org.apache.commons.fileupload.FileItem;імпортуйте org.apache.commons.fileupload.disk.DiskFileItemFactory;імпорт org.apache.commons.fileupload.servlet.ServletFileUpload;відкритий клас guru_upload розширює HttpServlet {приватний статичний фінал long serialVersionUID = 1L;public guru_upload () {супер ();// TODO Автогенерована заглушка конструктора}захищена порожнеча doPost (запит HttpServletRequest, відповідь HttpServletResponse) кидає ServletException, IOException {if (ServletFileUpload.isMultipartContent (запит)) {спробуй {Списокmultiparts = new ServletFileUpload (new DiskFileItemFactory ()). ParseRequest (запит);for (FileItem item: multiparts) {if (! item.isFormField ()) {Ім'я рядка = новий файл (item.getName ()). GetName ();item.write (новий файл ("c: / guru / upload" + File.separator + name));}}// Файл успішно завантаженоrequest.setAttribute ("gurumessage", "Файл успішно завантажено");} catch (Виняток ex) {request.setAttribute ("gurumessage", "Помилка завантаження файлу через" + ex);}} ще {request.setAttribute ("gurumessage", "Файл не знайдено");}request.getRequestDispatcher ("/ result.jsp"). forward (запит, відповідь);}}
Пояснення коду:
Рядок коду 12-14: Тут нам доведеться імпортувати бібліотеку org.apache.commons у конфігурацію коду. Нам доведеться імпортувати клас завантаження файлів з бібліотеки org.apache.commons.
Рядок коду 23: Тут ми маємо метод doPost (), який буде викликаний, коли ми передаємо метод POST в JSP, і він буде запитувати та відповідати об'єктами як його параметри
Кодовий рядок 26: Тут ми створюємо об’єкт класу ServletFileUpload з пакета fileUpload з бібліотеки org.apache.commons, який перевірятиме, чи є в JSP файлові об’єкти. Якщо який-небудь знайдений, ці файлові об'єкти будуть взяті із запиту.
Кодовий рядок 27-32: Ми повторимо кількість файлів, перевіривши, скільки елементів файлу присутні в об'єкті декількох частин, який є об'єктом списку (якщо ми завантажуємо більше одного файлу), і збережемо його в папці c: / guru / upload назва файлу, яка була надана. Ми записуємо файл, використовуючи метод запису файлового об’єкта, у зазначену папку.
Кодовий рядок 34: Якщо немає винятку, тоді ми встановлюємо атрибут у запиті як gurumessage зі значенням "Файл успішно завантажено".
Кодовий рядок 35-36: Якщо виникає виняток, то з'являється повідомлення про те, що "Помилка завантаження файлу"
Кодовий рядок 40: Якщо файл не знайдено, встановіть повідомлення як "Файл не знайдено"
Рядок коду 42: Переадресація запиту за допомогою об'єкта requestdispatcher до result.jsp з об'єктами запиту та відповіді.
Результат.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Результат гуру <% String msg = (String) request.getAttribute ("повідомлення");out.println (msg);%>
Пояснення коду:
Рядок коду 10: Тут ми отримуємо атрибут із об’єкта запиту зі значенням gurumessage у об’єкт рядка.
Код Line11: Тут ми друкуємо це повідомлення.
Коли ми виконуємо наведений вище код, ми отримуємо наступний результат
Вихід:
Ми отримуємо форму, в якій є поля для вибору файлу з каталогу. Після того, як файл вибрано, ми повинні натиснути на кнопку завантаження.
Після натискання кнопки завантаження ми отримуємо повідомлення про те, що файл успішно завантажений.
На діаграмі нижче ми бачимо, що файл було завантажено в папку c: / guru / upload.
Завантаження файлу:
У цьому прикладі ми збираємося завантажити файл із каталогу, натиснувши кнопку.
Downloading_1.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Завантаження прикладу гуру Гуру Завантаження файлу Завантажте тут !!!
Пояснення коду:
Рядок коду 10: Тут ми дали посилання для завантаження файлу з папки c: / guru / upload за допомогою сервлету guru_download.
Guru_download.java
демотест пакету;імпортувати java.io.FileInputStream;імпортувати java.io.IOException;імпортувати java.io.PrintWriter;імпортувати javax.servlet.ServletException;імпортувати javax.servlet.http.HttpServlet;імпортувати javax.servlet.http.HttpServletRequest;імпортувати javax.servlet.http.HttpServletResponse;/ *** Клас реалізації сервлету guru_download* /відкритий клас guru_download розширює HttpServlet {приватний статичний фінал long serialVersionUID = 1L;захищений порожній doGet (запит HttpServletRequest, відповідь HttpServletResponse) кидає ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();Рядок gurufile = "test.txt";Рядок gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Розміщення вмісту", "вкладення; ім'я файлу = \" "+ gurufile + "\" ");FileInputStream fileInputStream = новий FileInputStream (gurupath+ гуруфіл);int i;while ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (запит HttpServletRequest, відповідь HttpServletResponse)* /захищена порожнеча doPost (запит HttpServletRequest, відповідь HttpServletResponse) кидає ServletException, IOException {// Автоматично згенерований заглушок TODO}}
Пояснення коду:
Кодовий рядок 3-5: Тут ми імпортуємо FileInputStream, IO Exception та PrintWriter з пакета java.io.
Рядок коду 15: Ми визначаємо сервлет guru_download, який розширює HttpServlet.
Рядок коду 18: Як ми визначили href, який буде вкладений у URL, тому буде оброблено метод GET (doGet буде викликаний в сервлеті), який також включає об'єкти запиту та відповіді.
Рядок коду 19-20: Ми встановлюємо тип вмісту в об'єкті відповіді, а також отримуємо об'єкт записувача з відповіді.
Рядок коду 21-22: Визначення змінної як gurufile як значення test.txt та gurupath як c: / guru / upload /
Рядок коду 23-25: Ми встановлюємо тип вмісту за допомогою об'єкта відповіді, і ми використовуємо метод setHeader, який встановлює заголовок в об'єкт відповіді як ім'я файлу, який було завантажено.
Кодовий рядок 27-28: Ми створюємо FileInputStream, в який ми додамо gurupath + gurufile.
Кодовий рядок 31-33: Тут ми взяли цикл while, який буде виконуватися до зчитування файлу, отже, ми задали умову як! = -1. У цьому стані ми пишемо за допомогою об'єкта друку друкарських машин.
При виконанні вищевказаного коду ви отримаєте наступний результат
Вихід:
Вихід:
Ми повинні натиснути на downloading_1.jsp, ми отримаємо гіперпосилання як "Завантажити тут". Після натискання цього файлу гіперпосилання він буде завантажений в систему.
Короткий зміст:
- Ми дізналися про реєстраційну форму для реєстрації в будь-якій заявці
- Дізнався більше про те, як працюють форми входу та виходу.
- Також дізнався про завантаження та завантаження файлу через JSP.