JSP内での不思議な挙動

このQ&Aのポイント
  • 現在、webアプリを作成(Springフレームワークを使用)していてJSPにて不思議な挙動を起こしたので質問させてください。
  • JSP内で<img src="/Test/">というタグが生成された場合、画面遷移が正常に行われない現象が発生しました。
  • 詳細を調査した結果、imgタグの画像のURLがTest(Webアプリ名)だけだと特別な動作をしてしまう可能性があることが判明しました。
回答を見る
  • ベストアンサー

JSP内での不思議な挙動

現在、webアプリを作成(Springフレームワークを使用)していてJSPにて不思議な 挙動を起こしたので質問させてください。 要点としては<img src="/Test/">(Testはrequest.getContextPathにて取得) というタグがJSP内にあった場合、何か特別な挙動を起こすのかということです。 以下に詳細を記述します。 JSP内に以下のようなimgタグが生成されることを期待してJSPを作成しました。 <img src="/Test/img/xxx.jpg"> (img/xxx.jpgの部分は変数で記述。Testの部分もrequest.getContextPathにて取得) しかし、バグで変数から値が受け取れず <img src="/Test/">という形式のimgタグが生成されてしまいました。 問題はここからでこの状態で画面上にあるボタン(次画面遷移)を押下してPOSTされた場合、 ログイン画面に遷移してしまいました。(インターセプター内でログイン情報が取得できなければ ログイン画面に遷移するように記述されているため) ところが直書きにて<img src="/Test/aaaa">などとTestの後ろに適当な値のタグを 作成し、ボタン(次画面遷移)を押下すると正常に次画面に遷移しました。 imgタグの画像のURLがTest(Webアプリ名)だけだと何か特別な動作をしてしまうものなので しょうか。

  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

よくわからんけど <img src="Test/"> っていうタグがいたのであればブラウザはそこに接続要求するからね? 別にimgっていうわけではなく、何かリクエストを投げるものであれば。 <a href="/Test/">リンク</a>というリンクをクリックしたことと同じになるから。

unko347
質問者

お礼

ご回答ありがとうございます。 /Test/ にリクエストを投げていたのがまずかったようですね。 どうもありがとうございました。

その他の回答 (1)

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.2

あなたの作成しているシステムは ・/Test/のリクエストを投げる ・画面上にあるボタン(次画面遷移)を押下してPOST をすると ・ログイン画面に遷移する となる仕組みのシステムというだけのことでしょう。 >imgタグの画像のURLがTest(Webアプリ名)だけだと何か特別な動作をしてしまうものなのでしょうか。 imgタグがどうのこうのという問題ではありません。 「<img src="/Test/aaaa">などとTestの後ろに適当な値のタグを作成し」ている状態でいいですけど、その状態で対象画面を開き、別タブで「/Test/」へのリクエストを投げたあと、「画面上にあるボタン(次画面遷移)を押下してPOST」したら同じ事が起こるでしょう。 なぜ・何のためにそういう仕組みになっているのかは作った人に聞かなければ分からないと思いますが、作った人がそういう造りにしたからとしかいえませんね。

unko347
質問者

お礼

ご回答ありがとうございます。

