検索
連載

作りながらJSPの活用を学ぶJSPコーディング・テクニック(1)(4/4 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

(4)アクセスカウント機能の作成

 前ページまでで、ブックマークの一覧表示と登録が行えるようになりました。続いて、アクセス数をカウントする仕組みを追加することにします。

 前ページのlist.jspでは、タイトル部分のリンクを、

<a href="該当サイトのURL"> サイト名 </a>

というHTML文で出力していたため、サイト名のリンクを選択すると、該当サイトのURLへ直接ジャンプしていました。しかし、この方法ではブックマーク集からアクセスされた回数をカウントすることができません。そこで、

<a href="jump.jsp?bookmarkid=ブックマークID"> サイト名 </a>

のようにリンク部分のHTML文を変更することで、一度 jump.jsp へアクセスし、そこでアクセス数をカウントアップする処理を行った後に、あらためて該当サイトのURLへ転送する、という処理を行うようにします。

 この処理の流れは次の図のようになります。

カウント処理の流れ
カウント処理の流れ

 まず、一覧表示のリンク部分を変更するために、list.jspの37行目、

"<a href=\"" + url + "\">" + title + "</a></td>"

の記述を次のように変更します。

"<a href=\"jump.jsp?bookmarkid=" + id + "\">" + title + "</a></td>"

リンク先のURLに?を付け、パラメータ名=パラメータ値とすることで、リンク先のページへパラメータの値をGETで渡すことができます。

カウントアップと転送処理を行うプログラムの作成

 続いて、一覧表示ページから渡されるブックマークIDの値を受け取って、カウントアップと転送処理を行うjump.jspを作成します。このjump.jspでは次の処理を行います。

  • 受け取ったブックマークIDのアクセスカウントを1増やす
  • 受け取ったブックマークIDの登録URLを取得し、そのURLへアクセスを転送する

 プログラムは次のようになります。

 1: <%@ page import="java.sql.*, atmarkit.MyDBAccess"
 2: contentType="text/html; charset=euc-jp" %>
 3: <%
 4: // アクセス数をインクリメントし、登録URLへアクセスを転送する
 5: 
 6: // パラメータとして渡されたブックマークIDを取得
 7: String bookmark_id = request.getParameter("bookmarkid");
 8: 
 9: // MyDBAccess のインスタンスを生成
10: MyDBAccess db = new MyDBAccess();
11: 
12: // データベースへのアクセス
13: db.open();
14: 
15: // カウントを1増やすためのSQL文
16: String sql_inc_count = "update bookmark set count=count+1 where bookmarkid=" + bookmark_id;
17: 
18: // カウントのインクリメントを実行
19: db.execute(sql_inc_count);
20: 
21: // URL を取得するためのSQL文
22: String sql_getURL = "select url from bookmark where bookmarkid=" + bookmark_id;
23: 
24: // URL を取得するためのSQL文を実行
25: ResultSet rs = db.getResultSet(sql_getURL);
26: 
27: // 結果からURLを抽出
28: rs.next();
29: String url = rs.getString("url");
30: 
31: // データベースへのコネクションを閉じる
32: db.close();
33: 
34: // 取得したURLへ転送
35: response.sendRedirect(url);
36: %>
・転送処理を行うプログラム jump.jsp

 まず、list.jspから渡されたパラメータ"bookmarkid"の値を7行目で取得しています。POSTまたはGETで渡されたパラメータの値は、

request.getParameter("パラメータ名")

で取得できます。ブックマークIDの値は整数値ですが、SQL文を生成するために使用するだけなので、文字列のまま処理を進めます。

 今回は、アクセスカウントを1つ増やし、URLを取得する、という2つの処理を行うために、2つのSQL文を使用しています。それぞれ、次のようになります。

update bookmark set count=count+1 where bookmarkid=ブックマークID
・アクセスカウントを1増やす
select url from bookmark where bookmarkid=ブックマークID
・URLを取得する

where bookmarkid=ブックマークID

 最後に、該当URLへ転送して処理を終わります。外部のURLへ転送するには、35行目に記述されているように、response オブジェクトの sendRedirect メソッドを使用します。

34: // 取得したURLへ転送
35: response.sendRedirect(url);

 さて、上記のプログラムで、ブックマーク集からアクセスがあるたびにアクセスカウントが1増えるようになりました。

 「@IT-アットマーク・アイティ」にアクセスした結果は次のようになりました。アクセス数が1増えたことを確認できます。

「@IT-アットマーク・アイティ」のcountが1になっている
「@IT-アットマーク・アイティ」のcountが1になっている

 連載第1回の今回はここまでです。いままで紹介した手順で、ブックマークの一覧表示と新規登録、アクセスカウンタ機能が作成できました。次回は登録済みのブックマークを修正、削除する機能を作成してゆきます。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る