Di Javaee, model Model1 berpusat pada halaman JSSP. JSSP tidak hanya harus memproses permintaan browser secara logis (menggunakan Javabean), tetapi juga menampilkan halaman yang relevan saat mengakses database.
Dalam model Model1, tidak ada servlet.
Diagram hasil Model1 adalah sebagai berikut:
Model1 memiliki pemeliharaan dan skalabilitas yang buruk, yang hanya cocok untuk proyek -proyek kecil.
Pertama jalankan hasilnya
goods.jsp
<%@page impor = "entity.items"%> <%@page impor = "dao.itemsdao"%> <%@page language = "java" impor = "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 transisi // en"> <html> <head> <base href = "<%= Basepath%>"> <title> methpa letning = "no-conte =" no-cande = "no-conte =" no-conte = "no-conte =" no-cande = http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "kedaluwarsa" konten = "0"> <meta http-equiv = "kata kunci" konten = "kata kunci1, kata kunci2, koki"> <meta http http-equiv = "koki" ini = "ini" type = "text/css" href = "styles.css"> -> <style type = "text/css"> div {float: left; margin: 10px; } div dd {margin: 0px; Ukuran font: 10pt; } div dd.dd_name {color: blue; } div dd.dd_city {color: #000; } </tyle> </head> <body> <senter> <h1> tampilan produk </h1> <hr> <table cellpadding = "0" cellpacing = "0"> <tr> <td> <% itemsdao dao = item baru (); ArrayList <Tertems> Daftar = Daftar ArrayList baru <Tertems> (); // Dapatkan semua produk dari DAO dan simpan ke daftar koleksi daftar = dao.getAllItems (); if (list! = null && list.size ()> 0) {// loop melalui koleksi dan tampilan untuk (int i = 0; i <list.size (); i ++) {item item = list.get (i); %> <dv> <dl> <dt> <a href = "details.jsp? id = <%= item.getId ()%>"> <img src = "gambar/<%= item.getPicture ()%>"/</a> </dt> <dd> <%= item.getName () "/%: dd: <dd> <%= item. <%= item.getPrice ()%> </dd> </ll> </div> <%}}%> </td> </tr> </able> </able> </center> </body> </html> Gambar yang mewakili produk dalam kode
<span style = "space putih: pre"> </span> <a href = "details.jsp? id = <%= item.getId ()%>"> <img src = "gambar/<%= item.getPicture ()%>"/> </a>
Dengan mengklik gambar produk, lewati ID produk saat ini ke halaman Detail
Details.jsp menampilkan produk terperinci melalui ID produk, dan riwayat penelusuran dikelola oleh cookie
<%@page impor = "org.apache.taglibs.standard.tag.common.xml.foreachtag"%> <%@page impor = "entity.items"%> <%@page impor = "dao.itemsdao"%> <%halaman = "java" impor = "java.util. request.getContextPath (); String basePath = request.getScheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en"> <html> <head> <base href = "<%= Basepath%>"> <title> methpa letning = "no-conte =" no-cande = "no-conte =" no-conte = "no-conte =" no-cande = http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "kedaluwarsa" konten = "0"> <meta http-equiv = "kata kunci" content = "KeyWord1, KeyWord2, KeyWord3"> <meta http http-quiv = "deskripsi" ini " #historyView {border: 1; Latar belakang: #eaeaee; } #HistoryView td {font-size: 10px; } </tyle> </head> <body> <senter> <h1> Rincian produk </h1> <hr> <tabel cellpadding = "0" cellpacing = "0"> <tr> <td> <senter> <able> <% itemdao dao = item baru (); // Dapatkan objek produk yang sesuai di DAO sesuai dengan ID produk yang dikirim dari item permintaan item = dao.getitembyId (integer.parseint (permintaan .getParameter ("id")))); if (item! = null) {%> <tr> <td rowspan = "5"> <img src = "gambar/<%= item.getPicture ()%>"> </td> </tr> <td> <b> <%= "TR> </TR> <) </TR> </TR> <" TR> </TRD <) <) </TD "</TR> </TRD" () <) </b> </td> </tr> </TRD "<) <) </TD" </TD "<" TR> "TR>" TR> "TR>" TR> </TD "" TR> </TR> </TRE "" TR> "TR> </TR> </TR> </TD" () <) </b> </td> </TR> "TR>" TRE ""% <%= item.getCity ()%> </td> </tr> <tr> <td id = "pricename"> Harga: <%= item.getPrice ()%> ¥ </td> </tr> <td id = "pricename" <%= item.get.getprice () <td iD = "pricename" request.getCookies (); String historystr = ""; untuk (cookie c: cookies) {if (c.getName (). Equals ("history")) {historystr = c.getValue (); }} historystr + = item.getId () + ","; Cookie c = cookie baru ("history", historystr); // Reset cookies response.addcookie (c); %> </able> </denter> </td> <td valign = "top" id = "historyView"> <usen> <abl> <tr> <td> <b> Produk yang telah Anda browsed </b> </td> </tr> <% // ambil tiga catatan yang di -browse dari DAO berdasarkan cookie dan menyimpannya di The Daftar Koleksi // FETCH AREKS AREKS AREKS DARI DAO berdasarkan cookie dan menyimpannya ke dalam daftar dao.gethistoryView (historystr); if (historyItems! = null && historyItems.size ()> 0) {// Transfer set untuk (item historyItem: historyItems) {%> <tr> <td> <a href = "details.jsp? id = <%= historyem.getId ()%>"> <mmg src = "gambar/<%= historem.getId ()%>"> <mmg src = "gambar/<%/taRyem. </tr> <tr> <td> <b> <%= historyItem.getname ()%> </b> </td> </tr> <tr> <td> Asal: <%= historyItem.getCity ()%> </t/tr> <%}}%> </Tabel> </tr> </tr> <%}}%> </TABLE> </TR> </TR> Lapisan DAO bertanggung jawab atas operasi permintaan produk dalam database
Paket Dao; impor java.sql.connection; impor java.sql.preparedstatement; impor java.sql.Resultset; impor java.sql.sqlexception; impor java.util.arraylist; impor util.dbhelper; Impor Entity.Items; // Kelas Logika Bisnis dari Produk Kelas Public ITEMDAO {// Dapatkan semua Informasi Produk Public ArrayList <Tertems> getAllItems () {// Product Collection ArrayList <TEMEST> DAFTAR = ARRAYLIST BARU <TITEMS> (); Koneksi conn = null; Disiapkan ps = null; Hasil rs = null; coba {conn = dbhelper.getConnection (); String sql = "pilih * dari item"; // pernyataan sql ps = conn.preparestatement (sql); rs = ps.executeQuery (); // Tambahkan hasil kueri ke koleksi secara bergantian (rs.next ()) {item item = item baru (); item.setId (rs.getint ("id")); item.setname (rs.getString ("name")); item.setCity (rs.getString ("City")); item.setPrice (rs.getDouble ("harga")); item.setPicture (rs.getString ("gambar")); item.setNumber (rs.getint ("nomor")); list.add (item); }} catch (sqlexception e) {e.printstacktrace (); } akhirnya {// tutup sumber daya jika (rs! = null) {coba {rs.close (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); }} if (ps! = null) {coba {ps.close (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); }}} daftar pengembalian; } // Dapatkan informasi produk berdasarkan nomor produk item publik getItembyId (int id) {item item = item baru (); Koneksi con = null; Disiapkan ps = null; Hasil rs = null; String sql = "pilih * dari item di mana id =?"; coba {con = dbhelper.getConnection (); ps = con.preparestatement (SQL); ps.setint (1, id); rs = ps.executeQuery (); // Jika ID ditemukan, inisialisasi untuk objek item if (rs.next ()) {item.setId (rs.getint ("id")); item.setname (rs.getString ("name")); item.setCity (rs.getString ("City")); item.setPrice (rs.getDouble ("harga")); item.setPicture (rs.getString ("gambar")); item.setPicture (rs.getString ("gambar")); item.setNumber (rs.getint ("nomor")); }} catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); } akhirnya {// tutup sumber daya if (rs! = null) {coba {rs.close (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); }} if (ps! = null) {coba {ps.close (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); }}} return item; } // Dapatkan tiga item terakhir yang ditelusuri berdasarkan cookie arraylist publik <Tertems> getHistoryView (cookie string) {arrayList <Tertems> Daftar = ArrayList baru <Items> (); ID string [] = cookie.split (","); int counts = 3; // Tiga catatan terakhir menelusuri if (ids! = null && ids.length> 0) {for (int i = ids.length - 1; i> = 0 && i> ids.length - counts - 1; i--) {item item = getItemById (integer.parseint (IDS [i]); / * * Pertama menentukan apakah item saat ini ada dalam koleksi. Jika jumlah+1 ada, baca sekali lagi (dijamin memiliki 3 objek dalam koleksi daftar) jangan menambahkan item ini*/ if (list.contains (item)) {counts ++; melanjutkan; } list.add (item); }} daftar pengembalian; }} Item dari kategori entitas
entitas paket; item kelas publik {private int id; nama string pribadi; Private String City; harga ganda pribadi; nomor int pribadi; gambar string pribadi; publik int getId () {return id; } public void setid (int id) {this.id = id; } public string getName () {return name; } public void setName (name string) {this.name = name; } public string getCity () {return city; } public void setCity (string city) {this.city = city; } public double getPrice () {harga kembali; } public void setPrice (harga ganda) {this.price = harga; } public int getNumber () {nomor kembali; } public void setNumber (int number) {this.number = number; } public string getPicture () {return picture; } public void setPicture (string picture) {this.picture = picture; } @Override public int hashCode () {// TODO METODE AUTO-AUTOLETATED Stub return this.getId ()+this.getName (). HashCode (); } @Override public boolean sama (objek obj) {if (this == obj) {return true; } else {if (obj instance dari item) {item item = (item) obj; if (this.getId () == item.getId () && this.getName (). Equals (item.getName ())) {return true; }}} return false; }} Di sini kami menulis ulang metode hascode dan sama
Karena untuk menjelajahi riwayat, kami tidak dapat menyegarkan riwayat penelusuran produk saat ini dan semua produk adalah produknya. Kita hanya perlu memastikan bahwa hanya ada satu produk dalam sejarah penjelajahan. Jadi metode getHistoryView di lapisan DAO memiliki kode ini
<span style = "white-space: pre"> </span> if (list.contains (item)) {counts ++; melanjutkan; } Lalu ada kelas alat
DBHELPHER SINGLETON POLA MENGUBAH OBYEK KONEKSI
paket util; impor java.sql.connection; impor java.sql.driverManager; impor java.sql.sqlexception; kelas publik dbhelper {private static final string driver = "com.mysql.jdbc.driver"; Private Static Final String url = "JDBC: mysql: // localhost: 3306/belanja? UseUnicode = true & charcterencoding = UTF-8"; private static final string username = "root"; kata sandi string final statis pribadi = "123"; koneksi statis pribadi con = null; // Kode blok statis bertanggung jawab untuk memuat driver statis {coba {class.forname (driver); } catch (ClassNotFoundException e) {// TODO AUTO-ENCOMEERATED Catch Block E.PrintStackTrace (); }} Koneksi statis publik getConnection () {if (con == null) {coba {con = driverManager.getConnection (url, nama pengguna, kata sandi); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); }} return con; }}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.