Web アプリケーションで URL に jsessionid を表示させない方法

Web アプリケーション(特に Struts 等のフレームワークを使用した場合)で、初回アクセス時に URL に ";jsessionid=〜" という文字列が追加されるのを防ぐ方法。

実はこれ、Servlet の仕様らしくて、特に Struts では初回アクセス時にはセッション ID を URL に埋め込むのがデフォルトになっているとのこと。これはアクセスしたクライアントが Cookie に対応していない場合のことを考慮しているからとのことである。

しかし携帯端末等を除き、ほとんどの Web ブラウザが Cookie に対応している状況で、URL にセッション ID が埋め込まれるのは気分が良くない(というか、実際嫌う人もいるらしい)。

と言ったわけで Google 先生にお伺いを立ててみると、こんな方法があるらしい。

クッキーがサポートされているブラウザで、最初のアクセスで URL に ;jsessionid を表示させたくない場合、最初に index.jsp にアクセスしてもらうようにし、index.jsp から本物の最初のページにリダイレクトします。

最初のアクセスで;jsessionidを表示させない方法 - yvsu pron. yas

つまりこういうことである。私は、menu.html というページを用意して、そこから各 JSP ファイルにハイパーリンクを張っているのだが、いきなり menu.html にアクセスするのではなく、以下のようなダミーの index.jsp を用意しておくのである。

<!doctype html>
<html>
<head>
  <title>Index Page</title>
</head>
<body>
  <% response.sendRedirect("menu.html"); %>
</body>
</html>

こうしておいて、Cookie 対応クライアントで index.jsp にアクセスすると、この時点で Cookie が生成されるので初回アクセスでも URL にセッション ID が埋め込まれることはなくなる。うーむ、上手い方法だ。