首頁 >Java >java教程 >JAVA商城實戰之非同步載入分類、Redis快取分類與顯示商品

JAVA商城實戰之非同步載入分類、Redis快取分類與顯示商品

巴扎黑
巴扎黑原創
2017-06-23 16:28:192386瀏覽

今日任務

  • 完成分類模組的功能

  • #完成商品模組的功能

1.1      分類模塊的功能:

1.1.1    查詢分類的功能:

1.1.2    查詢分類的代碼實現:

1.1.2.1  建立表格:

CREATE TABLE `category` (

  `cid` varchar(32) NOT NULL,

  `cname` varchar(20) DEFAULT NULL,  PRIMARY KEY (`cid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

1.1.2.2  功能實作:

1.直接查詢所有分類:

#
CategoryDao categoryDao = new CategoryDaoImpl();

List<Category>  list = categoryDao.findAll();

2.非同步載入分類:

$(function() {

    $.post("/store_v2.0/CategoryServlet", {"method" : "findAll"}, function(data) {

        $.each(data, function(i, n) {

            $("#menu").append("<li><a href=&#39;#&#39;>" + n.cname + "</a></li>");

        });

    }, "json");

});

 

 

3.使用快取技術:對程式進行最佳化.

* 快取:其實就是記憶體中的一塊空間.可以使用快取將資料來源中的資料拿到,存入記憶體.後期取得資料的話從快取取得.

* Memcache   :

* EHCache :是Hibernate常用的二級快取的外掛程式.

* Redis      :

* 使用ehcache:

    :

* 使用ehcache:

   *引入jar包:

   * 引入檔案:

 

  // 业务层查询所有分类的方法:public List<Category> findAll() throws SQLException {/* * CategoryDao categoryDao = new CategoryDaoImpl(); return

         * categoryDao.findAll();         *//** * 从缓存中查询数据:

         *  * 有数据,直接将缓存的数据返回.

         *  * 如果没有,查询数据库,数据存入到缓存中.         */List<Category> list = null; // 从缓存中进行查询:CacheManager cacheManager = CacheManager

                .create(CategoryServiceImpl.class.getClassLoader().getResourceAsStream("ehcache.xml"));

        Cache cache = cacheManager.getCache("categoryCache");

       

        Element element = cache.get("list");if(element != null){// 缓存中有数据:System.out.println("缓存中有数据...");

            list = (List<Category>) element.getObjectValue();

        }else{// 缓存中没有数据:System.out.println("缓存中没有数据...");

            CategoryDao categoryDao = new CategoryDaoImpl();

            list = categoryDao.findAll();

            Element e = new Element("list", list);// cache.cache.put(e);

        }return list; 

    }

 

1.2      前台頁面上的商品顯示:

#1.2.1    商品顯示準備工作:
##1.2.1.1  建立表格:

CREATE TABLE `product` (

  `pid` varchar(32) NOT NULL,

  `pname` varchar(50) DEFAULT NULL,

  `market_price` double DEFAULT NULL,

  `shop_price` double DEFAULT NULL,

  `pimage` varchar(200) DEFAULT NULL,

  `pdate` datetime DEFAULT NULL,

  `is_hot` int(11) DEFAULT NULL,-- 1:热门

  `pdesc` varchar(255) DEFAULT NULL,

  `pflag` int(11) DEFAULT NULL,-- 1:下架

  `cid` varchar(32) DEFAULT NULL,

  PRIMARY KEY (`pid`),

  KEY `sfk_0001` (`cid`),

  CONSTRAINT `sfk_0001` FOREIGN KEY (`cid`) REFERENCES `category` (`cid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

1.2.1.2  建立類別:

 

1.2.2    首頁上的熱門商品的顯示與最新商品的顯示
       

#
 ProductService productService = new ProductServiceImpl();try {// 查询热门商品:List<Product> hotList = productService.findByHot();// 查询最新商品:List<Product> newList = productService.findByNew();

           

            req.setAttribute("hotList",hotList);

            req.setAttribute("newList",newList);

           

        } catch (SQLException e) {

            e.printStackTrace();throw new RuntimeException();

        }

 

# #1.2.3    商品詳情的顯示
#    

public String findById(HttpServletRequest req,HttpServletResponse resp){// 接收参数:String pid = req.getParameter("pid");// 调用业务层:ProductService productService = new ProductServiceImpl();try {

            Product product = productService.findById(pid);

            req.setAttribute("product",product);

        } catch (SQLException e) {

            e.printStackTrace();throw new RuntimeException();

        }// 页面跳转return "/jsp/product_info.jsp";

    }

 

1.2.4    顯示某分類下的商品:

1.2.4    顯示某分類下的商品:

1.在首頁點選分類的連結:

2.提交至Servlet:

    * 接收參數:分類的ID

    * 目前頁面:目前頁數1

    * 調用業務層:

         * 封裝PageBean:

   * 頁面跳轉:###### ###### ###

以上是JAVA商城實戰之非同步載入分類、Redis快取分類與顯示商品的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn