国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

JAVAEE model1模型實(shí)現(xiàn)商品瀏覽記錄(去除重復(fù)的瀏覽記錄)(一)

2019-11-26 13:33:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在javaee中Model1模型是以jsp頁(yè)面為中心的,jsp既要對(duì)瀏覽器的request做出邏輯處理(使用javabean),訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)也要顯示出相關(guān)的頁(yè)面。
在model1模型中,沒(méi)有servlet。
Model1結(jié)果圖如下:

Model1的可維護(hù)性  可擴(kuò)展性都是較差的  只適合小項(xiàng)目。

首先運(yùn)行結(jié)果

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> <head> <base href="<%=basePath%>">  <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!--   <link rel="stylesheet" type="text/css" href="styles.css">   --> <style type="text/css"> div {   float: left;   margin: 10px; }  div dd {   margin: 0px;   font-size: 10pt; }  div dd.dd_name {   color: blue; }  div dd.dd_city {   color: #000; } </style> </head>  <body>   <center>     <h1>商品展示</h1>     <hr>     <table width="800" height="60" cellpadding="0" cellspacing="0"       border="0">       <tr>         <td>           <%             ItemsDao dao = new ItemsDao();             ArrayList<Items> list = new ArrayList<Items>();             //從dao中獲取所有的商品 并保存到list集合中             list = dao.getAllItems();             if (list != null && list.size() > 0) {               //循環(huán)遍歷集合 并顯示               for (int i = 0; i < list.size(); i++) {                 Items item = list.get(i);           %>           <div>             <dl>               <dt>                 <a href="details.jsp?id=<%=item.getId()%>"><img                   src="images/<%=item.getPicture()%>" width="120" height="90"                   border="1" />                 </a>               </dt>               <dd class="dd_name"><%=item.getName()%></dd>               <dd class="dd_city">                 產(chǎn)地:<%=item.getCity()%> 價(jià)格:¥                 <%=item.getPrice()%></dd>             </dl>           </div> <%   }   }  %>         </td>        </tr>     </table>   </center> </body> </html>

  在代碼中 表示商品的圖片

<span style="white-space:pre">               </span><a href="details.jsp?id=<%=item.getId()%>"><img src="images/<%=item.getPicture()%>" width="120" height="90"  border="1" />  </a> 

通過(guò)點(diǎn)擊商品的圖片  把當(dāng)前商品的id傳值給details頁(yè)面
details.jsp通過(guò)商品的id來(lái)顯示詳細(xì)商品  ,而瀏覽記錄由cookies維護(hù)

<%@page import="org.apache.taglibs.standard.tag.common.xml.ForEachTag"%> <%@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> <head> <base href="<%=basePath%>">  <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <style type="text/css"> #historyview {   border: 1;   background: #EAEAEE; }  #historyview td {   font-size: 10px; } </style> </head>  <body>   <center>     <h1>商品詳情</h1>     <hr>     <table width="750" border="0" cellpadding="0" cellspacing="0">       <tr>         <td width="70%">           <center>             <table border="0">               <%                 ItemsDao dao = new ItemsDao();                 //根據(jù)request傳來(lái)的商品id 向dao中獲得相對(duì)應(yīng)的商品對(duì)象                 Items item = dao.getItemById(Integer.parseInt(request                     .getParameter("id")));                 if (item != null) {               %>               <tr>                 <td rowspan="5"><img src="images/<%=item.getPicture()%>"                   width="200" height="150"></td>               </tr>               <tr>                 <td><b><%=item.getName()%></b>                 </td>               </tr>               <tr>                 <td id="cityname">產(chǎn)地:<%=item.getCity()%></td>               </tr>               <tr>                 <td id="pricename">價(jià)格:<%=item.getPrice()%> ¥</td>               </tr>               <tr>                 <td id="pricename">價(jià)格:<%=item.getPrice()%> ¥</td>               </tr>               <%                 }                 //將該商品加入cookies                 Cookie[] cookies = request.getCookies();                 String historyStr = "";                 for (Cookie c : cookies) {                   if (c.getName().equals("history")) {                     historyStr = c.getValue();                   }                 }                 historyStr += item.getId() + ",";                 Cookie c = new Cookie("history", historyStr);                 //重新設(shè)置cookies                 response.addCookie(c);               %>             </table>           </center></td>          <td width="30%" valign="top" id="historyview">           <center>             <table>               <tr>                 <td><b>你瀏覽過(guò)的商品</b></td>               </tr>               <%                 //根據(jù)cookie 從dao獲取最后瀏覽的三次記錄 并保存到list集合                 ArrayList<Items> historyItems = dao.getHistoryView(historyStr);                 if (historyItems != null && historyItems.size() > 0) {                   //遍歷集合                   for (Items historyItem : historyItems) {               %>               <tr>                 <td><a href="details.jsp?id=<%=historyItem.getId()%>"><img                     src="images/<%=historyItem.getPicture()%>" width="100"                     height="80" border="1"> </a></td>               </tr>               <tr>                 <td><b><%=historyItem.getName()%></b>                 </td>               </tr>               <tr>                 <td>產(chǎn)地:<%=historyItem.getCity()%></td>               </tr>               <%                 }                 }               %>             </table>           </center>         </td>       </tr>     </table>    </center> </body> </html>

dao層  負(fù)責(zé)商品在數(shù)據(jù)庫(kù)中的查詢(xún)操作

package dao;  import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import util.DBHelper; import entity.Items;  //商品的業(yè)務(wù)邏輯類(lèi) public class ItemsDao {   // 獲得所有商品信息   public ArrayList<Items> getAllItems() {     // 商品集合     ArrayList<Items> list = new ArrayList<Items>();     Connection conn = null;     PreparedStatement ps = null;     ResultSet rs = null;      try {       conn = DBHelper.getConnection();       String sql = "select * from items";// sql 語(yǔ)句       ps = conn.prepareStatement(sql);       rs = ps.executeQuery();       // 將查詢(xún)的結(jié)果依次加入集合       while (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("picture"));         item.setNumber(rs.getInt("number"));         list.add(item);       }     } catch (SQLException e) {        e.printStackTrace();     } finally {       // 關(guān)閉資源       if (rs != null) {         try {           rs.close();         } catch (SQLException e) {           // TODO Auto-generated catch block           e.printStackTrace();         }       }       if (ps != null) {         try {           ps.close();         } catch (SQLException e) {           // TODO Auto-generated catch block           e.printStackTrace();         }       }      }     return list;   }    // 根據(jù)商品編號(hào)獲取商品資料    public Items getItemById(int id) {     Items item = new Items();     Connection con = null;     PreparedStatement ps = null;     ResultSet rs = null;     String sql = "select * from items where id = ?";     try {       con = DBHelper.getConnection();       ps = con.prepareStatement(sql);       ps.setInt(1, id);       rs = ps.executeQuery();       // 如果找到該id 為item對(duì)象初始化       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("picture"));         item.setNumber(rs.getInt("number"));       }      } catch (SQLException e) {       // TODO Auto-generated catch block       e.printStackTrace();     } finally {       // 關(guān)閉資源       if (rs != null) {         try {           rs.close();         } catch (SQLException e) {           // TODO Auto-generated catch block           e.printStackTrace();         }       }       if (ps != null) {         try {           ps.close();         } catch (SQLException e) {           // TODO Auto-generated catch block           e.printStackTrace();         }       }     }     return item;   }    // 根據(jù)cookie 獲得瀏覽的最后三個(gè)商品   public ArrayList<Items> getHistoryView(String cookie) {     ArrayList<Items> list = new ArrayList<Items>();     String ids[] = cookie.split(",");     int counts = 3;// 瀏覽的最后三條記錄     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āng)前物品 如果存在 counts+1 多讀取一次(保證list集合中有3個(gè)對(duì)象) 不添加此物品          */         if (list.contains(item)) {           counts++;           continue;         }         list.add(item);       }     }     return list;   } } 

商品的實(shí)體類(lèi) Items

package entity;  public class Items {   private int id;   private String name;   private String city;   private double price;   private int number;   private String picture;    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() {     return price;   }    public void setPrice(double price) {     this.price = price;   }    public int getNumber() {     return number;   }    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 Auto-generated method stub     return this.getId()+this.getName().hashCode();   }   @Override   public boolean equals(Object 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;   } } 

