Bu örnekte, JSP aracılığıyla bir dosyanın yüklenmesi ve indirilmesi hakkında bilgi edineceğiz.
Dosya Giriş çıkışı çok önemli işlemlerdir. Burada JSP kullanarak bir dosya okuyup yazacağız.
JSP Dosya Yükleme
- JSP kullanarak herhangi bir dosyayı yükleyebiliriz.
- Bir metin dosyası, ikili dosya, görüntü dosyası veya başka herhangi bir belge olabilir.
- Burada dosya yükleme durumunda, GET yöntemi değil, yalnızca POST yöntemi kullanılacaktır.
- Enctype özelliği multipart / form-data olarak ayarlanmalıdır.
Örnek: Eylemi Kullanma
Bu örnekte, IO nesnesini kullanarak bir dosya yüklüyoruz
Action_file.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Guru Dosyası Guru Dosya Yükleme: Dosya seçin:
Action_file_upload.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ page 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. *"%>Guru Dosya Yükleme <%Dosya dosyası;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";Dize contentType = request.getContentType ();eğer ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory fabrika = yeni DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (yeni Dosya ("c: \\ temp"));ServletFileUpload upload = new ServletFileUpload (fabrika);upload.setSizeMax (maxFileSize);Deneyin{List fileItems = upload.parseRequest (istek);Yineleyici i = fileItems.iterator ();out.println ("");out.println ("");while (i.hasNext ()){Dosya Öğesi fi = (Dosya Öğesi) i.next ();eğer (! fi.isFormField ()) {String fieldName = fi.getFieldName ();String fileName = fi.getName ();boole isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();file = new File (filePath + "yourFileName");fi.write (dosya);out.println ("Yüklenen Dosya Adı: + dosyaYolu + dosyaAdı + "
");}}out.println ("");out.println ("");} catch (Exception ex) {System.out.println (eski);}}Başka{out.println ("");out.println ("");out.println ("Dosya yüklenmedi
");out.println ("");out.println ("");}%>
Kodun açıklaması:
Action_file.jsp
Kod Satırı 12-18: Burada sunucuya dosya yükleyecek ve action_file_upload.jsp'ye işlem iletilecek dosya alanlı form oluşturuyoruz.
Action_file_upload.jsp
Kod Satırı 20: Burada dosya yolunu belirli bir yola veriyoruz
Code Line 23-38: Burada içerik türünün multipart / form-data olup olmadığını kontrol ediyoruz. Durum böyleyse, içerik dosya türündedir ve okunur. Dosya okunduktan sonra geçici dosyaya yazılır ve ardından geçici dosya ana dosyaya dönüştürülür.
Yukarıdaki kodu çalıştırdığınızda, aşağıdaki çıktıyı alırsınız
Çıktı:
Dosya seç düğmesi seçeneğini kullanarak dosya yüklüyoruz ve dosya yükle düğmesi, dosyayı sağlanan yola sunucuya yükleyecektir.
Örnek: JSP işlemlerini kullanma
Bu örnekte, JSP işlemlerini kullanarak bir dosya yükleyeceğiz.
"Yükle" butonu olan bir form alacağız ve yükle butonuna tıkladığınızda dosya yüklenecektir.
Uploading_1.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Guru Dosya Yükleniyor Dosya:
Kodun açıklaması:
Kod Satırı 11-12: Burada, POST yönteminden geçecek olan servlet guru_upload üzerinde eylemi olan bir form alıyoruz. Ayrıca burada, form verisinin nasıl kodlanıp sunucuya gönderileceğini belirten ie özniteliğini kodlayacağız ve sadece POST yöntemi ile kullanılıyor. Burada dosya için olan multipart / form-data olarak ayarlıyoruz (veri büyük olacağından).
Code Line 13: Burada type file ile guru_file elementini belirleyip size 50 olarak boyut veriyoruz.
Kod Satırı 15: Bu, üzerinde "Yükleme" adlı bir gönderme türü düğmesidir; bu düğme aracılığıyla eylem sunucu uygulamasının çağrılacağı ve isteğin buna işleneceği ve dosyanın sunucu uygulamasına okunup yazılacağı.
Guru_upload.java
paket demotest;java.io.File içe aktarma;java.io.IOException'ı içe aktarın;import java.util.List;import javax.servlet.ServletException;javax.servlet.http.HttpServlet'i içe aktar;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;org.apache.commons.fileupload.FileItem içe aktarımı;org.apache.commons.fileupload.disk.DiskFileItemFactory içe aktarımı;org.apache.commons.fileupload.servlet.ServletFileUpload dosyasını içe aktarın;public class guru_upload, HttpServlet {özel statik son uzun serialVersionUID = 1L;public guru_upload () {Süper();// TODO Otomatik oluşturulan yapıcı saplaması}korumalı void doPost (HttpServletRequest isteği, HttpServletResponse yanıtı) ServletException, IOException {if (ServletFileUpload.isMultipartContent (istek)) {Deneyin {Listemultiparts = new ServletFileUpload (yeni DiskFileItemFactory ()). ParseRequest (istek);for (FileItem öğesi: multipart) {eğer (! item.isFormField ()) {Dize adı = yeni Dosya (item.getName ()). GetName ();item.write (yeni Dosya ("c: / guru / upload" + File.separator + adı));}}//Dosya başarıyla yüklendirequest.setAttribute ("gurumessage", "Dosya Başarıyla Yüklendi");} catch (Exception ex) {request.setAttribute ("gurumessage", "Dosya Yüklenemedi" + ex nedeniyle);}}Başka{request.setAttribute ("gurumessage", "Dosya bulunamadı");}request.getRequestDispatcher ("/ sonuç.jsp"). forward (istek, yanıt);}}
Kodun açıklaması:
Kod Satırı 12-14: Burada org.apache.commons kitaplığını kodun yapılandırmasına aktarmamız gerekecek. Org.apache.commons kitaplığından fileupload sınıfını içe aktarmamız gerekecek.
Kod Satırı 23: Burada, JSP'de POST yöntemini geçerken çağrılacak ve parametreleri olarak nesneleri talep edecek ve yanıtlayacak doPost () yöntemimiz var.
Kod Satırı 26: Burada org.apache.commons kitaplığından fileUpload paketinden JSP'de herhangi bir dosya nesnesi olup olmadığını kontrol edecek ServletFileUpload sınıfının bir nesnesini oluşturuyoruz. Herhangi bir bulunursa, bu dosya nesnesi istekten alınacaktır.
Kod Satırı 27-32: Bir liste nesnesi olan multiparts nesnesinde kaç dosya öğesinin bulunduğunu kontrol ederek (birden fazla dosya yüklersek) ve c: / guru / upload klasörüne kaydederek dosya sayısını yineleyeceğiz. sağlanan dosya adı. Dosyayı, belirtilen klasöre fileobject'in yazma yöntemini kullanarak yazıyoruz.
Kod Satırı 34: Bir istisna yoksa, istekte özniteliği "Dosya başarıyla yüklendi" değeriyle gurum mesajı olarak ayarlıyoruz.
Kod Satırı 35-36: İstisna oluşursa "Dosya yükleme başarısız" mesajını ayarlama
Kod Satırı 40: Dosya bulunamazsa mesajı "Dosya bulunamadı" olarak ayarlayın
Code Line 42: requestdispatcher nesnesini kullanarak isteği, istek ve yanıt nesneleriyle result.jsp'ye iletme.
Result.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Guru Sonucu <% String msg = (Dize) request.getAttribute ("mesaj");out.println (msg);%>
Kodun açıklaması:
Kod Satırı 10: Burada, istek nesnesinden özniteliği değer gurum mesajıyla bir dizge nesnesine alıyoruz.
Code Line11: İşte bu mesajı yazdırıyoruz.
Yukarıdaki kodu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz
Çıktı:
Dizinden bir dosya seçmek için alanların olduğu bir form alıyoruz. Dosya seçildikten sonra, yükle düğmesine tıklamamız gerekir.
Yükle düğmesi tıklandığında, dosyanın başarıyla yüklendiğine dair mesaj alıyoruz.
Aşağıdaki diyagramda dosyanın c: / guru / upload klasörüne yüklendiğini görebiliriz.
Dosya indiriliyor:
Bu örnekte, butonuna tıklayarak bir dizinden bir dosya indireceğiz.
İndiriliyor_1.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Guru Örneğini İndirme Guru Dosyayı İndiriyor Buradan İndirin !!!
Kodun açıklaması:
Kod Satırı 10: Burada, servlet guru_download kullanarak c: / guru / upload klasöründen bir dosya indirmek için bağlantı verdik.
Guru_download.java
paket demotest;java.io.FileInputStream'i içe aktarın;java.io.IOException'ı içe aktarın;import java.io.PrintWriter;import javax.servlet.ServletException;javax.servlet.http.HttpServlet'i içe aktar;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/ *** Servlet uygulama sınıfı guru_download* /public class guru_download, HttpServlet'i genişletir {özel statik son uzun serialVersionUID = 1L;korumalı void doGet (HttpServletRequest isteği, HttpServletResponse yanıtı) ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();Dize gurufile = "test.txt";Dize gurupath = "c: / guru / upload /";response.setContentType ("UYGULAMA / OCTET-STREAM");response.setHeader ("İçerik Eğilimi", "ek; dosyaadı = \" "+ gurufile + "\" ");FileInputStream fileInputStream = yeni FileInputStream (gurupath+ gurufile);int i;while ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (HttpServletRequest isteği, HttpServletResponse yanıtı)* /korumalı void doPost (HttpServletRequest isteği, HttpServletResponse yanıtı) ServletException, IOException {// TODO Otomatik oluşturulan yöntem saplaması}}
Kodun açıklaması:
Kod Satırı 3-5: Burada FileInputStream, IO Exception ve PrintWriter'ı java.io paketinden içe aktarıyoruz.
Kod Satırı 15: HttpServlet'i genişleten guru_download sunucu uygulamasını tanımlıyoruz.
Kod Satırı 18: URL'ye eklenecek bir href tanımladığımız için, GET yöntemi işlenecek (doGet, sunucu uygulamasında çağrılacaktır) ve bu da istek ve yanıt nesnelerini de kapsamaktadır.
Kod Satırı 19-20: Yanıt nesnesinde içerik Türü ayarlıyoruz ve ayrıca yanıttan yazar nesnesi alıyoruz.
Kod Satırı 21-22: Bir değişkeni gurufile olarak test.txt ve gurupath'ı c: / guru / upload / olarak tanımlama
Kod Satırı 23-25: İçerik türünü yanıt nesnesini kullanarak ayarlıyoruz ve üstbilgiyi yüklenen dosya adı olarak yanıt nesnesine ayarlayan setHeader yöntemini kullanıyoruz.
Kod Satırı 27-28: Gurupath + gurufile ekleyeceğimiz FileInputStream oluşturuyoruz.
Kod Satırı 31-33: Burada dosya okunana kadar çalışacak bir while döngüsü aldık, dolayısıyla! = -1 olarak koşul verdik. Bu durumda printwriter nesnesini kullanarak yazıyoruz.
Yukarıdaki kodu çalıştırdığınızda aşağıdaki çıktıyı alacaksınız
Çıktı:
Çıktı:
Download_1.jsp'ye tıklamamız gerekiyor, "Buradan İndir" olarak bir köprü alacağız. Bu köprü dosyasına tıkladığınızda, sisteme indirilecektir.
Özet:
- Herhangi bir başvuruya kaydolmak için kayıt formunu öğrendik
- Giriş ve çıkış formlarının nasıl çalıştığı hakkında daha fazla bilgi edinin.
- Ayrıca, JSP aracılığıyla bir dosyanın yüklenmesi ve indirilmesi hakkında bilgi edindi.