jspでファイルを読み込む処理についてのアドバイスをお願いします

このQ&Aのポイント
  • jspでajaxを使ってファイルを読み込む処理がうまくいきません。
  • 直接jspのページを見る場合、アドレスはhttp://localhost:8080/xxx/sample.jspとなりますが、サーブレットから値を受け取る場合はアドレスがhttp://localhost:8080/xxx/servlet/クラスファイル名?変数名=値となり、この場合ファイルを読み込む処理がうまくいきません。
  • readfile.txtのパスの書き方を試してみましたが、うまくいきません。アドバイスをお願いします。
回答を見る
  • ベストアンサー

jspでファイルを読み込む

jspでajaxを使ってファイルを読み込む処理がうまくいきません。 直接jspのページを見る場合、jspのアドレスが http://localhost:8080/xxx/sample.jsp となり処理もうまくいくのですが、javaのクラスファイル→sample.jspのようにサーブレットから値を受け取る場合にアドレスが http://localhost:8080/xxx/servlet/クラスファイル名?変数名=値 となり、この場合ファイルを読み込む処理がうまくいきません。 【ソースの一部】 function loadText(filename){ new Ajax.Updater( { success: "disp"}, filename, { method: 'get', onFailure: displayError} ); } <input type="button" value="ファイル読み込み" onClick="loadText('readfile.txt')"> <div id="disp"></div> readfile.txtのパスの書き方が悪いのかと思いいろいろ試しましたができませんでした。 アドバイスお願いします。

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

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

  • ベストアンサー
  • PED02744
  • ベストアンサー率40% (157/390)
回答No.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の下ではありませんよね?

himarimo
質問者

お礼

返信ありがとうございます。 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のアドレスをじかに打ち込んだ場合でカレントが違ってくるのでしょうか・・・。

himarimo
質問者

補足

解決しました! 今までは <script type="text/javascript"src="./js/prototype.js"></script> としていたのを <script type="text/javascript"src="../js/prototype.js"></script> にして、 テキストファイルのパスも"../readfile.txt"としたら無事動作しました。 ../ということはカレントはjspファイルより一つ深い階層ということになりますよね。 ということはWEB-INFがカレントということに・・・。 よく分かりませんが解決しました! ありがとうございました!

その他の回答 (1)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

これ、prototype.jsの話ですよね? なぜ、これがjspでファイルを読み込むというタイトルになるのか不思議ですが(笑) Ajaxはクライアント側から、JSP/Servletはサーバ側から  動作するものなので、直接的には関係ありません。 むしろ、JavaScriptの方で聞いていただいたほうが的確な回答が得られそうな気がします。 >readfile.txtのパスの書き方が悪いのかと思いいろいろ試しました 試した内容も書いていただくと良かったのですが、 単純に絶対パスで書かれていないので、相対パスで読もうとしているためではないのでしょうか? http://~ とフルパスでURL指定をすればよろしいのでは? http://www.imgsrc.co.jp/~kuriyama/prototype/prototype.js.html#UsingAjaxUpdater

himarimo
質問者

お礼

返信ありがとうございます。 prototype.jsのことです。 絶対パスも試しましたが無理でした。 http://localhost:8080/xxx/servlet/readfile.txt 絶対パスってこういうことですよね・・・。 readfile.txtはsample.jspと同じ階層に置いてます。

