• 締切済み

Strutsで共通のアクセス解析用URLを呼びたい

下記の環境にて、携帯サイトのシステム開発をしております。 環境:Tomcat5. 5 JDK5 Eclipse3.4 Struts    ※携帯サイトのため、Javascriptは使用不可 この度、サイト内のアクセス分析のために外部サーバに用意されたアクセス解析用のURLを呼び出すことになりました。 アクセス解析用のURLに渡すパラメーターとして、会員ID、ユーザーエージェント、リクエストページ、リクエスト元ページ等を渡す予定になっておりますが、どの用に対応すべきかが、私自身がJavaの初心者のため、皆様のお知恵をおかりしたく質問しております。 個人的な考えですが、以下の様な処理方式を考えています。 (1)アクセス解析用のURL呼び出しメゾットを事前に共通処理で用意する。    ※引数はRequestとResponseを渡す予定で考えてます。 (2)各ページのActionフォーム(.do)の処理の先頭で、ディスパッチ(include)    で、(1)のメゾットを呼び出す 上記方法で、対応方法として最善でしょうか、他に良い方法等がございましたらお手数ですが、ご教授ください。 ※画面数が300画面あるため、(2)のコーディングを300も対応するのは、大変であり、対応範囲を極力減らしたいとも考えております。

みんなの回答

  • co_maam
  • ベストアンサー率65% (13/20)
回答No.2

アクセス解析の仕様が読み取れませんでしたので、 とりあえず、Actionの先頭に共通処理を追加する方法を提案します。 Strutsにはフィルタという機能があり、 特定のurlに対してのリクエストに対して共通の処理をすることができます。 (1) http://www.javaroad.jp/servletjsp/sj_servlet10.htm (2) http://www.javaroad.jp/opensource/js_struts10.htm 上記URL(2)を参考に、(1)の処理(アクセス解析用のURLを呼び出す処理?)を記述したフィルタクラスを作成し、 web.xmlにそのフィルタを登録することで実現できるのではないでしょうか。 ※(2)で".do"の処理とおっしゃっていることから、 web.xmlに"*.do"のURLパターンのActionServletを登録されていると思います。 上記URL(2)では、<filter-mapping>タグ内に<url-pattern>を使用していますが、 登録したサーブレットの<servlet-name>を使用することもできます。 回答内容がずれていたらごめんなさい。

  • root139
  • ベストアンサー率60% (488/809)
回答No.1

全リクエストに共通の処理を行いたいのであれば、まず思いつくのがフィルターの使用ですね。 フィルターはJavaEE標準の機能でTomcatでも使えます。 http://www.techscore.com/tech/Java/JavaEE/Servlet/6/ もちろん、処理の内容によっては、フィルターの使用が適切ではない場合もありますので、ひとつの選択肢として考えて下さい。 サーブレット本体(ひいてはそこから呼び出される各Action)はフィルターチェーンの一番奥で呼び出される事になります。 http://otndnld.oracle.co.jp/document/products/as10g/1013/doc_cd/web.1013/B28596-01/filters.htm#647431 なお、AOPを使っても横断的な処理は出来ますが、ご質問の内容を見る限りAOPコンテナなどは使われていないようですね。 それから、アクセス解析用URLの呼出しは別スレッドで行うようにしないとレスポンスが悪くなる可能性が高いと思いますよ。

関連するQ&A

専門家に質問してみよう