ใน Javaee รุ่น Model1 อยู่กึ่งกลางในหน้า JSSP JSSP จะต้องไม่เพียง แต่ประมวลผลคำขอของเบราว์เซอร์ (โดยใช้ Javabean) แต่ยังแสดงหน้าที่เกี่ยวข้องเมื่อเข้าถึงฐานข้อมูล
ในรุ่น Model1 ไม่มี servlet
แผนภาพผลลัพธ์ของ Model1 มีดังนี้:
Model1 มีการบำรุงรักษาที่ไม่ดีและปรับขนาดได้ซึ่งเหมาะสำหรับโครงการขนาดเล็กเท่านั้น
ก่อนอื่นให้เรียกใช้ผลลัพธ์
goods.jsp
<%@page import = "entity.items"%> <%@page import = "dao.itemsdao"%> <%@page language = "java" import = "java.util.*" pageencoding = "utf-8"%> 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> jsp 'index.jsp' http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "คำหลัก" content = "keyword1, คำหลัก 2, คำหลัก type = "text/css" href = "styles.css"> -> <style type = "text/css"> div {float: ซ้าย; มาร์จิ้น: 10px; } div dd {margin: 0px; ขนาดตัวอักษร: 10pt; } div dd.dd_name {color: blue; } div dd.dd_city {color: #000; } </style> </head> <body> <center> <h1> การแสดงผลผลิตภัณฑ์ </h1> <hr> <table cellpadding = "0" cellpacing = "0"> <tr> <td> ArrayList <Items> list = new ArrayList <Items> (); // รับผลิตภัณฑ์ทั้งหมดจาก DAO และบันทึกไว้ในรายการคอลเลกชันรายการ = dao.getAllItems (); if (list! = null && list.size ()> 0) {// วนลูปผ่านการรวบรวมและแสดงผลสำหรับ (int i = 0; i <list.size (); i ++) {item item = list.get (i); %> <div> <dl> <dt> <a href = "details.jsp? id = <%= item.getId ()%>"> <img src = "ภาพ/<%= item.getPicture ()%>"/> </a> <%= item.getPrice ()%> </dd> </dl> </div> <%}}}%> </td> </tr> </table> </table> </enter> </body> </html> รูปภาพแสดงถึงผลิตภัณฑ์ในรหัส
<span style = "space สีขาว: pre"> </span> <a href = "details.jsp? id = <%= item.getId ()%>"> <img src = "images/<%= item.getPicture ()%>"/> </a>
โดยคลิกที่ภาพผลิตภัณฑ์ส่งรหัสของผลิตภัณฑ์ปัจจุบันไปยังหน้ารายละเอียด
details.jsp แสดงผลิตภัณฑ์โดยละเอียดผ่านรหัสของผลิตภัณฑ์และประวัติการเรียกดูได้รับการดูแลโดยคุกกี้
<%@page import = "org.apache.taglibs.standard.tag.common.xml.foreachtag"%> <%@page import = "entity.items"%> <%@page import = "dao.itemsdao"%= <%@page page import = "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> jsp 'index.jsp' http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "คำหลัก" content = "keyword1, คำหลัก 2, คำหลัก {ชายแดน: 1; ความเป็นมา: #EAEAEE; } #HistoryView TD {FONT-SIZE: 10PX; } </style> </head> <body> <center> <h1> รายละเอียดผลิตภัณฑ์ </h1> <hr> <table cellpadding = "0" cellpacing = "0"> <tr> <td> <center> <table> // รับวัตถุผลิตภัณฑ์ที่เกี่ยวข้องใน DAO ตามรหัสผลิตภัณฑ์ที่ส่งจากรายการคำขอรายการ = dao.getItembyId (integer.parseint (คำขอ. getParameter ("id"))); if (item! = null) {%> <tr> <td rowspan = "5"> <img src = "รูปภาพ/<%= item.getPicture ()%>"> </td> </tr> <td> <td> <b> <%= item.getName () <%= item.getCity ()%> </td> </tr> <tr> <td id = "pricename"> ราคา: <%= item.getPrice ()%> ¥ </td> </tr> <tr> <td id = "pricename"> ราคา: <%= item.getPrice () request.getCookies (); สตริงประวัติ string = ""; สำหรับ (คุกกี้ C: คุกกี้) {ถ้า (c.getName (). เท่ากับ ("ประวัติ")) {historystr = c.getValue (); }} HistorySt + = item.getId () + ","; คุกกี้ C = คุกกี้ใหม่ ("ประวัติ", HistorySt); // รีเซ็ตคุกกี้ Response.addcookie (C); %> </table> </enter> </td> <td valign = "top" id = "historyView"> <enter> <table> <tr> <td> <b> ผลิตภัณฑ์ที่คุณเรียกดู </b> </td> </tr> <% // Dao.GetHistoryView (HistoryStr); if (historyItems! = null && historyItems.Size ()> 0) {// โอนชุดสำหรับ (รายการ historyItem: historyItems) {%> <tr> <td> <a href = "details.jsp? id = <%= historyItem.getId () </tr> <tr> <td> <b> <%= historyItem.getName ()%> </b> </td> </tr> <tr> <td> แหล่งกำเนิด: <%= historyItem.getCity ()%> </td> </tr> เลเยอร์ DAO รับผิดชอบการดำเนินการค้นหาของผลิตภัณฑ์ในฐานข้อมูล
แพ็คเกจ Dao; นำเข้า java.sql.connection; นำเข้า java.sql.preparedStatement; นำเข้า java.sql.resultset; นำเข้า java.sql.sqlexception; นำเข้า java.util.arraylist; นำเข้า util.dbhelper; นำเข้า Entity.Items; // คลาสตรรกะทางธุรกิจของผลิตภัณฑ์ชั้นเรียนสาธารณะรายการ DAO {// รับข้อมูลผลิตภัณฑ์ทั้งหมด ArrayList สาธารณะ <รายการ> getAllItems () {// การรวบรวมผลิตภัณฑ์ ArrayList <Items> list = new ArrayList <Items> (); การเชื่อมต่อ conn = null; PreparedStatement PS = NULL; ผลลัพธ์ RS = NULL; ลอง {conn = dbhelper.getConnection (); String SQL = "SELECT * จากรายการ"; // คำสั่ง SQL PS = Conn.Preparestatement (SQL); rs = ps.executeQuery (); // เพิ่มผลลัพธ์ของการสืบค้นลงในคอลเลกชันในขณะที่ (rs.next ()) {รายการรายการ = รายการใหม่ (); item.setId (rs.getint ("id")); item.setName (rs.getString ("ชื่อ")); item.setCity (Rs.getString ("City")); item.setPrice (Rs.getDouble ("ราคา")); item.setPicture (rs.getString ("picture")); item.setNumber (rs.getInt ("หมายเลข")); list.add (รายการ); }} catch (sqlexception e) {e.printstacktrace (); } ในที่สุด {// ปิดทรัพยากรถ้า (rs! = null) {ลอง {rs.close (); } catch (sqlexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ E.PrintStackTrace (); }} if (ps! = null) {ลอง {ps.close (); } catch (sqlexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ E.PrintStackTrace (); }}} รายการส่งคืน; } // รับข้อมูลผลิตภัณฑ์ตามหมายเลขผลิตภัณฑ์รายการสาธารณะ getItemById (ID int) {รายการรายการ = รายการใหม่ (); การเชื่อมต่อ con = null; PreparedStatement PS = NULL; ผลลัพธ์ RS = NULL; String sql = "เลือก * จากรายการที่ id =?"; ลอง {con = dbhelper.getConnection (); ps = con.prepareStatement (SQL); ps.setint (1, id); rs = ps.executeQuery (); // หากพบ ID ให้เริ่มต้นสำหรับวัตถุรายการถ้า (rs.next ()) {item.setId (rs.getInt ("id")); item.setName (rs.getString ("ชื่อ")); item.setCity (Rs.getString ("City")); item.setPrice (Rs.getDouble ("ราคา")); item.setPicture (rs.getString ("picture")); item.setPicture (rs.getString ("picture")); item.setNumber (rs.getInt ("หมายเลข")); }} catch (sqlexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); } ในที่สุด {// ปิดทรัพยากรถ้า (rs! = null) {ลอง {rs.close (); } catch (sqlexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ E.PrintStackTrace (); }} if (ps! = null) {ลอง {ps.close (); } catch (sqlexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ E.PrintStackTrace (); }}} รายการส่งคืน; } // รับสามรายการสุดท้ายที่เรียกดูตามคุกกี้สาธารณะ ArrayList <Items> GethistoryView (String Cookie) {ArrayList <Items> list = new ArrayList <Items> (); String ids [] = cookie.split (","); int count = 3; // สามระเบียนสุดท้ายเรียกดูถ้า (ids! = null && ids.length> 0) {สำหรับ (int i = ids.length - 1; i> = 0 && i> ids.length - นับ - 1; i--) {items = getItemById / * * ก่อนกำหนดว่ารายการปัจจุบันมีอยู่ในคอลเลกชันหรือไม่ หากมีการนับ+1 อยู่อ่านอีกครั้ง (รับประกันว่ามี 3 วัตถุในการรวบรวมรายการ) อย่าเพิ่มรายการนี้*/ if (list.contains (รายการ)) {นับ ++; ดำเนินการต่อ; } list.add (รายการ); }} รายการส่งคืน; - รายการของหมวดหมู่เอนทิตี
เอนทิตีแพ็คเกจ; รายการคลาสสาธารณะ {ID INT ส่วนตัว; ชื่อสตริงส่วนตัว; เมืองสตริงส่วนตัว; ราคาสองเท่าส่วนตัว หมายเลข int ส่วนตัว; รูปภาพสตริงส่วนตัว สาธารณะ int getId () {return id; } โมฆะสาธารณะ setId (int id) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } Public String getCity () {Return City; } โมฆะสาธารณะ setCity (String City) {this.city = City; } สาธารณะ double getPrice () {ราคาคืน; } โมฆะสาธารณะ setPrice (ราคาสองเท่า) {this.price = ราคา; } public int getNumber () {หมายเลขส่งคืน; } โมฆะสาธารณะ setNumber (หมายเลข int) {this.number = number; } Public String getPicture () {return picture; } โมฆะสาธารณะ setPicture (รูปภาพสตริง) {this.picture = picture; } @Override public int hashCode () {// todo วิธีการที่สร้างอัตโนมัติ stub return.getId ()+this.getName (). hashCode (); } @Override บูลีนสาธารณะเท่ากับ (Object obj) {ถ้า (this == obj) {return true; } else {ถ้า (OBJ InstanceOf items) {item item = (รายการ) obj; if (this.getId () == item.getId () && this.getName (). เท่ากับ (item.getName ())) {return true; }}} return false; - ที่นี่เราเขียนใหม่วิธีการ HasCode และ Equals ในการแก้ไขวิธีการเปรียบเทียบ (รายการทั้งหมดเป็นวัตถุใหม่แม้ว่าเนื้อหาของผลิตภัณฑ์ทั้งสองจะเหมือนกันพวกเขาจะไม่เท่ากันดังนั้นเราจำเป็นต้องแก้ไขวิธีการเปรียบเทียบ)
เนื่องจากสำหรับประวัติการเรียกดูเราไม่สามารถรีเฟรชประวัติการเรียกดูผลิตภัณฑ์ปัจจุบันและผลิตภัณฑ์ทั้งหมดเป็นผลิตภัณฑ์ เราเพียงแค่ต้องตรวจสอบให้แน่ใจว่ามีเพียงผลิตภัณฑ์เดียวในประวัติศาสตร์การท่องเว็บ ดังนั้นวิธี GethistoryView ในชั้น DAO จึงมีรหัสนี้
<span style = "space สีขาว: pre"> </span> ถ้า (list.contains (item)) {counts ++; ดำเนินการต่อ; - จากนั้นมี คลาสเครื่องมือ
รูปแบบ Dbhelpher Singleton ได้รับวัตถุการเชื่อมต่อ
แพ็คเกจ util; นำเข้า java.sql.connection; นำเข้า java.sql.drivermanager; นำเข้า java.sql.sqlexception; คลาสสาธารณะ dbhelper {private static final string driver = "com.mysql.jdbc.driver"; url สตริงสุดท้ายคงที่ส่วนตัว = "jdbc: mysql: // localhost: 3306/การช็อปปิ้ง? useunicode = true & charcterencoding = utf-8"; ชื่อผู้ใช้สตริงสุดท้ายคงที่ส่วนตัว = "รูท"; รหัสผ่านสตริงสุดท้ายคงที่ส่วนตัว = "123"; การเชื่อมต่อแบบคงที่ส่วนตัว con = null; // รหัสบล็อกคงที่มีหน้าที่ในการโหลดไดรเวอร์คงที่ {ลอง {class.forName (ไดรเวอร์); } catch (classnotfoundexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); }} การเชื่อมต่อแบบคงที่สาธารณะ getConnection () {ถ้า (con == null) {ลอง {con = drivermanager.getConnection (url, ชื่อผู้ใช้, รหัสผ่าน); } catch (sqlexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ E.PrintStackTrace (); }} return con; -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น