dポイントプレゼントキャンペーン実施中!

Webアプリケーション開発初心者です。
Struts 1.28 を使っているのですが、トップページにいくつかリンクがあるのですが、実行するとそれらの後ろに;jsessionid=...(省略)の文字列が自動的に追加されます。画面のリロードをすると消えるのですが、画像のソースのところも追加されるので画像が表示されません。jsessionidが自動的に追加されないようにしたいと思います。
JSPでセッションを有効にしても無効にしても解決されません。また、リンクのところは Struts の <html:link を使っています。
どなたか解決方法を教えていただけないでしょうか。よろしくお願いいたします。

ちなみに環境は
Apache 5.5
JDK 1.5
Struts 1.2.8
web.xml 2.4

A 回答 (2件)

> 変換後


> <a href="/;jsessionid=ECEB94195E55DCB9D7ECE9BD4559D871">
> <img src="/images/logo.gif;jsessionid=ECEB94195E55DCB9D7ECE9BD4559D871">
> </a>

時間があったので同じものを作って、クッキーをオフにし、強制的にjsessionidが付加される形にして試してみました。
全く同じように<a hrefにも<img srcにもjsessionidが付加されましたが、イメージは問題なく表示されましたし、リンクも問題なく移動できました。ローカル上からだけでなく、LAN内ですが他のマシンからアクセスしても問題はありませんでした。
 つまり、;jsessionidがついているためにファイルやページが認識できなくなってしまうわけではないようですね。となると、そちらの環境か設定の問題なのかもしれません。
 とりあえず、補足のコードそのものはこちらでは動くということだけご報告しておきます。他の原因となると、ちょっと今は思いつかないのですけど・・・。
    • good
    • 0
この回答へのお礼

わざわざテストしていただきありがとうございます。
こちらでも一度画面のリロードすると表示されることがわかりました。キャッシュとかの問題かなと思っています。

お礼日時:2006/01/30 21:55

jsessionidは、セッションをトラッキングするためのキーとして扱われるものです。

サーブレットでは通常、クッキーとして保存されますが、それできない場合にはURLに付加した形でURLリライトされます。
 Strutsは、常にセッションを確立した形で機能するよう設計されています。このため、クッキーのように状況によって使えないこともある方式では問題がある場合には、どのような状況でも常にセッショントラッキングが可能なURLリライティングを使ってjsessionidを受け渡しているのだろうと思います。
 jsessionidを受け渡さないということはセッションがトラッキングできない場合が生ずるということであり、これはStrutsの設計そのものが破綻しますので、できないようになっているのではないかと思うのですが。
 これはStrutsに限らず、例えばセッションを常に使うJSFなどでも同様の現象が見られますから、セッション必須のフレームワークでは避けられないものなのではないでしょうか。

ちなみに、「画像のソースのところも追加されるので画像が表示されません。」この意味が分からないのですが。Strutsを使っていて、jsessionidが原因でイメージが表示できなくなったことがないので、どういう状況なのかよくわかりません。そのあたり、どのようにして記述をしていてどういう表示になって動かないのかをもう少し具体的に書いていただければと思います。

この回答への補足

ご回答ありがとうございます。
イメージが表示されないのはたとえば以下のような場合に発生します。

変換前
<html:link forward="top">
<html:img src="/images/logo.gif"/>
</html:link>
変換後
<a href="/;jsessionid=ECEB94195E55DCB9D7ECE9BD4559D871">
<img src="/images/logo.gif;jsessionid=ECEB94195E55DCB9D7ECE9BD4559D871">
</a>

imgタグのsrcの部分にもjsessionidが付加されます。そのため、画像が見つからずに表示されません。

以上、よろしくお願いいたします。

補足日時:2006/01/26 17:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!