- - PR -
jsessionidの自動付加について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-07-29 20:36
榎本と申します。
使用環境 OS Red Hat Linux 7.3 2.96-113 tomcat jakarta-tomcat-4.1.24-LE-jdk14 JDK j2sdk-1_4_1_04-linux-i586 @IT > Insider.NET > .NET TIPS > [ASP.NET]クッキーをサポートしないクライアントでセッション機能を利用するには? http://www.atmarkit.co.jp/fdotnet/dotnettips/189aspckless/aspckless.html の記事にあるようなことをtomcatを使用してできないでしょうか? Cookieを使用しない設定はserver.xmlに記述することでできることはわかっています。 <Context cookies="false"> | ||||||||
|
投稿日時: 2004-07-30 03:05
榎本さん、こんにちは。
私の場合、いちいち javax.servlet.http.HttpServletResponse#encodeURL(java.lang.String url) を使用しリライトています。 | ||||||||
|
投稿日時: 2004-07-30 04:08
削除[ メッセージ編集済み 編集者: kito 編集日時 2004-07-30 05:14 ] | ||||||||
|
投稿日時: 2004-07-30 05:17
JSP/ServletはHTML文書を単なるテキストとして扱うので、こういう場面では不利ですね。 (JSF等では解決策があるかも?) Filterを使って、文書中のリンクすべてにHttpResponse#encodeURL(String)を適用する ことで、ほぼお望みの動作になると思います。 実際には、すべてのURLにSessionIDを付加するのはセキュリティ上まずいので、 encodeURL()の前に、URLのチェック(同一サーバーであるかどうか、同一webappであるかどうか等) をした方が良いです。 コードは下のような感じです。
■追記 Tomcat5.x(Servlet2.4仕様準拠)なら、web.xmlに <filter-mapping> <filter-name>cookielessSessionFilter</filter-name> <url-pattern>/hello.jsp</url-pattern> <dispatcher>FORWARD</dispatcher> </filter-mapping> を追加することで、Servletからforward()したJSPもFilterで処理できました。 Tomcat4では、ServletからJSPに直接forwardではなく、 一旦Servletに文字列として取り込まないとFilterが効かないようです。 | ||||||||
|
投稿日時: 2004-07-30 10:29
榎本です。
kitoさん> コードまで記述していただきありがとうございます。 フィルタにすることは私も考えておりました。 今回のケースは携帯電話専用になるので、jsessionidの使用は ほぼ避けられないのです。 Kissingerさん> 今まではその方法がベターかなと思って使っておりました。 ちなみに、jstlのcタグで、urlを出力すると、cookieが使用できるか 判定した上でjsessionidを自動的に付加してくれます。 が、taglibとボーダフォンの絵文字との相性がよくないので使用しておりません。 (無理にcタグ使うとかえってJavaScript慣れしたデザイナーに渡しにくくなるのでケースバイケースですね(笑)) |
1