ホームページ  >  記事  >  Java  >  JAVA Mall カテゴリ、Redis キャッシュ カテゴリ、製品の表示の実用的な非同期読み込み

JAVA Mall カテゴリ、Redis キャッシュ カテゴリ、製品の表示の実用的な非同期読み込み

巴扎黑
巴扎黑オリジナル
2017-06-23 16:28:192341ブラウズ

今日のタスク

  • 分類モジュールの機能を完了する

  • 製品モジュールの機能を完了する

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 で一般的に使用される 2 番目のキャッシュ プラグインです。

* Redis :

* 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. サーブレットに送信します:

* パラメータを受け取る: カテゴリ ID

* 現在のページ:現在のページ番号 1

* ビジネスレイヤーの呼び出し:

* カプセル化 PageBean:

* ページジャンプ:

以上がJAVA Mall カテゴリ、Redis キャッシュ カテゴリ、製品の表示の実用的な非同期読み込みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。