• ベストアンサー

サーブレットでのファイル書き込みについて

javaのサーブレットで例外ログを書き込む方法が知りたいです。 outputstreamwriterを使っても書き込むことが出来なかったので やり方を教えてください。 javaのバージョンは1.5です。

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

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

>回答No.2 amanojaku1 あれはサーブレットではなくJSPですね。 サーブレットのファイル入出力 https://teratail.com/questions/36942 要約すると 注.「java.io.*」を「import」して下さい。 try{ String path = getServletContext().getRealPath("ファイル名"); BufferedWriter bw = new BufferedWriter(new FileWriter(path)); // ストリーム・オープン }catch(IOException e){ // エラー } try{ bw.write("テキスト"); // テキスト出力 bw.newLine(); // 改行 }catch(IOException e){ // エラー } try{ bw.close(); // ストリーム・クローズ }catch(IOException e){ // エラー }

green_tea123
質問者

お礼

ありがとうございます。

その他の回答 (2)

回答No.2

サーブレットは知りませんが サーブレットでテキストファイルに書き込みを行う http://www.atmarkit.co.jp/ait/articles/0312/09/news003.html ↑これからすると、普通に「BufferedWriter」が使えるような感じです。 要約すると BufferedWriter objSBW=new BufferedWriter( new FileWriter(application.getRealPath("ファイル名"))); // ストリーム・オープン objSBW.write("テキスト"+System.getProperty("line.separator")); // テキスト出力+改行 objSBW.close(); // ストリーム・クローズ 注.「java.io.*」が「import」されてます。 通常のJavaでは「try catch」が必要ですが、その例では「try catch」されてませんが?、必要ないと言うことでしょうか。

回答No.1

ログ出力が目的なのであれば、セキュリティ上の懸念がありますので直接出力ではなく別ツールを使用するべきです。 例えば、Log4Jなどが有名です。

参考URL:
https://logging.apache.org/log4j/2.x/

