• ベストアンサー

JSP・Servletでファイル入出力する方法

JSPやServletでクライアント側のファイルにアクセスして 読み書きをするためにはどうすればいいでしょうか? PHPではクライアント側のファイルを読み書きできましたが、 JSPやServletでは同じように自由にアクセスすることは できないのでしょうか? また、アクセスするときにはウイルス検出ソフトは検知しますか?

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

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

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

ご心配されているように、もし可能ならセキュリティ上の大問題になって しまいます。 ActiveXとか使えば可能ですけどHTMLや Javascriptではできません。 ActiveXはIEだけなので、基本的にはできないと考えてください。 ローカルファイルに情報を保存する方法は今のところ Cookieしかないです。 HTML5では Web Storage が使えますが、Cookieの延長上のものです。

utawoutau
質問者

お礼

ありがとうございます やっぱり厳しいようですね

その他の回答 (1)

回答No.1

アップロードしてもらったものをJavaで編集することは出来ると思います。 ちなみに言われているPHPは、同一サーバからクライアントとしてアクセスしたのではないでしょうか? クライアントのファイルを直接編集は出来ないはずですが。。

utawoutau
質問者

お礼

ありがとうございます。 何か方法があるかと思って調べてみても 方法がなかなか見つからず悩んでいたので できないようでしたらできないと分かって助かりました

utawoutau
質問者

補足

PHPはローカルでのみ試したので、たしかに言われてみれば そうだったのだと思います。 JSP・Servletではアップロードされなければ ファイルの読み書きはできないのでしたら、 JSPやServlet以外でもクライアントのファイルにアクセスできる 方法があれば教えていただけると幸いです。 Javascriptだとクライアント側にアクセスするのは できない仕様になっているようで、クライアント側の情報の 取得はやはり難しいのでしょうか?

