xyz.com/abc.jsp?user=5 のような URL を持つ Web サイトを持っています。
このユーザーの ID が 5 の場合。xyz.com/deepakagra で自分のプロファイルにアクセスできるように、deepakagra のようなハンドルを作成したいと考えています。どうすれば達成できますか?
Tomcatでjsp、サーブレットを使用しています。
tuckeyによるurlrewriteを使用しました。ここで、上記を実現するルールを簡単に作成できます。
「deepakagra」をページへの GET パラメータとして解析し、データベース検索を行ってそのユーザー名の ID を見つけ、必要なコンテンツを取得する必要があります。
サーブレットがあるので、いつでもサーブレットを作成し、web.xml で servlet-mapping を「deepakagra」として定義できます。これにより、要求が abc.jsp に転送されます。
私の理解が正しければ、GETでパラメーターを使用したくないでしょう。localhost:8080/profile/deepakagra にアクセスすると、このサーブレットがパターンにマップされている場合は、このサーブレットが呼び出されます。
@WebServlet(name="profile", urlPatterns={"/profile/*"} )
public class ProfileServlet extends HttpServlet {
....
protected final String getProfileId(HttpServletRequest request ){
String base = request.getPathInfo();
String id = null ;
if( base.split("/").length >= 2 )
id = base.split("/")[1] ;
return id ;
}
次に、GET/POST メソッドで getProfileId を呼び出し、ID を取得します。DB からプルし、必要な処理を行い、JSP に転送します。
注: このコードはテストされていません。