関連するQ&A

  • JSPのファイル検索

    JSPでtxtファイルを読み込んで使っているのですが、txtファイルが無かった時に、違う処理をさせたいのです。 if("~.txt" == null){    txtファイルがない時の処理 }else{    txtファイルがある時の処理 } という感じを考えていたのですが、このようにすると初めのif文の時点で"~.txt"が無いため、ファイルが見つからないエラーが起きてしまいます。 何かいい方法は無いでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • servletからjspへオブジェクトの配列情報を送る方法

    いつもお世話になっております。echo2002です。 さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか? ”servletで作成したオブジェクトの配列をjspにforwardして表示させる” こんなような処理を考えています。 構成:FileListServletクラス, FileInfomationクラス, disp.jsp FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、 それぞれgetなどのアクセサメソッドを持つとします。 FileListServletクラスでの処理 FileInfomationクラスの配列を作成し、各情報をsetする。 HttpServletRequestにsetAttributeでFileInfomation情報を付加し、 disp.jspへforwardする。 ※以下の方法を考えています。 request.setAttribute("fileinfo1", fileinfo[0]); request.setAttribute("fileinfo2", fileinfo[1]); request.setAttribute("fileinfo3", fileinfo[2]); ・・・ (配列でsetAttributeできるのかわからなかったので、  とにかくファイルの数分setAttributeしてみました) getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res) わからないこと: disp.jspでどのようにFileInfomationの情報を取得し、 内容を参照できるのかがよくわからないのです。 jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、 返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね? 突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。 オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、 それもご教授いただけますでしょうか。 よろしくお願いいたします。jsp難しいです・・・。

    • ベストアンサー
    • Java
  • struts2 jspファイル直接参照禁止にしたい

    処理に応じてtest.jspとlogin.jspを表示するアクションクラスを作成しました。 私の意図としては以下のURLを参照してもらいたいのですが http://localhost:8080/test/Test.action 以下のURLを直接参照することも可能です。 http://localhost:8080/test/test.jsp test.jspはログイン後に参照することを想定しているので、上記のようにJSPファイルを 直接参照されるのはセキュリティ上問題があります。 どのように対処すべきでしょうか???

  • JSPファイルがコンパイルできない!

    雑誌に付いていたtomcat3.2.3用のServlet/JSPを tomcat4.1.10で動かそうとしたら、JSPファイルが コンパイルできないというエラーが出ました。 エラーの内容は、 ------------------------ org.apache.jasper.JasperException: JSPのクラスをコンパイルできません JSPファイル: /*****.jsp の中の行: 1でエラーが発生しました 生成されたサーブレットのエラーです: [javac] Compiling 1 source file C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\*****\*****_jsp.java:43: シンボルを解決できません。 シンボル: クラス ○○ 場所 : org.apache.jsp.*****_jsp の クラス ***** ***** = (*****)request.getAttribute("*****"); ^ -------------------------- といった感じです。 tomcat3.2.3ではちゃんと動いたのですが、 4.1.10では他に何かしなければいけないのでしょうか。 よろしくお願いします。

  • テキストファイルの読み込み

    http://www.ajaxtower.jp/ini/html/index1.htmlにあるサンプルで xmlHttp.open("GET", "http://www.ajaxtower.jp/sample/readfile.txt", true); の、ファイルの場所を変えたいのですが、とりあえず、同じフォルダ内のテキストファイルtest.txtにアクセスしようと、"./test.txt"に変えて、クリックしても何も表示されませんでした。 apacheを起動してhtdocsにtest.txtを入れて"files://localhost/test.txt"に入れてもダメでした。 xmlHttp.openが読めるtextファイルは、どういう状態である必要があるのでしょうか?

  • jspでURL以下(?以下)を取得する方法は?

    現在のURL以下の値を取得する方法を教えてください。 下記例にてsample.jsp内に?以降の値を取得するコードを書きたいと思っています。 例: http://localhost:8080/sample.jsp?c=1234 よろしくお願いします。

  • JSPファイルは参照できましたが、サーブレット不可

    JSPファイルは参照できましたが、サーブレットが上手く行きません Eclipse(Ver3)+Tomcat6を使用し、「サーブレット&JSP 逆引き大全」のコーディングを行っております。 JSPファイルは参照できましたが、サーブレットが上手く行きません 表示しようとすると下記エラーが出ます。 The requested resource (/myapp/Sample014/) is not available. ◎web.xmlの設定 [省略]・・・・・・・・・・・・ <servlet> <servlet-name>Sample014</servlet-name> <servlet-class>com.gokui.Sample014</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sample014</servlet-name> <url-pattern>/Sample014</url-pattern> </servlet-mapping> [省略]・・・・・・・・・・・・ ◎ロケーション D:\Users\ueda\workspace\myapp\WEB-INF\web.xml ◎状態 ・http://localhost:8080/myapp/Sample015.jsp は表示される。 ・http://localhost:8080/myapp/Sample014/ は表示されず。 下記URLは参照したのですが、未解決です。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1158881041 http://www.javaroad.jp/bbs/answer.jsp?q_id=20100904015203906 アドバイス頂けると有り難いです。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • cakePHPのViewで、アンカータグでのJavaScriptの関数

    cakePHPのViewで、アンカータグでのJavaScriptの関数を実行する記述方法について 質問です。 HTMLでは <a href="javascript:getData('sample.txt')">sample.txt取得</a> と書くのと同じ処理をビューでさせる場合、どのように書けばよいのでしょうか? getData関数では、実引数のファイル内容を取得して <div id="response"></div>に出力する処理を行っています。 また、この出力にはAjaxを利用しています。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • csvファイルのダウンロード

    phpでサーバーにあるCSVファイルをダウンロードさせる処理で、ファイルをダウンロードするとHTML部分のソースがファイルに書きこまれてしまっています。調べてみたのですが、解決出来ませんでした。お願いします まずサーバーにあるCSVファイルにsqLの結果を書き込み、その後 header ("Content-Disposition: attachment; filename=ファイル名"); header ("Content-type: application/x-csv"); readfile (ファイル名); という処理でダウンロードさせようとしています。 サーバーのCSVはデータの書き込みが成功しているのですが、 そのファイルをローカルにダウンロードして中身を確認すると、 XXX,XXX,XXX XXX,XXX,XXX <html> <head> ・・・ のような内容のファイルになっていました。

    • 締切済み
    • PHP
  • jspでbeanを使いたいのですが...

    お世話になります。 JSPコード内のjavaプログラムをBeanとして読み込むようにし、インスタンスを作ってエラーにならないか試したところ、クラスが認識されないエラーが起きてしまいました。 他の記述やテキスト、サイト様を参考に手直しをしてみたもののうまく行かず、何だかわからなくなってしまいました... ご教授お願いいたします。 OS:WindowsVista サーブレット:Tomcat 参考テキスト:java+MySQL+Tomcatで始めるWebアプリケーション ファイルの階層 Desktop─test─jamyto┬aura─aurabottle.jsp            └WEB-INF─classes─auras┬IdMake.java                         └IdMake.class aurabottle.jsp側 <%@ page contentType="text/html; charset=Windows-31J"%> <%@ page import="java.sql.*"%> <%@ page import="java.util.*"%> <%@ page import="auras.IdMake"%> <%auras.IdMake idmake = new auras.IdMake();%>    以下JSPコード IdMake.java側 package auras; import java.sql.*; public class IdMake { StringBuffer sb = new StringBuffer(); public int barthDay (String strYear, String strMonth, String strDay){ 以下Javaコード エラー文面 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSP FileName:null Java FileName:/C:/Program Files/Apache Software Foundation/Tomcat 5.5/work/Catalina/localhost/aura//org/apache/jsp\aurabottle_jsp.java An error occurred at line: 6 in the generated java file Only a type can be imported. auras.IdMake resolves to a package JSP FileName:/aurabottle.jsp Java FileName:/C:/Program Files/Apache Software Foundation/Tomcat 5.5/work/Catalina/localhost/aura//org/apache/jsp\aurabottle_jsp.java JSPファイル: /aurabottle.jsp の中の7行目でエラーが発生しました auras.IdMake cannot be resolved to a type

    • ベストアンサー
    • Java

専門家に質問してみよう