Dans Javaee, le modèle Model1 est centré sur la page JSSP. JSSP doit non seulement traiter logiquement la demande du navigateur (à l'aide de Javabean) et également afficher des pages pertinentes lors de l'accès à la base de données.
Dans le modèle Model1, il n'y a pas de servlet.
Le diagramme de résultat de Model1 est le suivant:
Model1 a une mauvaise maintenabilité et une évolutivité, qui ne conviennent que pour les petits projets.
Exécutez d'abord les résultats
GOODS.JSP
<% @ page import = "Entity.Items"%> <% @ page import = "dao.itemsdao"%> <% @ page language = "java" import = "java.util. *" pageencoding = "utf-8"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <! Doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> <adread> <base href = "<% = basepath%>"> <titre> mon jsp 'index.jsp' Page de départ </ title> <meta http-equiv = "Pragma" Contenu = "non-Cache"> <méta http-equiv = "cache-control" contenu = "no-cache"> <meta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <! type = "text / css" href = "styles.css"> -> <style type = "text / css"> div {float: gauche; marge: 10px; } div dd {margin: 0px; taille de police: 10 pt; } div dd.dd_name {couleur: bleu; } div dd.dd_city {couleur: # 000; } </ style> </ head> <body> <enter> <h1> Affichage du produit </h1> <hr> <table cellpadding = "0" Cellpacing = "0"> <tr> <td> <% itemsdao dao = new itemsdao (); ArrayList <Sebles> list = new ArrayList <émiteaux> (); // Obtenez tous les produits de DAO et enregistrez-les dans la liste de collection List = dao.getallitems (); if (list! = null && list.size ()> 0) {// Loop via la collection et afficher pour (int i = 0; i <list.size (); i ++) {items item = list.get (i); %> <div> <dl> <dt> <a href = "de détail.jsp? id = <% = item.getId ()%>"> <img src = "images / <% = item.getPicture ()%>" /> </a> </ dt> <dd> <% = item.getName ()%> </dd> <dd> <% = item.getprice ()%> </dd> </dl> </div> <%}}%> </td> </tr> </s table> </ table> </ Center> </ Body> </html> Image représentant le produit dans le code
<span style = "White-Space: pre"> </ span> <a href = "Details.jsp? id = <% = item.getId ()%>"> <img src = "images / <% = item.getPicture ()%>" /> </a>
En cliquant sur l'image du produit, passez l'ID du produit actuel à la page Détails
Details.jsp affiche des produits détaillés via l'ID du produit, et l'historique de navigation est maintenu par des cookies
<% @ page import = "org.apache.taglibs.standard.tag.common.xml.foreachtag"%> <% @ page import = "Entity.Items"%> <% @ page import = "dao.itemsdao"%> <% @ page language = "java" import = "java.util. request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <! Doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> <adread> <base href = "<% = basepath%>"> <titre> mon jsp 'index.jsp' Page de départ </ title> <meta http-equiv = "Pragma" Contenu = "non-Cache"> <méta http-equiv = "cache-control" contenu = "no-cache"> <meta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword11, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <style type = " {Border: 1; Contexte: #EAEAE; } #HistoryView td {font-size: 10px; } </ style> </ head> <body> <enter> <h1> Détails du produit </h1> <hr> <Table CellPadding = "0" Cellpacing = "0"> <tr> <td> <pentre> <s table // Obtenez l'objet produit correspondant dans DAO en fonction de l'ID de produit envoyé à partir de l'élément de demande élément = dao.getItembyId (Integer.ParseInt (request .getParameter ("id"))); if (item! = null) {%> <tr> <td Rowspan = "5"> <img src = "images / <% = item.getPicture ()%>"> </td> </tr> <tr> <td> <b> <% = item.getname ()%> </b> </td> </ tr> <tr> <Tr> <Td Id = "Cityname"> Origin: Origin: <% = item.getCity ()%> </ td> </tr> <tr> <td id = "priceName"> Price: <% = item.getprice ()%> ¥ </td> </tr> <tr> <td id = "priceName"> Price: <% = item.getPrice ()% Cookies = </td> </ tr> request.getcookies (); String HistoryStr = ""; pour (cookie c: cookies) {if (c.getName (). equals ("history")) {historystr = c.getValue (); }} Historystr + = item.getID () + ","; Cookie C = nouveau cookie ("History", Historystr); // Réinitialiser les cookies Response.Addcookie (C); %> </ table> </ centre> </td> <td valign = "top" id = "HistoryView"> <enter> <pally> <tr> <td> <b> Les produits que vous avez parcourus </b> </td> </tr> <% // Recherchent les trois derniers enregistrements abordés de DAO en fonction des cookies et de la liste de la liste de la liste; if (HistoryItems! = null && historyItems.size ()> 0) {// transférer l'ensemble pour (éléments historiqueItem: HistoryItems) {%> <tr> <td> <a href = "Details.jsp? Id = <% = HistoryItem.getid ()%>"> <img src = "images / <% = historique </tr> <tr> <td> <b> <% = historyitem.getname ()%> </b> </td> </tr> <tr> <td> Origin: <% = HistoryItem.getCity () %> </td> </tr> <%}} %> </pable> </tr> </tr> </plow> </cadre La couche DAO est responsable du fonctionnement de la requête des produits dans la base de données
package dao; import java.sql.connection; Importer java.sql.PreparedStatement; import java.sql.resultSet; import java.sql.sqlexception; import java.util.arraylist; import util.dbhelper; Importer entity.items; // Business Logic Class of Product public class itemsDao {// obtenir toutes les informations du produit public ArrayList <émiers> getAllitems () {// Collection de produits ArrayList <émiers> list = new ArrayList <émiers> (); Connexion conn = null; PréparedStatement PS = null; ResultSet rs = null; essayez {conn = dbHelper.getConnection (); String SQL = "SELECT * FROM ITEMS"; // Instruction SQL PS = Conn.PrepareStatement (SQL); rs = ps.ExecuteQuery (); // Ajouter les résultats de la requête à la collection tour à tour (Rs.Next ()) {items item = new items (); item.setid (Rs.getInt ("id")); item.setName (Rs.getString ("name")); item.setCity (Rs.GetString ("City")); item.setPrice (Rs.GetDouble ("Price")); item.setPicture (Rs.GetString ("image")); item.setNumber (Rs.getInt ("numéro")); list.add (item); }} catch (sqlexception e) {e.printStackTrace (); } Enfin {// Fermez la ressource if (rs! = null) {try {Rs.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} if (ps! = null) {try {ps.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }}} liste de retour; } // obtenir des informations sur le produit en fonction du numéro de produit des éléments publics getIteMbyId (int id) {items item = new items (); Connexion con = null; PréparedStatement PS = null; ResultSet rs = null; String sql = "SELECT * From Items Where id =?"; essayez {con = dbHelper.getConnection (); ps = con.prepareparestatement (SQL); Ps.SetInt (1, id); rs = ps.ExecuteQuery (); // Si l'ID est trouvé, initialisez-le pour l'objet d'élément if (Rs.Next ()) {item.setid (Rs.GetInt ("ID")); item.setName (Rs.getString ("name")); item.setCity (Rs.GetString ("City")); item.setPrice (Rs.GetDouble ("Price")); item.setPicture (Rs.GetString ("image")); item.setPicture (Rs.GetString ("image")); item.setNumber (Rs.getInt ("numéro")); }} catch (sqlexception e) {// TODO Generated Catch Block E.PrintStackTrace (); } Enfin {// Fermer la ressource if (rs! = null) {try {Rs.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} if (ps! = null) {try {ps.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }}} return item; } // Obtenez les trois derniers éléments navigués sur la base des cookies publics arrayList <émiteaux> GethistoryView (String Cookie) {ArrayList <I-ITCHES> LIST = NOUVEAU ARRAYLIST <SILETS> (); String ids [] = cookie.split (","); int counts = 3; // Les trois derniers enregistrements ont parcouru if (ids! = null && ids.length> 0) {for (int i = ids.length - 1; i> = 0 && i> ids.length - counts - 1; i--) {items item = getIteMbyId (Integer.ParseInt (ids [i])); / * * Déterminez d'abord si l'élément actuel existe dans la collection. Si le nombre + 1 existe, relisez-le une fois de plus (garanti d'avoir 3 objets dans la collection de liste) n'ajoutez pas cet élément * / if (list.contains (item)) {counts ++; continuer; } list.add (item); }} Retour List; }} Éléments de la catégorie des entités
entité de package; Éléments de classe publique {private int id; nom de chaîne privé; ville de cordes privée; double prix privé; numéro int privé; image de chaîne privée; public int getID () {return id; } public void setid (int id) {this.id = id; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public String getCity () {return City; } public void setCity (String City) {this.city = ville; } public double getPrice () {prix de retour; } public void setPrice (double prix) {this.price = prix; } public int getNumber () {Numéro de retour; } public void setNumber (int } public String getPicture () {return image; } public void setPicture (String Picture) {this.picture = image; } @Override public int hashcode () {// TODO Méthode générée automatiquement } @Override public boolean equals (objet obj) {if (this == obj) {return true; } else {if (obj instanceof items) {items items = (items) obj; if (this.getId () == item.getId () && this.getName (). equals (item.getName ())) {return true; }}} return false; }} Ici, nous avons réécrit le Hascode et égal aux méthodes pour modifier la méthode de comparaison (tous les éléments sont un nouvel objet. Même si le contenu des deux produits est le même, ils ne seront pas égaux. Nous devons donc modifier la méthode de comparaison)
Parce que pour l'historique de navigation, nous ne pouvons pas actualiser l'historique actuel de la navigation du produit et tous les produits sont les produits. Nous devons simplement nous assurer qu'il n'y a qu'un seul produit dans l'historique de navigation. Ainsi, la méthode Gethistoryview dans la couche Dao a ce code
<span style = "blanc-espace: pre"> </span> if (list.contains (item)) {counts ++; continuer; } Ensuite, il y a la classe d'outils
Dbhelpher singleton motif obtient un objet de connexion
package util; import java.sql.connection; Importer Java.Sql.DiverManager; import java.sql.sqlexception; classe publique dbhelper {private static final String driver = "com.mysql.jdbc.driver"; Url de chaîne finale statique privée = "jdbc: mysql: // localhost: 3306 / shopping? useunicode = true & charcterencoding = utf-8"; Nom de chaîne finale statique privée = "root"; String final statique privé Password = "123"; connexion statique privée con = null; // Le code de bloc statique est responsable du chargement du pilote statique {try {class.forname (pilote); } catch (classNotFoundException e) {// TODO Generated Catch Block E.PrintStackTrace (); }} Connexion statique publique getConnection () {if (con == null) {try {con = driverManager.getConnection (url, nom d'utilisateur, mot de passe); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} return con; }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.