Die Beispiele in diesem Artikel teilen Ihnen die Methode, Java -Alben für Ihre Referenz zu erstellen. Der spezifische Inhalt ist wie folgt
Notiz:
1) Das Bild auf HTML ist statisch angegeben. Wenn neue Bilder aktualisiert werden, müssen sie manuell aktualisiert werden. Lesen Sie also Servlet, um alle Bilder in lokalen Bildern zu lesen und dem Benutzer dynamisch anzuzeigen.
2) Wenn es ein Bild mit einem chinesischen Namen gibt, verursacht es einen Fehler, da die GET -Methode Chinesisch nicht direkt weitergeben kann.
Hauptseitenindex.jsp
<%@ page Language = "java" import = "java.util. http: // localhost: 8080/fotosweb/ -> <h2> kleines Album </h2> <a href = "jSPS/Upload.jsp"> Foto hochladen </a> <a href = "< %= request.getContextPath () %>/servlet/showAllimg"> browse fotos </a> </body> </html "
Seitenanzeige:
Bildfunktion hochladen:
<%@ page Language = "java" import = "java.util. action="<%=request.getContextPath() %>/servlet/uploadServlet" method="post" enctype="multipart/form-data"> Photo: <input type="file" name="file"/><br/> Description:<input type="text" name="desc"/><br/> <input type="submit" value="upload"/> </form> </body></html>
package cn.hncu.servlet;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.util.List;import javax.servlet.RequestDispatcher;import javax.servlet.Servlet.ServletException;import javax.servlet.http.httpServlet; import javax.servlet.http.httpsertRequest; import Javax.servlet.http.httpServletRespect; org.apache.commons.FileUpload.disk.diskFileItemFactory; import org.apache.commons.FileUpload.Servlet.ServletFileUpload; import org.apache cn.hncu.utils.myutils; öffentliche Klasse UploadServlet erweitert HttpServlet {public void dodget (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst servleTexception, IOException {response.setContentType ("text/html") aus; Printwriter out = response.getWriter (); out.println ("<! docType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<kopf> <titels> a servlet </title> </head>"); out.println ("<body>"); out.println ("<body>"); out.println ("<body>"); out.println ("<body>"); out.close (); } public void dopost (httpServletRequest Request, httpServletResponse-Antwort) löst ServletException aus, ioException {request.setcharactercoding ("utf-8"); Antwort.SetContentType ("text/html; charSet = utf-8"); Printwriter out = response.getWriter (); out.println ("<! docType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<kopf> <titels> Fotoseite hochladen </title> </head>"); out.println ("<body>"); // Informationen aus dem Upload -Formular extrahieren: 1. Rufen Sie sie in ein Foto -Wert -Objekt ein, rufen Sie die DAO -Ebene auf, um sie im Hintergrund zu speichern // 2. Speichern Sie die hochgeladenen Fotos auf der Server -Festplatte // Datenbank: Speichern Sie die Informationen über die Speicherung der Fotos, die reale Datei wird auf dem harter DiskFileMfactory dfi = New DiskFileemFileMfactory (). Datei Datei = neue Datei ("d:/a"); if (file.exists ()) {file.mkdirs (); } dfi.setRepository (Datei); ServletFileUpload upload = new ServletFileUpload (dfi); Upload.Setsizemax (1024*1024*8); upload.SetheaDerencoding ("utf-8"); // ==> request.setcharactercoding ("utf-8"); try {list <FileItem> list = upload.ParSerequest (Anfrage); Photomodel PM = neuer Photomodel (); InputStream in = null; für (fileItem fi: list) {if (fi.isformfield ()) {// Dies hat keine temporäre Dateistring-Desc = fi.getString ("utf-8"); PM.SetDesc (Desc); } else {in = fi.getInputStream (); // String Dateiname = fi.getfieldname (); // system.out.println ("getfieldname:"+Dateiname); String Dateiname = fi.getName (); // system.out.println ("getName:"+Dateiname); // Test: C:/user/adl1/pictures/gespeicherte Bilder/111.jpg? // Standardbedingungen if (Dateiname == null || fileName.trim (). Equals ("Keine Datei ausgewählt ,,,, muss eine Datei auswählen ... <br/>"); String strpath2 = request.getContextPath ()+"/JSPS/Upload.jsp"; } pm.setDt (myutils.getCurrentDataime ()); Realname.length ()); // Entfernen Sie den "/" von Realname // Ext -Erweiterungsstring ext = Dateiname.substring (Dateiname.Lastindexof ("); PM.SetDir (myutils.getDir (id)); path = "fotos/"+pm.getDir (); // system.out.println ("path:"+path); // test: fotos/9/0 String filepath = getServletContext (). getRealPath (Pfad); // system.out.println ("filepath:"+filepath); /// Test: d: /apache-tomcat-7.0.30/webapps/photosweb/photos/9/0 Datei DIR = New Datei (FilePath); if (! Dir.Exists ()) {dir.mkdirs (); } FileUtils.copyInputStreamtoFile (in neue Datei (Filepath+"/"+pm.getid ()+pm.getext ())); // // Wenn die Festplatte erfolgreich gespeichert wird rd = request.getRequestDispatcher (getServletContext (). getContextPath ()+"/index.jsp"); // "/fotosweb/fotosweb/index.jsp" // RequestDispatcher Rd = Request.getRequestDispatcher ("/Index.jsp.). Java -Code -Block und web.xml repräsentieren das Projektroot -Verzeichnis // rd.forward (Request, Antwort); // Die Weiterleitung kann hier nicht verwendet werden. Der spezifische Unterschied zwischen Umleitung und Weiterleitung: http://blog.csdn.net/xanlv/article/details/52701085 // revers.sendredirect (getServletContext (). GetContextPath ()+"/index.jsp"); } else {// Datenbanksparung fehlgeschlagen-auf der Upload-Seite RequestDispatcher rd = request.getRequestDispatcher ("/JSPS/Upload..jsp"); // "/fotosweb/index.jsp" rd.forward (Request, Antwort); }} catch (fileUploadexception e) {neue runTimeException ("Upload fehlgeschlagen", e); } endlich {// Temporäre Datei Datei löschen f = neue Datei ("d:/a"); Datei fs [] = F.Listfiles (); für (Datei ff: fs) {ff.delete (); }} out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }} Seitenanzeigeffekt:
Bildfunktion durchsuchen:
Paket cn.hncu.servlet; import Java.io.ioxception; import Java.io.printwriter; Import Java.util.List; Import Javax.Servlet.ServletException; Import Javax.servlet.http.httplet; Import Javax.Servlet.Httpl. javax.servlet.http.HttpServletResponse;import cn.hncu.dao.PhotoDaoImpl;import cn.hncu.domain.PhotoModel;public class ShowAllImgServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType ("text/html; charSet = utf-8"); Printwriter out = response.getWriter (); out.println ("<! docType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<Head> <title> Album Browse </title> </head>"); out.println ("<body>"); String stradppath = request.getContextPath ()+"/jSPS/upload.jsp"; out.println ("<a href =/" "+strpath+"/"> zur Upload -Seite zurückkehren </a>"); // String Table = "<Table Border = '1px' width = '100%' cellpacing = '0' align = 'center'>"+// Diese Methode kann nicht in der Mitte horizontal string table = "<table Border =" 1 "1 '1' 1 '1' 1 '1' 1 '1' style = 'text-align: center;'> "+" <tr> <Th> Dateiname </th> <Th> Datum und Uhrzeit hochladen </th> <Th> Foto </th> <th> Fotobeschreibung </th> <Th> Betrieb </th> </tr> "; out.println (Tabelle); // Alle Fotoinformationen aus der DAO-Ebene lesen und an die Front-End-Seitenliste senden <photoModel> list = new PhotodaoImpl (). GetAllphotos (); für (Photomodel pm: list) {out.println ("<tr>"); out.println ("<td width = 80>"+pm.getRealName ()); out.println ("</td>"); out.println ("<td width = 120>"+pm.getDt ()); out.println ("</td>"); String path = request.getContextPath ()+"/fotos/"+pm.getDir ()+"/"+pm.getId ()+pm.getext (); // system.out.println (path); // "/fotosWeb/fotos/d/7/e78e18352b42410f85dbd8d8df83bd718.pghtw85dbd8. das größere Bild out.println ("<td width = 100> <a href = '"+path+"'> <img breit = 100 Höhe = 100 src = '"+path+"' //"); out.println ("</td>"); out.println ("<td width = 200>"+pm.getDesc ()); out.println ("</td>"); out.println ("<td width = 80> <a href = '"+getServletContext (). getContextPath ()+"/servlet/delphoto? id ="+pm.getid ()+"'> das Bild löschen </a>"); // out.println ("<a <a <a a <a <a a href = '<%= request.getContextPath ()%>/servlet/down? id = "+pm.getId ()+"'> Download das Bild </a> </td> "); out.println ("<br/> <a href = '"+getServletContext (). getContextPath ()+"/servlet/down? id ="+pm.getid ()+"'> Download das Bild </a> </td>"); out.println ("</tr>"); } out.println ("</table>"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); } public void dopost (httpServletRequest-Anforderung, httpServletResponse-Antwort) löst ServletException aus, iOException {response.setContentType ("text/html; charset = utf-8"); Printwriter out = response.getWriter (); out.println ("<! docType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<kopf> <titels> a servlet </title> </head>"); out.println ("<body>"); out.print ("Nicht unterstützte Post -Methode ..."); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }} Seitenanzeigeffekt:
Funktion löschen:
Paket cn.hncu.servlet; import java.io.file; import Java.io.ioException; import Java.io.printwriter; import Javax.Servlet.ServletException; import Javax.servlet.http.httplet; Import Javax.Servlet.Http. javax.servlet.http.HttpServletResponse;import cn.hncu.dao.PhotoDaoImpl;import cn.hncu.domain.PhotoModel;public class DelPhotoServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType ("text/html; charSet = utf-8"); Printwriter out = response.getWriter (); out.println ("<! docType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<kopf> <titels> Fotoseite löschen </title> </head>"); out.println ("<body>"); String id = request.getParameter ("id"); String ip = request.getRemoteaddr (); PhotodaoImpl dao = new PhotodaOImpl (); Photomodel PM = Dao.GetSinglebyId (ID); if (pm! String stradppath = request.getContextPath ()+"/servlet/showAllimg"; out.println ("<br/> <a href =/" "+strPath+"/"> kehren Sie zurück, um weiter zu durchsuchen </a>"); zurückkehren ; } // Löschen enthält zwei Arbeitsteile: Löschen der Informationen in der Datenbank und Löschen der Bilddateien in der Server -Festplatte // 1 Löschen der Informationen in der Datenbank boolean boo = dao.del (ID); // 2 Löschen der Bilddateien in der Server -Festplatte if (boo) {String path = "fotos/"+pm.getDir ()+"/"+pm.getid ()+pm.getext (); String filepath = getServletContext (). GetRealPath (Pfad); Datei f = neue Datei (FilePath); if (f.Exists ()) {f.delete (); } String stradppath = request.getContextPath ()+"/servlet/showAllimg"; // system.out.println (strpath); /// photosweb/servlet/showPhotos out.println ("erfolgreich löschen ... <br/> <a href =/"+strpathepse+"/"> return to browse zu browse, um zu schulen, um zu schulen, um zu schalten. } else {out.println ("Datenbankinformationen löschen"); }} else {out.println ("Datei nicht existiert ..."); String stradppath = request.getContextPath ()+"/servlet/showAllimg"; out.println ("<br/> <a href =/" "+strPath+"/"> kehren Sie zurück, um weiter zu durchsuchen </a>"); } out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); } public void dopost (httpServletRequest Request, httpServletResponse -Antwort) löst ServletException aus, ioException {response.setContentType ("text/html"); Printwriter out = response.getWriter (); out.println ("<! docType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<kopf> <titels> Fotoseite löschen </title> </head>"); out.println ("<body>"); out.print ("Keine Post -Methode unterstützt ..."); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }}Seitenanzeige:
Download -Funktion:
1. Verwenden Sie die Hyperconnection auf der HTML -Seite, um auf die zu heruntergeladene Datei zu verweisen (unsicher und leicht gestohlen).
Frage:
Wie kann man lokale Ressourcen bestimmen?
ServletContext repräsentiert ein Webprojekt. Ein Webprojekt hat nur ein ServletContext -Objekt.
GetRealPath ("/"); // d:/prm/tom/web/
Anforderungsanalyse:
In der tatsächlichen Entwicklung, welche Datei zum Herunterladen wird vom Benutzer dynamisch ausgewählt.
In unserem Projektbilderverzeichnis gibt es beispielsweise viele Bilddateien. Der Benutzer zeigt alle Bilder auf der Seite an und der Benutzer kann auf den Link herunterladen, um die Lieblingsbilder herunterzuladen.
Detailliertes Design:
Verwenden Sie eine statische Webseite, um alle Bilder anzuzeigen. Geben Sie jedem Bild einen heruntergeladenen Hyperlink.
Übergeben Sie die Bild -ID, um nach der Hyperkonnection herunterzuladen.
Dynamisch Bildnamen im Dienst erhalten. Vervollständigen Sie den Download.
Paket cn.hncu.servlet; import Java.io.file; import Java.io.fileinputStream; Import Java.io.ioxception; Import Java.io.inputStream; Import Java.io.outputStream; Import Java.io.Printwriter; javax.servlet.servletException; import javax.servlet.http.httpervlet; import javax.servlet.http.httpserquest; import javax.servlet.http.httpletresponse; import org. cn.hncu.dao.PhotoDaoImpl;import cn.hncu.domain.PhotoModel;public class DownServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Get the information of the downloaded image Tring id = request.getParameter ("id"); Photomodel PM = new PhotodaoImpl (). GetinglebyId (ID); if (pm == null) {response.setContentType ("text/html; charSet = utf-8"); Printwriter out = response.getWriter (); out.println ("<! docType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<kopf> <titels> a servlet </title> </head>"); out.println ("<body>"); Antwort.getWriter (). println ("alert ('Dieser Text existiert nicht mehr ...')"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); // GetServletContext (). getContextPath () RequestDispatcher Rd = Request.GetRequestDispatcher ("/Servlet/Down"); // "/fotosweb/index.jsp" // Der Beginn der URL in Java -Code -Block und Web.xml "/" repräsentiert das Project Root Directory Rd. Forward (Request). } else {// Real Download: Lesen Sie die Fotodatei der Server -Festplatte und senden Sie sie an den Client (setzen Sie den Antwortheader) // den realen Dateistring realname = pm.getrealname (); RealName = urlencoder.encode (Realname, "UTF-8"); // Wenn es sich um einen chinesischen Namen handelt, muss er transkodiert werden, um zu verhindern, dass der Dateinamen in Chinesisch verstümmelt wird // InputStream in = DownServlet.class.getClassLoader (). // Setzen Sie den Anzeigetyp, um die Antwort herunterzuladen. // Setzen Sie die Antwort des Antwortheaders. path = "fotos/"+pm.getDir ()+"/" pm.getId ()+PM.GetExt (); o = Antwort. IoException {response.setContType ("text/html"); <Head> <title> a servlet </title> </head> "); out.println (" <body> "); out.println (" </body> "); out.println (" </html> "); out.flush (); out.close (); }} Seitenanzeigeffekt:
Konfigurationsdatei web.xml
<? xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>cn.hncu.servlet.UploadServlet</servlet-class> </servlet> <servlet> <servlet-name>ShowAllImgServlet</servlet-name> <servlet-class>cn.hncu.servlet.ShowAllImgServlet</servlet-class> </servlet> <servlet> <servlet-name>DownServlet</servlet-name> <servlet-class>cn.hncu.servlet.DownServlet</servlet-class> </servlet> <servlet> <servlet-name>DelPhotoServlet</servlet-name> <servlet-class>cn.hncu.servlet.DelPhotoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <URL-Muster>/Servlet/UploadServlet </url-pattern> </servlet-Mapping> <Servlet-Mapping> <Servlet-Name> ShowAllimgServlet </Servlet-name> <url-pufter>/servlet/showAllimg </url-patter> </servlet-mapping> <Servlet-Mapping> <Servlet-Maping <servlet-name>DownServlet</servlet-name> <url-pattern>/servlet/down</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>DelPhotoServlet</servlet-name> <url-pattern>/servlet/delPhoto</url-pattern> </servlet-mapping> <welcome-file-list> <Welcome-File> Index.jsp </Welcome-File> </Welcome-File-List> </web-App>
Datenbank: fotos.xml
<xml Version = "1.0" coding = "utf-8"?> <fotos> <!-Datenbankdesign <foto id = "uUid" RealName = "Real Dateiname.JPG" Dt = "2016-10-03 19:51:31" ext = ". -> </fotos>
Wertobjekt: Photomodel.java
Paket cn.hncu.domain; öffentliche Klasse Photomodel {// Photo Value Object Private String -ID; // Uuid private Zeichenfolge Realname; // Foto Real Dateiname private Zeichenfolge ext; // Erweiterung private String -Dire; // Direct -Directory Directory DETRECTED After Datei Spread Private String DT; // Upload Datum und Zeit private Zeichenfolge ip; // Aufladung der Client -Adresse private Zeichenfolge private String -Adresse private String -Adresse private String -Adresse. } public void setID (String -ID) {this.id = id; } public String getRealName () {return RealName; } public void setRealName (String RealName) {this.realName = realName; } public String getext () {return ext; } public void setext (string ext) {this.ext = ext; } public String getDir () {return dir; } public void setDir (String dir) {this.dir = dir; } public String getDt () {return dt; } public void setdt (String dt) {this.dt = dt; } public String getDt () {return dt; } public void setdt (String dt) {this.dt = dt; } public String getiP () {return ip; } public void setIp (String ip) {this.ip = ip; } public String Dreturn Desc; } public void setDesc (String Desc) {this.desc = desc; }}DAO -Schicht: Hier ist Abkürzung, nur die Implementierungsklasse PhotodaoImpl.java ist geschrieben
Paket Cn.Hncu.dao; Import Java.util.ArrayList; Import Java.util.iterator; Import Java.util.List; import org.dom4j.document; Sava (Photomodel pm) {document dom = domfactory.getDom (); Element root = dom.getrootelement (); Element e = root.addelement ("foto"); e.addattribute ("id", pm.getId ()); e.addattribute ("Dir", pm.getDir ()); e.addattribute ("dt", pm.getDt ()); e.addattribute ("ext", pm.getext ()); e.addattribute ("ip", pm.getIp ()); e.addattribute ("Realname", pm.getRealName ()); E.Addelement ("Desc"). setText (pm.getDesc ()); boolean b = domfactory.save (); if (b) {return true; } return false; } publiclist <Profotomodel> getAllphotos () {list <Photomodel> li = new ArrayList <Motomodel> (); Document dom = domfactory.getdom (); Element e = Dom.GetRootelement (); Iterator <element> it = e.elementiterator (); while (it.hasnext ()) {Element ie = it.Next (); Photomodel PM = neuer Photomodel (); PM.SetID (IE.AttributeValue ("id")); PM.SetDir (IE.AttributeValue ("Dir")); PM.SetDt (IE.AttributeValue ("dt")); PM.SetExt (IE.AttributeValue ("ext")); PM.Setip (IE.AttributeValue ("IP")); PM.SetRealName (IE.AttributeValue ("Realname"); PM.SetDesc (IE.ElementText ("Desc")); li.add (PM); } return li; } public photoModel getinglebyId (String -ID) {list <Potomodel> li = getAllphotos (); Photomodel PM = neuer Photomodel (); für (Photomodel p: li) {if (p.getId (). Equals (id)) {return p; }} return null; } public boolean del (string id) {document dom = domfactory.getDom (); Element e = (Element) dom.Selectsinglenode ("// foto [@id = '"+id+"']"); return e.getParent (). entfernen (e); }}Werkzeuge:
1.
Paket cn.hncu.utils; import Java.Text.SimpledateFormat; Import Java.util.date; import Java.util.UUID; öffentliche Klasse myutils {private myutils () {} public static String getuuid () {) {). } private static SimpleDateFormat sdf = new SimpledateFormat ("yy-mm-dd hh: mm: ss"); public static String getCurrentDataime () {return SDF.Format (neues Datum ()); } public static String getDir (String uUid) {String dir1 = Integer.tohexString (uUid.hashCode () & 0xf); String dir2 = Integer.tohexString ((uUid.hashCode () & 0xf0) >> 4); return dir1+"/"+dir2; }}2.
Paket cn.hncu.utils; import Java.io.FileOutputStream; import org.dom4j.document; import org.dom4j.documentException; import org.dom4j.io.saxreader; privater statischer String -Dateiname; static {try {saxreader r = new Saxreader (); // Erhalten Sie den Ressourcendatei Dateiname = Domfactory.class.getClassloader (). GetResource ("fotos.xml"). GetPath (); System.out.println ("users.xml path:"+Dateiname); // "/d: /apache-tomcat-7.0.30/webapps/photosweb/web-inf/classes/photos.xml" // Hinweis: Holen Sie sich die Ressourcenmethode unter dem aktuellen Project-Class-Classpad in Tomcat Dom = r.read (Filename); } catch (documentException e) {e.printstacktrace (); }} öffentliches statisches Dokument getdom () {return dom; } public static boolean Save () {xmlwriter w; try {w = neuer XMLWriter (neuer FileOutputStream (Dateiname)); W.Write (DOM); W.CLOSE (); zurückkehren; } catch (Ausnahme e) {return false; }}}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.