V tem primeru se bomo naučili o nalaganju in prenosu datoteke prek JSP.
Izhodni podatki datotek so zelo pomembne operacije. Tu bomo brali in zapisali datoteko z uporabo JSP.
Nalaganje datoteke JSP
- Z JSP lahko naložimo vse datoteke.
- Lahko je besedilna datoteka, binarna datoteka, slikovna datoteka ali kateri koli drug dokument.
- Tukaj se bo v primeru nalaganja datotek uporabljala samo metoda POST in ne metoda GET.
- Atribut Enctype mora biti nastavljen na multipart / form-data.
Primer: Uporaba akcije
V tem primeru nalagamo datoteko z uporabo predmeta IO
Action_file.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Datoteka guruja Nalaganje datoteke guruja: Izberite datoteko:
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. *"%>Nalaganje datoteke guruja <%Datoteka datoteke;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";Niz contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory factory = novo DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (nova datoteka ("c: \\ temp"));ServletFileUpload upload = novo ServletFileUpload (tovarniško);upload.setSizeMax (maxFileSize);poskusite {Seznam fileItems = upload.parseRequest (zahteva);Iterator i = fileItems.iterator ();out.println ("");out.println ("");medtem ko (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {Polje niza = fi.getFieldName ();Niz datotekeName = fi.getName ();logična isInMemory = fi.isInMemory ();dolga velikostInBytes = fi.getSize ();datoteka = nova datoteka (filePath + "yourFileName");fi.write (datoteka);out.println ("Naloženo ime datoteke: + filePath + fileName + "
");}}out.println ("");out.println ("");} ulov (izjema ex) {System.out.println (ex);}} še {out.println ("");out.println ("");out.println ("Datoteka ni naložena
");out.println ("");out.println ("");}%>
Pojasnilo kode:
Action_file.jsp
Vrstica kode 12-18: Tu ustvarjamo obrazec s poljem datoteke, ki bo datoteko naložil na strežnik, akcija pa bo posredovana na action_file_upload.jsp
Action_file_upload.jsp
Vrstica kode 20: Tu podajamo pot do datoteke do določene poti
Vrstica kode 23-38: Tu preverimo, ali je vrsta vsebine večdelna / obrazec-podatki. V tem primeru je vsebina vrste datoteke in je prebrana. Po prebrani datoteki se ta zapiše v začasno datoteko, nato pa se začasna datoteka pretvori v glavno datoteko.
Ko zaženete zgornjo kodo, dobite naslednji izhod
Izhod:
Datoteko nalagamo z možnostjo gumba za izbiro datoteke, gumb za nalaganje pa bo datoteko naložil na strežnik na navedeno pot.
Primer: Uporaba operacij JSP
V tem primeru bomo datoteko naložili z operacijami JSP.
Vzeli bomo obrazec, ki bo imel gumb »naloži« in ko kliknete gumb za nalaganje, bo datoteka naložena.
Uploading_1.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Guru nalaganje datoteke Datoteka:
Pojasnilo kode:
Vrstica kode 11-12: Tu smo v obliki, ki deluje na servlet guru_upload, ki bo šel skozi metodo POST. Tu tudi vnesemo atribut tj. Atribut, ki določa, kako naj se podatki obrazca kodirajo in pošljejo strežniku, in se uporablja samo z metodo POST. Tu nastavljamo kot večdelne / obrazce-podatke, ki so za datoteko (saj bodo podatki veliki).
Vrstica kode 13: Tu določamo element guru_file s datoteko tipa in podajamo velikost 50.
Vrstica kode 15: To je gumb vrste oddaje z imenom "Naloži", prek katerega bo poklican strežniški program za ukrepanje, zahteva pa bo obdelana in datoteka bo prebrana in zapisana v strežniški programček.
Guru_upload.java
demotest paketa;import java.io.File;import java.io.IOException;uvoz java.util.List;uvoz javax.servlet.ServletException;uvoz javax.servlet.http.HttpServlet;uvoz javax.servlet.http.HttpServletRequest;uvoz javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;javni razred guru_upload razširi HttpServlet {zasebni statični final long serialVersionUID = 1L;javni guru_upload () {super ();// TODO Samodejno ustvarjen stub konstruktorja}zaščitena void doPost (zahteva HttpServletRequest, odgovor HttpServletResponse) vrže ServletException, IOException {if (ServletFileUpload.isMultipartContent (zahteva)) {poskusite {Seznammultiparts = new ServletFileUpload (new DiskFileItemFactory ()). ParseRequest (zahteva);za (Element FileItem: multiparts) {if (! item.isFormField ()) {Ime niza = nova datoteka (item.getName ()). GetName ();item.write (nova datoteka ("c: / guru / upload" + File.separator + ime));}}// Datoteka je bila uspešno naloženarequest.setAttribute ("gurumessage", "Uspešno naložena datoteka");} ulov (izjema ex) {request.setAttribute ("gurumessage", "Nalaganje datoteke ni uspelo zaradi" + ex);}} še {request.setAttribute ("gurumessage", "Nobena datoteka ni najdena");}request.getRequestDispatcher ("/ result.jsp"). forward (zahteva, odgovor);}}
Pojasnilo kode:
Vrstica kode 12-14: Tu bomo morali v konfiguracijo kode uvoziti knjižnico org.apache.commons. Razred za nalaganje datotek bomo morali uvoziti iz knjižnice org.apache.commons.
Vrstica kode 23: Tu imamo metodo doPost (), ki jo bomo poklicali, ko bomo v JSP prenašali metodo POST in bo kot svoje parametre zahteval in odzival objekte
Vrstica kode 26: Tu ustvarjamo objekt razreda ServletFileUpload iz paketa fileUpload iz knjižnice org.apache.commons, ki bo preveril, ali v JSP obstajajo kakšni datotečni predmeti. Če je kakršen koli najden, bodo ti datotečni objekti vzeti iz zahteve.
Vrstica kode 27–32: Število datotek bomo ponovili, tako da preverimo, koliko elementov datoteke je v objektu z več deli, ki je predmet seznama (če naložimo več datotek), in ga shranimo v mapo c: / guru / upload z navedeno ime datoteke. Datoteko zapisujemo z metodo pisanja predmeta v omenjeno mapo.
34. vrstica kode: Če ni nobene izjeme, potem v zahtevi nastavimo atribut kot gurumessage z vrednostjo "Datoteka je bila uspešno naložena".
Vrstica kode 35-36: Če pride do izjeme, se prikaže sporočilo, da "Nalaganje datoteke ni uspelo"
Vrstica kode 40: Če datoteke ni mogoče najti, nastavite sporočilo kot "Ni datoteke, ki jo najdete"
Vrstica kode 42: Posredovanje zahteve z uporabo objekta requestdispatcher na result.jsp z zahtevami in odzivi
Rezultat.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Rezultat guruja <% String msg = (String) request.getAttribute ("sporočilo");out.println (msg);%>
Pojasnilo kode:
Vrstica kode 10: Tu dobimo atribut iz predmeta zahteve z vrednostjo gurumessage v nizni objekt.
Code Line11: Tu tiskamo to sporočilo.
Ko izvedemo zgornjo kodo, dobimo naslednji izhod
Izhod:
Dobimo obrazec, v katerem so polja za izbiro datoteke iz imenika. Ko je datoteka izbrana, moramo klikniti gumb za nalaganje.
Ko kliknemo gumb za nalaganje, dobimo sporočilo, da je datoteka uspešno naložena.
Na spodnjem diagramu lahko vidimo, da je bila datoteka naložena v mapo c: / guru / upload.
Prenos datoteke:
V tem primeru bomo datoteko iz imenika prenesli s klikom na gumb.
Prenos_1.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Prenos primera guruja Guru Prenos datoteke Prenesite tukaj !!!
Pojasnilo kode:
Vrstica kode 10: Tukaj smo podali povezavo za prenos datoteke iz mape c: / guru / upload z uporabo strežnika guru_download.
Guru_download.java
demotest paketa;uvoz java.io.FileInputStream;import java.io.IOException;uvoz java.io.PrintWriter;uvoz javax.servlet.ServletException;uvoz javax.servlet.http.HttpServlet;uvoz javax.servlet.http.HttpServletRequest;uvoz javax.servlet.http.HttpServletResponse;/ *** Razred izvajanja strežnika guru_download* /javni razred guru_download razširi HttpServlet {zasebni statični final long serialVersionUID = 1L;zaščitena void doGet (zahteva HttpServletRequest, odgovor HttpServletResponse) vrže ServletException, IOException {response.setContentType ("besedilo / html");PrintWriter out = response.getWriter ();String gurufile = "test.txt";Niz gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Content-Disposition", "attachment; filename = \" "+ gurufile + "\" ");FileInputStream fileInputStream = nov FileInputStream (gurupath+ gurufile);int i;while ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (zahteva HttpServletRequest, odgovor HttpServletResponse)* /zaščitena void doPost (zahteva HttpServletRequest, odgovor HttpServletResponse) vrže ServletException, IOException {// TODO Samodejno ustvarjena škrbina metode}}
Pojasnilo kode:
Vrstica kode 3-5: Tu uvozimo FileInputStream, IO Exception in PrintWriter iz paketa java.io.
Vrstica kode 15: Določamo strežniški programček guru_download, ki razširja HttpServlet.
Vrstica kode 18: Kot smo definirali href, ki bo zaprt v URL, se bo obdelala metoda GET (doGet bo poklican v strežniškem programčku), ki vključuje tudi predmete in zahteve.
Vrstica kode 19-20: Nastavimo vsebino Vtipkajte v odzivni objekt in iz odgovora pridobite tudi predmet zapisovalnika.
Vrstica kode 21-22: Določitev spremenljivke kot gurufile kot vrednosti test.txt in gurupath kot c: / guru / upload /
Vrstica kode 23-25: Tip vsebine nastavljamo z odzivnim objektom in uporabljamo metodo setHeader, ki nastavi glavo v odzivni objekt kot ime datoteke, ki je bila naložena.
Vrstica kode 27-28: Ustvarjamo FileInputStream, v katerega bomo dodali gurupath + gurufile.
Vrstica kode 31-33: Tu smo vzeli zanko while, ki se bo izvajala, dokler se datoteka ne prebere, zato smo podali pogoj kot! = -1. V tem stanju pišemo s pomočjo predmeta izpisovalnika.
Ko zaženete zgornjo kodo, boste dobili naslednji izhod
Izhod:
Izhod:
Klikniti moramo na downloading_1.jsp, dobili bomo hiperpovezavo kot "Download Here". Ko kliknete to datoteko s hiperpovezavo, se ta prenese v sistem.
Povzetek:
- Spoznali smo registracijski obrazec za registracijo v katero koli prijavo
- Izvedeli smo več o tem, kako delujejo obrazci za prijavo in odjavo.
- Spoznali tudi nalaganje in nalaganje datoteke prek JSP.