関連するQ&A

  • サーブレットからJSPの呼び出しについて

    こんにちは。 JSPの呼び出しについて質問です。 サーブレットで RequestDispatcher dispatcher = req.getRequestDispatcher("/jsp/java.jsp"); dispatcher.include(req, res); としてJSPファイルを呼び出そうとしているのですが、うまくいきません。コンパイルは通ります。 dispatcher.include(req, res); の部分で例外処理にいってるのでそこがおかしいようですが。urlの指定もjspファイルの内容も何度も確認したのですがミスはないみたいで原因がわかりません。 またTomcatのログファイルlocalhost_logを見ると 2002-07-11 16:05:35 ApplicationDispatcher[/DB] サーブレット jsp のServlet.service()は例外を投げました という文が出力されています。

    • ベストアンサー
    • Java
  • サーブレットの使い方

    最近プログラムを始めましたh_a0619と申します。 今、javaで作成したプログラムをブラウザ上で動かすようしたいと思っています。 サーブレットを使うとうまくいくと聞いたのですが、 変換の仕方がよく分かりません。 今までjavaで書いたプログラムをサーブレット用にすべて書き直さなければならないんでしょうか?

    • ベストアンサー
    • Java
  • java JSP/サーブレット

    Javaの参考書をやったのですが(参考書:やさ○いJava)、これはアプレットと聞きました。アプレットは現場では殆ど使われないと聞き、JSP/サーブレットは現場で使うと聞いたのでJSP/サーブレットをやっています。 でも、構文が少し違います。 *********************************** 例えば、Javaなら表示するときには System.out.printlnでしたが、 JSP/サーブレットでは違う構文です。 また、Javaならファイルが一つしかありませんでした。(コンパイルするとclassファイルができる) JSP/サーブレットは、スーパークラスやサブクラスは 別のファイルになっています。 ************************************ JSP/サーブレットはプログラム言語なんですか? JSP/サーブレットの中にもJavaの構文があるんですが、先にも述べたようにJavaと違う構文も含まれています。 ちょっと戸惑っています。 しかも、JSP/サーブレットに関する参考書が本屋さんで殆ど見られないのです。 お勧めの参考書などあればいいのですが、 数が少ないためか見当たりません。 それで、とりあえづ「10日で覚○るJSP/サーブレット」という本を買ったのですが、9割がたJSPです。 1割がサーブレットです。 こうなってくると意味がわからなくなってきます。 現場ではサーブレットと聞いていたのに、そのサーブレットが1割しか載っていない。え!?どういうこと!?更にはJSPとサーブレットの書き方も少し違うような気が・・・・。 もう何が何かさっぱりわからなくなってきました。 結局何を勉強すれば良いのか? そもそも、JSPとは?サーブレットとは? ネットで調べはしたもののピンときません。 現場でJavaをやりたいのですが、独学方法というか、 アドバイスを宜しくお願いします。

    • ベストアンサー
    • Java
  • JSP/サーブレットについて

    Javaは本のタイトル「やさしいJava」という本で一通り勉強しました。 似たような本は沢山ありますよね。例えば「独習Java」や「Javaの絵本」や「新Java入門」や、本当に沢山ありますよね。    でも、これって殆ど仕事では使わないですよね?? 構文などは必要かもしれませんが、仕事では「JSP/サーブレット」の方が必要かなと思いました。 今、その「JSP/サーブレット」の参考書を使って勉強中なんですが、「やさしいJava」や「独習Java」や「Javaの絵本」とは全然違います。 しかも、全然わかりません・・・・・・。 書店には、「やさしいJava」や「独習Java」や「Javaの絵本」系の本は沢山あるのに、「JSP/サーブレット」系の本は前者に比べると割合が少なく感じます。実際に仕事では「JSP/サーブレット」を使うのに何で少ないのか疑問ですし、「JSP/サーブレット」がわからなく、勉強したいのですがどの本が良いのかわかりません。 ページをめくってみて、どの本が良いのか見ているのですが、 それでも、わかりません。 皆さんどのように勉強されましたか? また、良い参考書などがあれば教えて頂きたいのですが、 宜しくお願い致します。

    • ベストアンサー
    • Java
  • サーブレットインスタンスを割り当てられません・・・とは

    データベースを作成中にサーブレットでのエラーがどうしてもわかりません・・・。 設定のファイル(web.xmlやserver.xml)のファイルがおかしいのか、サーブレットの配置がおかしいのか、プログラム自体がおかしいのか・・・どうなのでしょうか? エラーは以下のように出るんですが・・・ HTTPステータス 500 - -------------------------------------------------------------------------------- type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: パス /rits/servlet/rits.SrvMain にサーブレットインスタンスを割り当てられません org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:388) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 原因 java.lang.OutOfMemoryError: Java heap space 注意 原因のすべてのスタックトレースは、Apache Tomcat/5.5.20のログに記録されています -------------------------------------------------------------------------------- Apache Tomcat/5.5.20 sampleのサーブレットなどはちゃんと表示されるのですがどうしてでしょうか・・?? 原因などがわかれば教えてください。 ちなみにweb.xmlはinvokerを有効にして使っています。 よろしくおねがいします。

  • サーブレット

    HTMLからJavaサーブレットを起動させたいのですが、 うまく行きません submitでActionを起こしてます。 <form name="form1" method="post" action="AAA"> javaサーブレットは同じディレクトリに存在します。 どのようにすればよろしいでしょうか? よろしくお願いします。

  • jsp/サーブレット

    jsp サーブレットを勉強しています。 jspに入力された値を サーブレットに投げます。 サーブレットからjavaクラスに値を投げて javaクラスで値が正しいかどうかを判断します。 その結果をサーブレットに投げて、 サーブレットからjspに投げて jspで結果を表示する。というのは理解できました。 しかし私が行いたいのは、 クライアントがjspにアクセスしたときに、 javaクラスにある値をjspに表示させたいというものです。 この場合はサーブレットに何も投げるものがないのですが、 jsp→サーブレット→javaクラス→サーブレット→jsp このようにサーブレットを使って表示させるには、 どのようなプログラムを書いたらいいのでしょうか。 わかりにくい説明で大変申し訳ないですが、 具体的なプログラムを教えていただけるとありがたいです。 また、参考になりそうなURLがありましたら教えてください。 よろしくお願いします。

  • ファイル入出力をサーブレットで・・・

    JAVAのオーソドックスなファイル入出力のサンプルを改造して、サーブレットにしようと思ったのですがうまくいきませんでした。 まず手始めに、コンソールアプリケーションとして、”abc"と言う内容のabc.txtを吐き出すサンプルを試しました、これはうまくいきました。 その後で、それをそのままサーブレットに組み込み、リクエスト時にファイルの出力ができるか試してみたのですが、どうもどこにも出力されていない用です。 サーブレットへのアクセスが失敗しているのかとおもい、サーブレットのプログラムの最後にhtmlに出力させるコードを書いてみたところ出力されましたので、プログラムそのものにはアクセスしているようです。 やりたいことというのは、htmlのtextareaからpostでおくって、サーバーにtxtファイルとして保存する・・・ということです。

    • ベストアンサー
    • Java
  • eclipseで、サーブレットを作成したいのですが・・・

    プログラム経験の全くない、初心者なので分からない事だらけなため、どなたかおわかりになる方がおられたら、対処法をお願いします・・。 以下の手順で、サーブレットを作成しようとすると、エラーが表示され、ファイルが作成されませんでした。 [手順] (1)eclipse3.3で、「パッケージエクスプローラー」では何も選択しない状態で、メニューから「ファイル」→「新規」→「その他」を起動して、ツリーの「web」を開き、「サーブレット」を選択。 (2)サーブレット作成画面で、「パッケージ名」は、jp.co.gihyo.step3で、「名前」は、SampleServletと指定。 (3)ダイアログ画面はそのまま (4)次の画面もそのまま。 これで、「終了」を押すと、以下のエラーが表示されました。 java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:3(以下略) そこで、java.lang.UnsupportedClassVersionError: Bad version number in .class file を調べると、 「クラスが要求しているバージョンがJavaVMがサポートしているバージョンの範囲外なので、実行できない。」 だそうですが、現在のJavaVMのバージョンは、コマンドプロンプトで、「java -version」と書くと、「java version "1.6.0_06"」とありました。このバージョンでは、サーブレットが作成されないのでしょうか?それとも違う意味なのでしょうか?? あと、現在のeclipseの設定は、jdk6.0,jre1.6.0_03です。 長くなりましたが、対処法が分からず、困っています・・・。 どなたか、アドバス、お願い致します・・・。

    • ベストアンサー
    • Java
  • サーブレットを動かすためには?

    Tomcat5.0を使ってサーブレットを動かそうとしましたが、動きません。 JSPは問題なく動きます。 サーブレットのコンパイルは問題なくできているようです。また、ほかで動いていたものをためしに使ってみたのですが、動きません。 何か、設定をしなければならないのでしょうか。 現在は、サーブレットを動かそうとすると、 HTTPステータス 500 - type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: パス /yoko/servlet/test にサーブレットインスタンスを割り当てられません org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:388) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 原因 java.lang.IllegalAccessException: Class org.apache.catalina.core.StandardWrapper can not access a member of class test with modifiers "" sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57) java.lang.Class.newInstance0(Class.java:302) java.lang.Class.newInstance(Class.java:261) org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:369) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) このように表示されています。 何が原因なのか、対処策など、わかることがありましたらお教えください。 よろしくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう