Redisの学習(II) - ケース演習

ケースのニーズ:


  1. index.htmlのページを提供し、ページには、地方のドロップダウンリストを持っています

  2.ページのロードがすべての州をロードするためのAJAXリクエストを送ります

  地方の3 Aリストは変更されないまま、各時間後にページを更新するのRedisから取得されます

 

*注:使用が頻繁に発生していないいくつかのデータの変更をキャッシュするのRedis。
    *データベースのデータが変更されると、我々はキャッシュを更新する必要があります。
      *表の追加や削除は、データベース関連の操作を実行するために、我々はRedisのは、再び保存され、キャッシュされたデータ、クリアする必要が
      対応するサービスCRUDメソッド、Redisのデータ削除に*を。

フロントページ:

<!DOCTYPE HTML > 
< HTML LANG = "EN" > 
< > 
    < メタのcharset = "UTF-8" > 
    < タイトル>タイトル</ タイトル>     
    < スクリプトSRC =「JS / jQueryの-3.3.1.min.js " > </ スクリプト> 
    
    < スクリプト> 
        $(関数(){    
             // AJAXリクエストを送信し、データがロードされるすべての州
            $に.get(" provinceServlet " 、{}、機能(データ){
                // [{ "ID":1、 "名前": "北京"}、{ "ID":2、 "名称": "上海"}、{ "ID":3 "名前": "广州"} 、{ "ID":4、 "名前": "陕西"}] 

                // 1获取選択
                するvar = $(" #province " )。
                // 2.遍历JSON数组
                $(データ).each(関数(){
                     // 3.创建<オプション> 
                    のvar オプション=  " <オプション名= ' " + この.ID + " '> " + 名前+ " </オプション> " ; 

                    //4.的APPEND追加オプションの選択调用
                    province.append(オプション)。
                }); 
            });         
        }); 
</ スクリプト> </ ヘッド> < 身体> < 選択のid = "州" > < オプション> -请选择省份- </ オプション> </ 選択> </ ボディ> </ HTML >
provinceServlet:
@WebServlet( "/ provinceServlet" パブリック クラス ProvinceServletが延びているのHttpServletは{
     保護された ボイドのdoPost(HttpServletRequestのリクエスト、HttpServletResponseの応答)スローServletExceptionがは、IOException {
        / * // 1调用サービス查询
        ProvinceServiceサービス=新しいProvinceServiceImplを(); 
        一覧<省>リスト= service.findAll(); 
        。// 2序列化リスト为JSON 
        ObjectMapperマッパー=新しいObjectMapper(); 
        ストリングJSON = mapper.writeValueAsString(リスト)。* / 

        // 1.调用サービス查询 
        ProvinceServiceサービス= 新しいですProvinceServiceImpl(); 
        ストリングJSON = service.findAllJson()。

        System.out.println(JSON)。
        // 3.响应结果 
        response.setContentType( "アプリケーション/ JSON;のcharset = UTF-8" )。
        response.getWriter()書き込み(JSON)。

    } 

    保護された ボイドのdoGet(HttpServletRequestのリクエスト、HttpServletResponseの応答)スローServletExceptionがは、IOException {
         この.doPost(要求、応答)。
    } 
}

provinceServiceインタフェースとprovinceServiceImplコード:

パブリック インターフェースProvinceService { 

    パブリックリスト<州> のfindAll(); 

    公共の文字列findAllJson(); 
}
================================================= ==================
パブリック クラス ProvinceServiceImpl 実装ProvinceService { // 声明DAO プライベート ProvinceDaoのDAO = 新しいProvinceDaoImpl(); @Override パブリックリスト<州> のfindAll(){ 戻りdao.findAll()。 } / ** 使用缓存のRedis * / @Override 公衆FindAllJson文字列(){ // 1 Redisのクエリデータが開始 // 1.1 Redisの取得クライアント接続 Jedis jedis = JedisPoolUtils.getJedis(); 文字列province_json = jedis.get( "州" ); // 2の分析データprovince_json NULLかどうか のiF(province_json == NULL || province_json.length()== 0 ){ // Redisのデータなし のSystem.out.println( "データなしでのRedis、データベースを照会..." ); // 2.1以下からのクエリデータ 一覧<省> PS = dao.findAll(); // JSONリストに2.2シーケンス ObjectMapperマッパーは= 新しい新しいですObjectMapper(); 試み{ province_json = mapper.writeValueAsString(PS); } キャッチ(JsonProcessingException E){ e.printStackTrace(); } // のRedisのに2.3 JSONデータ jedis.set( "州" 、province_json); / / 戻り接続 jedis.close(); } { するSystem.out.println( "クエリキャッシュ内のRedisのデータ..." ); } 戻りprovince_json; } }

provinceDaoインタフェースとprovinceDaoImplコード:

パブリック インターフェースProvinceDao { 

    パブリックリスト<州> のfindAll(); 
}

 ================================================= ========== パブリッククラス ProvinceDaoImplの実装ProvinceDao { // 1.声明成员变量jdbctemplement プライベート JdbcTemplateテンプレート= 新しいJdbcTemplate(JDBCUtils.getDataSource()); 
    @Override 公共一覧<省> のfindAll(){
         // 1.定义SQL 
        文字列のSQL = "SELECT * FROM州" // 2.执行SQL 
        一覧<省>リスト= template.query(SQL、

 

    
    

    新しい BeanPropertyRowMapper <省>(省。クラス));
        戻り値のリスト。
    } 
}

JDBCUtils:

/ ** 
 *ツールは、JDBC接続プールDurid使用
 * / 
パブリック クラスJDBCUtils { 

    プライベート 静的; DataSourceのDS 

    静的{
         試み{
             // 1.負荷プロファイル 
            のプロパティプロ= 新しい新しいプロパティ();
             // 使用するクラスローダの負荷プロファイル、取得をバイトの入力ストリーム 
            。入力ストリームIS = JDBCUtils クラス .getClassLoader()getResourceAsStream( "druid.properties" ;)
            pro.load(IS); 

            // 2.接続プールオブジェクトの初期化 
            DS = DruidDataSourceFactory.createDataSource(PRO)を; 

        } キャッチ(IOExceptionをE){ 
            e.printStackTrace(); 
        } キャッチ(例外e){ 
            e.printStackTrace(); 
        } 
    } 
    / ** 
     *接続プール・オブジェクトを取得
     * / 
    パブリック 静的データソースをgetDataSource(){
         戻りDSを; 
    } 
    / ** 
     *取得接続された接続オブジェクト
     * / 
    パブリック 静的接続のgetConnection()スローのSQLException {
         戻り  ds.getConnectionを(); 
    } 
}

druid.propertiesとjedis.propertiesとSQLファイル:

 

 プレゼンテーションインタフェース:

おすすめ

転載: www.cnblogs.com/churujianghudezai/p/11939351.html