関連するQ&A

  • Struts2のgetterの挙動、仕様について教えてください。

    現在、Strust2でプログラムを作成しているのですが 以下の構成で実行させると予想どうりの挙動をしないため ご存知の方がいらっしゃいましたらご教示ください。 以下の名前は仮の名前です。 ログインjspから、ログイン.actionを呼び 認証に成功したらtop.jspに遷移するようstruts.xmlに記述してあります。 top.jspは特に処理をしておらずframeを切っていて 画面上ではframe1.jspとframe2.jspを表示させております。 (frame1.jspがメニューでframe2.jspがメニューで選択された内容) この時、top.jspではgetterの値が取得できるのですが frame1、2.jspからは取得したいのですができませんでした。 いろいろと調べたのですが情報が見つからなかったため 設定等でframe1,2.jspからも取得することができるか また可能であればその方法もご教示いただけないでしょうか。 (別の方法や参考サイト等教えていただければ幸いです。)

    • ベストアンサー
    • Java
  • ServletとJSPで。。。

    省略してますが、下記の記述で JSPの----部分の記述方法がわかりません。 実際、実行できる環境だといいのですが、今は実行環境がないので調査できません。 まだなにもわからない状態なので、記述が正しいかも自信ありませんがよろしくお願いします。 =============Servlet==============================Schedulebean bean = new Schedulebean(); bean.setYear(request.getParameter("year")); bean.setMonth(request.getParameter("month")); request.setAttribute("bean", bean); request.getRequestDispatcher("/jsp/schedulefrm.jsp").forward(request,response); ============ JSP ================== <%@ page contentType = "text/html; charset=Shift_JIS"%> <jsp:useBean id="bean" scope="request" class="java.lang.String"/> <HTML> <FRAMESET FRAMESPACING="10" COLS="250,*"> <FRAME src="/jsp/calender.jsp?Year=<%= year % -------- ↑ >&Month=<%= month %>" --------- ↑    上記をid 取得する記述は? name = "left" scrolling = "no" NORESIZE /> <FRAME src="/jsp/schedule.jsp?Year=<%= year %>&Month=<%= month %>" name = "right" scrolling = "yes" /> </FRAMESET> </HTML>

    • ベストアンサー
    • Java
  • servletからjspへの遷移時に文字化け

    質問します。 用件:servletからjspに遷移する際に文字化けが発生します。 環境: Eclipse3.7 java6 ApacheTomcat7.0 フレームワークはなし 内容: フォワードでTest.jspに遷移します。 RequestDispatcher requestdispatcher = request.getRequestDispatcher("/Test.jsp"); requestdispatcher.forward(request, response); Test.jspに遷移すると、Test.jspの「<body>テスト</body>」がブラウザ表示時に文字化けします。 (英数字は化けません。) servletを使用せず、Test.jspに直接アクセスすると文字化けが起きません。 servletで、Test.jspで適当なhiddenを作成し、servletでgetParameterをSystem.out.printしても 文字化けなどはおきません。 また、RequestDispatcherでは文字化けが起こりますが、 response.sendRedirect("/Test.jsp"); だと文字化けがおきません。 現状、sendRedirectとsessionを使用して値の受け渡しを行っておりますが、 RequestDispatcherを使用したいので困っております。 また文字コードは javaファイルそのものはSJIS jspは<%@ page language="java" contentType="text/html; charset=SJIS" %> となっております。 わかりにくい文章で申し訳ありませんが、ご回答の程よろしくお願いします。

    • ベストアンサー
    • Java
  • [JSP]ページの挿入!?

    JSPでページを挿入する際・・・ <jsp:include page="Menu.jsp" flush="true"> としますが、 たとえばRequestからファイル名を取得するにはどうすればいいでしょう? ↓これじゃだめですよね?だめでした。 ~/Test.jsp?target=Menu.jsp で、 <jsp:include page="<%= request.getParameter("target") %>.jsp" flush="true"> うぅぅん。

    • ベストアンサー
    • Java
  • JSPとServletの連携

    JSPからServletを呼ぶ方法がわかりません。 例えばログインの一連の動きとしては、 一番初めにログイン画面があって、 それからユーザIDとパスワードが一致するか判断するためにservletを呼んでクラスで処理して、 一致したらメニュー画面、一致しなかったらもう一度ログイン画面に遷移するんですよね? 一番初めにJSPからservletを呼ぶにはどこでファイル名を指定したらいいのでしょうか?

    • ベストアンサー
    • Java
  • struts java ログインのセッション情報を確認するには?

    struts java ログインのセッション情報を確認するには? Login.jspからログインボタンを押下(この時にセッション情報を取得)して、画面遷移をしてB.jspに行きます。 この時にBAction.javaでセッション情報をB.jspが表示される前に取得したいのですがどうすればいいのでしょうか? B.jsp画面が表示される前に、セッション情報を取得してセッション情報があるかないかの判定を行いあればB.jspを表示してなければログイン画面を表示しようと考えています。 BAction.javaに記述したい処理です。 HttpSession session = request.getSession(false); if ( session.getAttribute("sessionInformation") != null ) { System.out.println("セッション有効") ; return mapping.findForward("success"); } else { //論理名"error"に該当するページへ移動(struts-config.xmlを参照) return mapping.findForward("errorSession"); } この処理をActionクラスにどのように記述すればいいのでしょうか? struts-config.xmlファイルの内容 <action <forward name="errorSession" path="/Login.jsp" /> <forward name="success" path="/B.jsp" /> </action> です。 URL直打ちをしてB.jspにアクセスしようとしたときに、セッション情報をもっていない為、上記のelseになり、ログイン画面に遷移しようと考えております。 かなりネットで調べましたが全く分かりませんでした。

    • ベストアンサー
    • Java
  • 異なるwarのJSPにフォワードすることは可能か?

    お世話になっております。 以下のデプロイ構成の場合に、smt.war内のJSPから、pc.war内のJSPにフォワードすることは可能でしょうか? 【デプロイ構成】 all.ear pc.war smt.war やりたいことのイメージとしては、フォワード元・先が以下のURLの時、「<jsp:forward page="/pc/test.jsp"></jsp:forward>」の記述で問題なくフォワードさせたいのですが、動作確認したところ「/smt/pc/test.jsp」に遷移しようとして404となってしまいます。 フォワード元:http://ドメイン/smt/test.jsp フォワード先:http://ドメイン/pc/test.jsp 【補足】 ・リダイレクトだと問題なく「/pc/test.jsp」に遷移できましたが、諸事情で可能であればフォワードを使用したい ・アプリケーションサーバは、WAS7(もしくは8)の予定(動作確認はtomcat7) 以上、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • モバイルブログへタグを記述する方法

    自前でアクセスを取得しようと考え、各ブログサービスに HTMLタグを記述したのですが、PC版では問題ないのですが、 モバイルで見るとタグが消えてしまいます。 記述したタグは以下になります。 <img src="hoge.php"> やりたい事はhoge.phpへリクエストを発行したいのですが、 うまくいきません。 (FC2では「画像」という文字列に置換されてしまいます) imgタグ以外で他に方法はありますでしょうか?

  • JSPにおけるPageディレクティブ記述

    こんにちは、Strutsを勉強しているものです。 ユーザが入力したID, パスワードをフォワード先のJSPで表示するといった簡単なアプリーションを作成していますが、JSP表示時に500エラーとなってしまいます。エラー理由としてpageタグが終了していないことがあげられています。しかし、通常JSPで記述するpageディレクティブには閉じるタグは記述不要と考えています。どのようにすればこのエラーを回避できるのでしょうか。 ▽JSPソース <%@ page contentType="text/html"; charset="Shift_JIS" %> <html> <head> <title>Login Result</title> </head> <body> <%= (String)request.getAttribute("message") %> </body> </html> ※バージョン情報 Tomcat 5.5 JDK 1.5 Struts 1.2.4

    • ベストアンサー
    • Java
  • サイトを作っているのですが

    サイトを2スタイルで作成中なのですが、画像が上手く表示してくれません。 タグは、 <img src="画像アドレス"> ですよね? それで、「xxx」というフォルダにある「0126.png」を表示させたいので、 <img src="xxx/0126.png> だと思うのですが、×になって表示されません。 アドレスは間違っていません。 どうしたらいいのか、教えてください。

専門家に質問してみよう