- ベストアンサー
jspでファイルを読み込む処理についてのアドバイスをお願いします
- jspでajaxを使ってファイルを読み込む処理がうまくいきません。
- 直接jspのページを見る場合、アドレスはhttp://localhost:8080/xxx/sample.jspとなりますが、サーブレットから値を受け取る場合はアドレスがhttp://localhost:8080/xxx/servlet/クラスファイル名?変数名=値となり、この場合ファイルを読み込む処理がうまくいきません。
- readfile.txtのパスの書き方を試してみましたが、うまくいきません。アドバイスをお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>readfile.txtはsample.jspと同じ階層に置いてます。 同じ階層においてあるのなら、 > http://localhost:8080/xxx/servlet/readfile.txt こうではなくて、 http://localhost:8080/xxx/readfile.txt こうですよね? http://localhost:8080/xxx/sample.jsp でjspを起動していて同じ階層なら、servletの下ではありませんよね?
その他の回答 (1)
- PED02744
- ベストアンサー率40% (157/390)
これ、prototype.jsの話ですよね? なぜ、これがjspでファイルを読み込むというタイトルになるのか不思議ですが(笑) Ajaxはクライアント側から、JSP/Servletはサーバ側から 動作するものなので、直接的には関係ありません。 むしろ、JavaScriptの方で聞いていただいたほうが的確な回答が得られそうな気がします。 >readfile.txtのパスの書き方が悪いのかと思いいろいろ試しました 試した内容も書いていただくと良かったのですが、 単純に絶対パスで書かれていないので、相対パスで読もうとしているためではないのでしょうか? http://~ とフルパスでURL指定をすればよろしいのでは? http://www.imgsrc.co.jp/~kuriyama/prototype/prototype.js.html#UsingAjaxUpdater
お礼
返信ありがとうございます。 prototype.jsのことです。 絶対パスも試しましたが無理でした。 http://localhost:8080/xxx/servlet/readfile.txt 絶対パスってこういうことですよね・・・。 readfile.txtはsample.jspと同じ階層に置いてます。
お礼
返信ありがとうございます。 http://localhost:8080/xxx/readfile.txtで試してもできませんでした。 現在、サーブレット→sample.jspとなっているのですが、sample.jspのソースのサーブレットから受け取る処理の部分を削って、JavaScriptとボタンとdivタグのみにして、sample.jspのアドレスを直に打ち込んで試してみると相対パスでも絶対パスでも問題なくreadfile.txtの内容が表示されます。 サーブレットからは req.setAttribute("reserve_id",reserve_id); req.setAttribute("DBbean1",sel_bean1); ServletContext sc = getServletContext(); sc.getRequestDispatcher("/sample.jsp").forward(req,res); こんな感じでJSPに渡しています。 サーブレットから制御を渡された場合と、JSPのアドレスをじかに打ち込んだ場合でカレントが違ってくるのでしょうか・・・。
補足
解決しました! 今までは <script type="text/javascript"src="./js/prototype.js"></script> としていたのを <script type="text/javascript"src="../js/prototype.js"></script> にして、 テキストファイルのパスも"../readfile.txt"としたら無事動作しました。 ../ということはカレントはjspファイルより一つ深い階層ということになりますよね。 ということはWEB-INFがカレントということに・・・。 よく分かりませんが解決しました! ありがとうございました!