在這里  重寫(xiě)了hasCode和equals方法  來(lái)修改比較方式(所有的item都是一個(gè)新的對(duì)象 即使兩個(gè)商品的內(nèi)容全部一樣也不會(huì)相等  。所以要修改比較方式)
因?yàn)閷?duì)于瀏覽記錄而言  我們不能通過(guò)刷新當(dāng)前商品  瀏覽記錄全部都是該商品 我們只要保證該商品在瀏覽記錄中 只有一個(gè)即可
所以在dao層中的getHistoryView方法有這句代碼

<span style="white-space:pre">       </span>if (list.contains(item)) {           counts++;           continue;         } 

然后是工具類(lèi)
DBHelpher 單例模式獲得connection對(duì)象

package util;  import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;  public class DBHelper {   private static final String driver = "com.mysql.jdbc.Driver";   private static final String url = "jdbc:mysql://localhost:3306/shopping?useUnicode=true&charcterEncoding=UTF-8";   private static final String username = "root";   private static final String password = "123";   private static Connection con = null;   // 靜態(tài)塊代碼負(fù)責(zé)加載驅(qū)動(dòng)   static {     try {       Class.forName(driver);     } catch (ClassNotFoundException e) {       // TODO Auto-generated catch block       e.printStackTrace();     }   }    public static Connection getConnection() {      if (con == null) {       try {         con = DriverManager.getConnection(url, username, password);       } catch (SQLException e) {         // TODO Auto-generated catch block         e.printStackTrace();       }     }     return con;   } } 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 石嘴山市| 乌苏市| 紫阳县| 台安县| 宁陕县| 江华| 曲阜市| 宜宾县| 青岛市| 满洲里市| 厦门市| 河西区| 遂川县| 黑龙江省| 两当县| 临洮县| 东乡| 阿城市| 陆丰市| 南溪县| 辉县市| 巨野县| 古田县| 巢湖市| 图片| 祥云县| 东莞市| 衡南县| 资中县| 旬阳县| 湖州市| 奇台县| 青田县| 双峰县| 广丰县| 平利县| 梁河县| 镇平县| 新野县| 灵石县| 鄄城县|