Web アプリケーションで URL に jsessionid を表示させない方法
Web アプリケーション(特に Struts 等のフレームワークを使用した場合)で、初回アクセス時に URL に ";jsessionid=〜" という文字列が追加されるのを防ぐ方法。
実はこれ、Servlet の仕様らしくて、特に Struts では初回アクセス時にはセッション ID を URL に埋め込むのがデフォルトになっているとのこと。これはアクセスしたクライアントが Cookie に対応していない場合のことを考慮しているからとのことである。
しかし携帯端末等を除き、ほとんどの Web ブラウザが Cookie に対応している状況で、URL にセッション ID が埋め込まれるのは気分が良くない(というか、実際嫌う人もいるらしい)。
と言ったわけで Google 先生にお伺いを立ててみると、こんな方法があるらしい。
クッキーがサポートされているブラウザで、最初のアクセスで URL に ;jsessionid を表示させたくない場合、最初に index.jsp にアクセスしてもらうようにし、index.jsp から本物の最初のページにリダイレクトします。
つまりこういうことである。私は、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 が埋め込まれることはなくなる。うーむ、上手い方法だ。