Heim  >  Artikel  >  Java  >  JAVA Mall Praktisches asynchrones Laden von Kategorien, Redis-Cache-Kategorien und Anzeige von Produkten

JAVA Mall Praktisches asynchrones Laden von Kategorien, Redis-Cache-Kategorien und Anzeige von Produkten

巴扎黑
巴扎黑Original
2017-06-23 16:28:192358Durchsuche

Heutige Aufgabe

  • Vervollständigen Sie die Funktionen des Klassifizierungsmoduls

  • Vervollständigen Sie die Funktionen des Produktmoduls

1.1 Funktion des Klassifizierungsmoduls:

1.1.1 Funktion der Abfrageklassifizierung:

1.1.2 Code-Implementierung der Abfrageklassifizierung:

1.1.2.1 Tabelle erstellen:

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 Funktionsimplementierung:

1. Alle Kategorien direkt abfragen :

CategoryDao categoryDao = new CategoryDaoImpl();

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

2. Asynchrone Ladeklassifizierung:

$(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 . Caching-Technologie verwenden: Optimieren Sie das Programm.

* Cache: Es ist tatsächlich ein Speicherplatz im Speicher Wird später abgerufen, wird es aus dem Cache abgerufen.

* Memcache:

* EHCache: Es handelt sich um ein Cache-Plug-in der zweiten Ebene, das häufig von Hibernate verwendet wird.

* Redis :

* Ehcache verwenden:

* JAR-Paket einführen:

* Konfigurationsdatei einführen:

  // 业务层查询所有分类的方法: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 Rezeption Produktanzeige auf der Seite:

1.2.1 Vorbereitung der Produktpräsentation:

1.2.1.1 Tabelle erstellen:

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 Klasse erstellen:

1.2.2 Anzeige beliebter Produkte und neuester Produkte auf der Startseite

 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 Anzeige von Produktdetails

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 Produkte unter einer bestimmten Kategorie anzeigen:

1 Klicken Sie auf den Kategorielink auf der Startseite:

2 🎜>

* Empfangsparameter: Kategorie-ID

* Aktuelle Seite: Aktuelle Seitennummer 1

* Aufrufende Business-Schicht:

* Kapselung von PageBean:

* Seitensprung:

Das obige ist der detaillierte Inhalt vonJAVA Mall Praktisches asynchrones Laden von Kategorien, Redis-Cache-Kategorien und Anzeige von Produkten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn