In Javaee befindet sich das Modell1 -Modell auf der JSSP -Seite. JSSP darf nicht nur die Anforderung des Browsers (mit Javabean) logisch verarbeiten und relevante Seiten beim Zugriff auf die Datenbank anzeigen.
Im Modell1 -Modell gibt es kein Servlet.
Das Ergebnisdiagramm von Modell1 lautet wie folgt:
Modell1 hat eine schlechte Wartbarkeit und Skalierbarkeit, die nur für kleine Projekte geeignet sind.
Führen Sie zuerst die Ergebnisse aus
goods.jsp
<%@page import = "entity.items"%> <%@page import = "dao.itemsdao"%> <%@page Language = "java" import = "java.util. String basepath = request.getScheme () + ": //" + request.getSerVername () + ":" + request.getServerport () + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-äquiv = "cache-control" content = "no-cache"> <meta http-äquiv = "expires" content = "0"> <meta http-äquiv type = "text/css" href = "styles.css"> -> <style type = "text/css"> div {float: links; Rand: 10px; } div dd {margin: 0px; Schriftgröße: 10pt; } div dd.dd_name {color: blau; } div dd.dd_city {color: #000; } </style> </head> <body> <center> <h1> Produktanzeige </h1> <hr> <table cellpadding = "0" cellpacing = "0"> <tr> <% ig it itselsdao dao = new itemsDao (); ArrayList <Poinktion> list = new ArrayList <elemente> (); // Holen Sie sich alle Produkte von DAO und speichern Sie sie in der Liste der Listensammlung = Dao.getallitems (); if (list! %> <div> <dl> <dt> <a href = "details.jsp? id = <%= item.getId ()%>"> <img src = "Bilder/<%item.getPicture ()%>"/> </a> </dt> <dd> <%= itetn. <%= item.getPrice ()%> </dd> </dl> </div> <%}}%> </td> </tr> </table> </table> </center> </body> </html> Bild, das das Produkt im Code darstellt
<span style = "White-Space: PRE"> </span> <a href = "details.jsp? id = <%= item.getId ()%>"> <img src = "Bilder/<%= item.getPicture ()%>"/> </a>
Wenn Sie auf das Produktbild klicken, übergeben Sie die ID des aktuellen Produkts an die Detail -Seite
Details.JSP zeigt detaillierte Produkte durch die ID des Produkts an, und die Browserhistorie wird von Cookies aufrechterhalten
<%@page import = "org.apache.taglibs.standard.tag.common.xml.foreachTag"%> <%@page import = "enttity.items"%> <%@page import = "Dao.Itemsdao"%> <%@page Sprache = "java". Request.getContextPath (); String basepath = request.getScheme () + ": //" + request.getSerVername () + ":" + request.getServerport () + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-äquiv = "cache-control" content = "no-cache"> <meta http-äquiv = "expires" content = "0"> <meta http-äquiv = "keywords" content = "keyword1, keyword2, keyword3"> <meta http-äquiv {Grenze: 1; Hintergrund: #aeaee; } #historyView td {Schriftgröße: 10px; } </style> </head> <body> <center> <h1> Produktdetails </h1> <hr> <table cellpadding = "0" cellpacing = "0"> <tr> <td Center> <tabelle> <% igsdao dao = new itemsdao (); // Erhalten Sie das entsprechende Produktobjekt in DAO gemäß der Produkt -ID, die aus dem Anforderungselemente item = dao.getItembyId (Integer.ParseInt (Anfrage .GetParameter ("ID"))); if (item! <%=item.getCity()%></td> </tr> <tr> <td id="pricename">Price: <%=item.getPrice()%> ¥</td> </tr> <tr> <td id="pricename">Price: <%=item.getPrice()%> ¥</td> </tr> <% } //Add this product Cookies[] cookies = Request.GetCookies (); String HistorStr = ""; für (Cookie C: Cookies) {if (c.GetName (). Equals ("History") {HistoryStr = C.GetValue (); }} historStr + = item.getId () + ","; Cookie C = New Cookie ("Geschichte", historystr); // Cookies response.addcookie (c) zurücksetzen; %> </table> </center> </td> <td valign = "top" id = "historyView"> <center> <table> <tr> <td> <b> Die Produkte, die Sie durchsucht haben, haben Sie </b> </td> </tr> <% // die letzten drei durchgeborenen Datensätze von DAOs basierend auf Cookies und speichern und retten Sie sie auf der Liste der Listenersammlungen. Dao.GethistoryView (HistoryStr); if (historyItems! </tr> <tr> <td><b><%=historyItem.getName()%></b> </td> </tr> <tr> <td>Origin: <%=historyItem.getCity()%></td> </tr> <% } } %> </table> </tr> </tr> </table> </center> </body> </html> Die DAO -Schicht ist für den Abfragebetrieb von Produkten in der Datenbank verantwortlich
Paket dao; Import Java.sql.Connection; importieren java.sql.preeParedStatement; importieren java.sql.resultset; importieren java.sql.sqlexception; Import Java.util.ArrayList; Import util.dbhelper; Import Entity.Items; // Business Logic Class of Product Public Class itemsdao {// Alle Produktinformationen öffentliche ArrayList <Poinkts> getAllitems () {// Produktsammlung ArrayList <Poinkts> list = new ArrayList <Int itsels> (); Verbindung conn = null; PrepedStatement ps = null; ResultSet rs = null; try {conn = dbhelper.getConnection (); String SQL = "Ausgewählte * aus Elementen"; // SQL Anweisung ps = conn.preparestatement (SQL); rs = ps.executeQuery (); // Fügen Sie die Ergebnisse der Abfrage der Sammlung nacheinander hinzu (rs.Next ()) {items item = new items (); item.setId (rs.getInt ("id")); item.setName (rs.getString ("name")); item.setCity (rs.getString ("Stadt")); item.setPrice (rs.getDouble ("Preis")); item.setPicture (rs.getString ("picture")); item.setNumber (rs.getInt ("number")); list.add (item); }} catch (sqlexception e) {e.printstacktrace (); } endlich {// Schließen Sie die Ressource if (rs! = null) {try {rs.close (); } catch (SQLEXception e) {// Todo automatisch generierter Fangblock e.printstacktrace (); }} if (ps! = null) {try {ps.close (); } catch (SQLEXception e) {// Todo automatisch generierter Fangblock e.printstacktrace (); }}} Rückgabeliste; } // Produktinformationen basierend auf der Produktnummer öffentliche Elemente getItembyId (int id) {items item = new items (); Verbindungs con = null; PrepedStatement ps = null; ResultSet rs = null; String sql = "Ausgewählt * aus Elementen, wobei id =?"; try {con = dbHelper.getConnection (); ps = con.preparestatement (SQL); ps.Setint (1, id); rs = ps.executeQuery (); // Wenn die ID gefunden wird, initialisieren Sie sie für das Element -Objekt, wenn (rs.Next ()) {item.setId (rs.getInt ("id")); item.setName (rs.getString ("name")); item.setCity (rs.getString ("Stadt")); item.setPrice (rs.getDouble ("Preis")); item.setPicture (rs.getString ("picture")); item.setPicture (rs.getString ("picture")); item.setNumber (rs.getInt ("number")); }} catch (SQLEXception e) {// Todo automatisch generierter Fangblock E. printstacktrace (); } endlich {// Ressource schließen if (rs! = null) {try {rs.close (); } catch (SQLEXception e) {// Todo automatisch generierter Fangblock e.printstacktrace (); }} if (ps! = null) {try {ps.close (); } catch (SQLEXception e) {// Todo automatisch generierter Fangblock e.printstacktrace (); }}} Return item; } // Die letzten drei Elemente erhalten basierend auf Cookies public arrayList <elemente> GethistoryView (String cookie) {ArrayList <elemente> list = new ArrayList <elemente> (); String -IDs [] = cookie.split (","); int counts = 3; // Die letzten drei Datensätze stöbern if (ids! / * * Bestimmen Sie zunächst, ob das aktuelle Element in der Sammlung vorhanden ist. Wenn Zählungen+1 vorhanden sind, lesen Sie es noch einmal (garantiert 3 Objekte in der Listensammlung). Fügen Sie dieses Element nicht hinzu*/ if (list.contains (item)) {zählt ++; weitermachen; } list.add (item); }} Rückgabeliste; }} Elemente der Entitätskategorie
Paketentität; public class poarts {private int id; privater Zeichenfolge Name; private Streichstadt; privater Doppelpreis; private int nummer; privates Zeichenfolgenbild; public int getid () {return id; } public void setId (int id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public String getCity () {return city; } public void setCity (String City) {this.city = City; } public double getPrice () {Rückgabepreis; } public void setPrice (Doppelpreis) {this.price = price; } public int getNumber () {Rückgabenummer; } public void setNumber (int nummer) {this.number = number; } public String getPicture () {return bild; } public void setPicture (String -Bild) {this.picture = picture; } @Override public int HashCode () {// Todo automatisch generierte Methode Stub return this.getId ()+this.getName (). HashCode (); } @Override public boolean Equals (Objekt obj) {if (this == obj) {return true; } else {if (obj instanceof items) {items item = (items) obj; if (this.getId () == item.getId () && this.getName (). Equals (item.getName ())) {return true; }}} return false; }} Hier haben wir die Hascode und gleiche Methoden zur Änderung der Vergleichsmethode neu geschrieben (alle Elemente sind ein neues Objekt. Auch wenn der Inhalt der beiden Produkte gleich ist, sind sie nicht gleich. Wir müssen also die Vergleichsmethode ändern).
Denn für die Browserhistorie können wir das aktuelle Produkt -Browsing -Historie nicht aktualisieren und alle Produkte sind die Produkte. Wir müssen nur sicherstellen, dass es nur ein Produkt in der Browserhistorie gibt. Die GethistoryView -Methode in der DAO -Ebene hat also diesen Code
<span style = "White-Space: PRE"> </span> if (list.contains (item)) {zählt ++; weitermachen; } Dann gibt es die Werkzeugklasse
Dbhelpher Singleton -Muster erhält ein Verbindungsobjekt
Paket Util; Import Java.sql.Connection; importieren java.sql.drivermanager; importieren java.sql.sqlexception; public class dbhelper {private static final String driver = "com.mysql.jdbc.driver"; private statische endgültige Zeichenfolge url = "jdbc: mysql: // localhost: 3306/copping? private statische endgültige String username = "root"; private statische endgültige Zeichenfolge Passwort = "123"; private statische Verbindung con = null; // Der statische Blockcode ist dafür verantwortlich, den Treiber statisch zu laden {try {class.forname (Treiber); } catch (classNotFoundException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); }} öffentliche statische Verbindung getConnection () {if (con == null) {try {con = driverManager.getConnection (URL, Benutzername, Passwort); } catch (SQLEXception e) {// Todo automatisch generierter Fangblock e.printstacktrace (); }} return con; }}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.