2009-05-07 9 views
3

2つの方法で動作するJSPページまたはサーブレットを作成したいとします。URLパラメータに応じてコンテンツをオプションで含むJavaサーブレットまたはJSPを作成する最良の方法

ユーザーが自分のプロフィールページ訪問:

のhttp // something.com /プロフィール/

をそれとも彼らは彼らの友人のページをご覧ください:

http://something.com/profile/FriendsName

彼らはまた、彼らを訪問することができ自分のページに次のような明示的なURLを入力します。 http://something.com/profile/YourName

rvlet-mappingを次のように設定して、/ profileへのリクエストをそのリクエストを処理するJSPにマップします。

<servlet> 
      <servlet-name>Profile</servlet-name> 
      <jsp-file>/profile.jsp</jsp-file> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>Profile</servlet-name> 
    <url-pattern>/profile</url-pattern> 
    </servlet-mapping> 

それから私は、私は、セットアップ/プロファイル/後に読み取ることがてHTTPServletRequestのURLを解析するフィルタを可能性を考えていました。

<filter> 
    <filter-name>profile-filter</filter-name> 
    <filter-class>ProfileFilter</filter-class> 
    </filter> 

    <filter-mapping> 
    <filter-name>profile-filter</filter-name> 
    <url-pattern>/profile*</url-pattern> 
    </filter-mapping> 

今私は、ユーザー名が指定されているかどうかを確認し、自分の名前が設定されているかどうかを確認するためにJSPページにそれらを引き出しについては行くだろうかHttpServletRequestの中に属性を設定することができ、フィルタ、?私はこのようなjspBeanを使用してJSPページで使用できるよう

どのようにページを作成するに行くかはServletFilterでBeanをスコープ:

<jsp:useBean id="profileInfo" scope="page" class="ProfileInfo" /> 

答えて

1

フィルタは人工的に論理を分離する役割しか果たしていないと思います。 web.xmlに記述されているurl-patternと一致しないURLの部分の値を簡単に判別できます。 HttpServletRequestクラスには、この値を返すメソッドがあります。getPathInfo()と呼ばれています。ここに例があります:

<% 
    String path = request.getPathInfo(); 
    if (path == null || "".equalsIgnoreCase(path)) { 
     // The path was empty, display the current user's profile 
    } else { 
     // Display the named profile 
    } 
%> 

これは、リクエストBeanであなたを助けるものではありませんが、デザインに役立つと思います。

+1

同じ処理を行う必要のある複数のサーブレットまたはJSP(プロファイル、ブログ、写真など)がある場合は、フィルタを適用することも適切です(Requests getPath() – Dougnukem

0

私は質問以下、完全ではないんだけど、あなたがしたい場合リクエストパラメータや属性にアクセスするためのJSP、ちょうど行います

<% 
    String parameter = request.getParameter("parameter"); 
    String attribute = request.getAttribute("attribute"); 

%> 

あなたがそれらと何もする必要がある場合にも...リクエストURLへのアクセスなどを得ることができます。

個人的には、サーブレットを使用してリクエストを処理し、(jspが使用できるセッション情報を設定した後に)選択したJSPに転送することをお勧めします。

このような種類のサーバーレベルのフィルタとリクエスト属性を使用することは、少し残酷かもしれませんが、プロジェクトの本当の必要条件を知っているだけです。