関連するQ&A

  • WTP,JSP,Servlet

    WTPを使って開発をしています。 設定まではうまくいきました。 一応環境をお知らせします。 ・WindowsVista ・WTP ・Tomcat6.0 ・Java6.0 ○実現したい事 JSP画面のフォームから送信ボタンでServletを呼ぶ。 ○困っていること JSP画面からServletが呼べない。 どうも <form method="post" action="com.Servlet"> のactionの指定が間違っているようです。 ○ソース環境 JSP : ルート/WebContent/JSP画面 Servlet : ルート/src/com/Servlet.java class : ルート/build/classes/com/Servlet.class ○エラー HTTPステータス 404 - /ルート/com.Servlet Actionの指定をいろいろと試したのですがダメでした。 Sevletの代わりにJSP画面と同じフォルダ内の他のJSPファイルを指定したらうまくいってます。 情報が足りなかったらすいません。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • JSPからServletへの値の引渡し

    JSPからServletへパラメータを渡そうとしています。 JSP同士のやり取りのようにrequest.getParameter でやろうとするとNullPointerExceptionが出てしまいます。 ひょっとして私って何も分かってないのかも…。 JSPで、 <input type=hidden name="nickname" value="pinky"> として渡すべき値を設定しました。 そして、PostでServletを呼び出します。 呼び出されたServlet側で、この"nickname"を受け取りたいのです。 必要な情報があれば仰って下さい。補足致します。 よろしくお願いします。

    • ベストアンサー
    • Java
  • ServletからJSPに遷移させた後もServletに制御を戻したいんですが

    Java初心者です。宜しくお願いします。 現在、ServletからJSPに対してIncludeまたはForward した後にServlet側にて処理を継続させる方法が ないか調べています。 Forwardは×かなというところ まではわかったのですがIncludeで行った場合 Servlet → JSPに遷移させた後に呼び出し元の Servletに制御を戻す事は可能でしょうか。 また、一般的な方法がありましたらご教授お願いします。 宜しくお願いします。

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

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

    • ベストアンサー
    • Java
  • Servlet/JSPのアクセス制限

    Apache 2.2.x + Tomcat 5.5.xでサーバをたてています。 そこに、とあるサーブレット、ないしはJSPのファイルがあるとします。  www.somewhere.com/apps/servlet_or_jsp これを、通常は、同一サイト内にあるhtmlファイルのフォームから呼び出しています。  www.somewhere.com/foo.html   <form action="apps/servlet_or_jsp" ...> ここで、別サイトにあるhtmlファイルのフォームから、上記のファイルを呼び出そうとしてみます。  www.somewhereelse.com/bar.html   <form action="www.somewhere.com/apps/servlet_or_jsp" ...> すると、件のファイルを実行できてしまうのですが、これを外部サイトから実行できないようにするにはどうすれば良いのでしょうか? もしかしたら、とてつもなくくだらないことなのかもしれませんが、入門書を見たりWebで検索してみても答えが見つからなかったので、質問させてください。

  • JSPからServletへの遷移

    今回、eclipseで開発をすることになりました。 しかしながら、動的Webプロジェクトという使い慣れないプロジェクトでの作成を しなくてはならなくなり、混乱しています。 tomcatとWTPのことについては、先の質問で教えて頂き解決したのですが、 もう一つ困ったことがあったので、再度質問させて頂きます。 --------------------------------------- 環境 Windows7 Ultimate eclipse Indigo tomcat 5.5 --------------------------------------- まずは、JSPを作成し、それを実行し、ブラウザ上に表示することは出来ました。 その後にServletに<form action ="/test" method = "POST">という形で投げるのですが、 それがうまくいかず、404エラーが出てしまいます。 階層としては、JSPはSample(プロジェクト名)/WebContent/NewFile.jspに配置しています。 そして、Servletについては、Sample(プロジェクト名)/src/test/Test.javaに配置しています。 web.xmlについては、Sample(プロジェクト名)/WebContent/WEB-INF/web.xmlにあります。 まず、JSPのソースは以下の様に書かれています。 ----------------------------------------------------- <%@ page contentType="text/html;charset=Windows-31J" language="java"%> <%@ page pageEncoding="Windows-31J"%> <html> <head><title>タイトル</title></head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <%request.setCharacterEncoding("Windows-31J");%> <body> <form method="POST" action="/test"> <%--ここに処理を記述 --%> <input type = "submit" name="submit" value = "送信"> </form> </body> </html> ----------------------------------------------------- Servletについては、以下の様に、型だけ記述しています。 ----------------------------------------------------- package test; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Test */ public class Test extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Test() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } ---------------------------------------------------- そして、web.xmlについては、以下の様に記述しています。 ---------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>SampleWeb</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>test</servlet-name> <servlet-class>test.Test</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> </web-app> ----------------------------------------------------- その状態で、JSPの中から <form action ="/test" method = "POST"> <input type ="submit" name = "submit" value="送信"> </form> とやっても、404が出てしまいます。 Java自体が久々で、根本的に間違っているかもしれませんが、 ご教授お願い致します。

    • ベストアンサー
    • Java
  • jspでXMLファイルの読み書きは?

    JavaのJSPで、XMLファイルを読み書きしたいと思っております。 サーブレットでは、「import javax.xml.parsers.*;」などを読み込んで処理してますが、 JSPでも、同じように Import してやればよいのでしょうか? また、JSPでも、「Try~catch 」のようなことは、できるのでしょうか? PHPでは、「simplexml_load_file」を使っていました。 Javaには、詳しくないので、お分かりになる方がいらっしゃいましたら、お教えください。

    • ベストアンサー
    • Java
  • JSP、Servlet、設計について

    今回Webアプリの設計を行っていますが、そこで発生した疑問について質問させて頂きます。 このアプリは、大きく分けてログイン画面とメイン画面の二つがあり、各メイン画面ではフレーム部分と内側の部分が存在し、各メイン画面のフレーム部分のデザインは統一したいと思っています。 また、出来るだけMVCモデルを守り、スプリクトレットはできる限り用いず、カスタムタグは使用せず、JavaとServletが理解できれば全体が把握できるような形にしたいと思っています。 ○疑問1 メイン画面のデザインを統一させるためにどのような流れにするか? ・案1 サーブレット、フレーム部分のjsp、内側のjspのファイル、この3つをメイン画面の各機能分作る。 サーブレットで要求を受け、フレーム部分jspにフォワードし、フレーム部分jspから内側jspをインクルードする。 ・案2 サーブレット、フレーム部分のjsp、フレームからインクルードするファイルを決める分岐用サーブレット、この3つを一つづつ作り、内側のjspファイルを各機能分作る。 サーブレットで要求を受け、フレーム部分jspにフォワードし、フレーム部分jspから分岐用サーブレットをインクルードし、分岐用サーブレットから内側jspをインクルードする。 ・考察 案2では、フレーム部分jspを一つに限定できるのでそちらのほうが良いように思えますが、流れが若干複雑になります。案1ではシンプルですが、フレーム部分jspファイルが複数できてしまいます。 機能によっては、サーブレットとJSPがお互いを呼び出すような事が5回ぐらいネストされると思います。 このようなやり方が普通なのか、判断できません。 ○疑問2 ログイン情報を用いた動的メニューを、メイン画面で共通のフレームに追加したい。 ・案1 ViewHelperパターン?のような形にする 一例 <jsp:useBean id="menu" scope="request" class="MenuBean" /> <%= menu.getMenu() %> サーブレットでMenuBeanにログイン情報を設定し、JSPからメニューのHTMLを構成したStringを返してもらう。 ・案2 Servletにする <jsp:include page="MenuServlet" /> JSPからインクルードされたMenuサーブレットで、ログイン情報を取得してメニューのHTMLを構成し、out.printlnする。 ・考察 案1はサーブレットでMenuを作成しなくてはならず、一つ手間が増える。案2は、コントローラであるはずのServletでout.printlnしなくてはならないので何か違和感がある。(他のサーブレットでは、out.printlnする箇所は全くない) どちらが良いのか、または別の方法があるのか。 Servletで実現できるならViewHelperの用途とは何か? よろしくお願い致します。

  • jsp,servlet,beanの流れについて

    初歩の初歩の質問ですが、参考書等読んでいて混乱してしまっています。宜しくお願いします。 a.jsp(入力画面) a_servlet.java a_bean.java(setのみ) b.jsp(表示画面) b_servlet.java b_bean.java(get,setのみ) というファイルがある時のプログラムの流れは、 (1)a.jsp・・・画面を表示する。データを入力する。登録ボタンを押下する。 (2)a_servlet.java・・・(1)で登録ボタンを押下されたら、a.jspのデータを取得。a_bean.javaへ設定する。b.jspへ飛ぶ。 (3)a_bean.java・・・(2)によりデータが設定されている。 (4)b_servlet.java・・・a_bean.javaのデータを取得し、b_bean.javaに設定する。 (5)b_bean.java・・・(4)によりデータが設定されている。 (6)b.jsp・・・表示データをb_bean.javaより取得後、画面を表示する。削除ボタンを押下する。 (7)b_servlet.java・・・(6)で削除ボタンが押下されたらb.jspのデータを取得し、b_bean.javaへ設定する。 特にbファイルの処理順序で混乱しています。 上記のような流れで考え方は合っているでしょうか。 少々分かりずらいかもしれませんが、間違っていたら小学生でも分かるように教えてください。

    • ベストアンサー
    • Java
  • JSPから値を送ったときのServletでの受け取り方について

    JSPから<form>で値を送って、それをServletでgetParameterで受け取る処理を しているのですが、 JSPから送る値がいくつあるかわからない場合、Servlet側ではどのように 受け取る方法があるでしょうか? 例えば、 <form action="<%= response.encodeURL("/mimi/abc") %>" method="post"> <% for(int i=0;i<attr.size();i++) { //attr.size()にはいくつ入ってるか不明として String strNameAtr = (String)attr.elementAt(i) ; %> 値 <input type="text" value="<%= strNameAtr %>" name="xmlValueAttr_"+"<%= i %>"><br> <% } %> <input type="submit" value="変更" name="getText"> </form> これを、Servletで受け取る場合、どのように受け取れるでしょうか? xmlValueAttr_iの"i"の部分はいくつまで入っているかわからないので、 普通の処理だと、対応できません。 いい方法があったら、教えてください、お願いします。

    • ベストアンサー
    • Java