• 締切済み

あるコード(JSP)のエラー

htmlからフォームで、JSPのファイルにsubmitする、という流れを実装しているのですが、JSPのコンパイルのところ(?)で、下記のようなエラーが出てしまいます。フォームに入力させた、文字をXMLファイルに書き込むという処理です。 org.apache.jasper.JasperException: Exception in JSP: /day01-1/add.jsp:9 コードは以下のとおりです。 <%@ page contentType="text/html;charset=Windows-31J" import="java.io.*, javax.xml.parsers.*,javax.xml.transform.*,javax.xml.transform.dom.*, javax.xml.transform.stream.*,org.w3c.dom.*"%> <% request.setCharacterEncoding("Windows-31J"); //String[] string="meigen"; DocumentBuilderFactory objDbf = DocumentBuilderFactory.newInstance(); DocumentBuilder objDb = objDbf.newDocumentBuilder(); Document objDoc = objDb.parse(application.getRealPath("jsp10/day01-1/meigenuser.xml"));//解析するXML指定 Element elmmeigen = objDoc.createElement("meigen");//meigen要素 Text txt = objDoc.createTextNode(request.getParameter("meigen"));//htmlから送られてくる名言を格納 elmmeigen.appendChild(txt);//名言要素に、↑の名言テキストを挿入 //***属性挿入 Attr atr_id = objDoc.createAttribute("id");//属性 Attr atr_name = objDoc.createAttribute("name");//たち Attr atr_syutten = objDoc.createAttribute("syutten"); atr_id.setValue("1");//本当は1じゃ困るけど… atr_name.setValue(request.getParameter("name")); atr_syutten.setValue(request.getParameter("syutten")); elmmeigen.setAttributeNode(atr_id); elmmeigen.setAttributeNode(atr_name); elmmeigen.setAttributeNode(atr_syutten); objDoc.getDocumentElement().appendChild(elmmeigen);//最後にelmmeigenをルートノード配下に配置 //***出力 TransformerFactory fac = TransformerFactory.newInstance(); Transformer tran = fac.newTransformer(); StreamResult result = new StreamResult(new FileOutputStream(application.getRealPath("jsp10/day01-1/meigenuser.xml"))); tran.transform(new DOMSource(objDoc.getDocumentElement()),result); response.sendRedirect("meigen.html"); //xmlの構造は //<meigen id = "ID" name = "ハンドルネーム" syutten = "出展作品など">とする %> よろしくお願いします。

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

みんなの回答

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

Document objDoc = objDb.parse(application .getRealPath("jsp10/day01-1/meigenuser.xml"));//解析するXML指定 のあたりでエラーが出ているようです。 メソッドgetRealPath()の引数は、仮想パスを記述します。 もし、jsp10がコンテキストパス(アプリケーション名)の場合、引数は、 "/day01-1/meigenuser.xml" または "day01-1/meigenuser.xml" となります。

nabewari
質問者

お礼

回答ありがとうございます。 直してみたのですが、動きませんでした…。 謎です。。。

関連するQ&A

  • JSPのエラー。

    以下のjspファイルでコンパイルエラーが出ます。 これはログインの処理の二つ目のjspファイルで、一つ目のファイルではhtmlのフォームで、このファイルにpostしています。 mディレクトリにuserクラスを作ってあり、loginメソッドで成功すればtrueが返ってきます。 ブラウザに表示されるエラーの一行目は org.apache.jasper.JasperException: /login2.jsp(3,27) &lt;jsp:useBean タグが終了していません と表示されます。 よろしくお願いします。 <%@page contentType="text/html;charset=Windows-31J"%> <%@page import="m.user,javax.sql.*,java.sql.*"%> <jsp:useBean class="m.user" id="user" scope="session"/> <html> <head><title>ログイン</title></head> <body> <% String strLoginName = request.getParameter("login_name");/*フォームからの受け取り*/ String strPassword = request.getParameter("password"); String strResult; boolean blResult = user.login(strLoginName,strPassword); if(blResult){ strResult = "ログインしました。"; }else{ strResult = "失敗です。"; }%> <%=strResult%> </body> </html>

    • ベストアンサー
    • Java
  • JSPからサーブレットを呼び出す際に404エラー

    現在、tomcatとeclipseでサーブレット/JSPの勉強をしています。 参考書に載っている、jspの入力画面で入力した値をサーブレットで受け取り、そのまま表示させるようなサンプルを作成しています。 JSPの入力画面は表示できるのですが、値を入力してサーブレットに移動する際、404エラーが出てしまいます。 ■eclipseのパッケージエクスプローラー basic |-WEB=INF/src |..|input |...|EchoServlet.java |-WEB-INF |..|web.xml |.|echo.jsp (WEB-INF直下に作成) ■echo.jsp内のサーブレットのパスに関する記述 <FORM ACTION="/servlet/EchoServlet"> ■web.xmlの記述 <servlet> <servlet-name>EchoServlet</servlet-name> <servlet-class>input.EchoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EchoServlet</servlet-name> <url-pattern>/servlet/EchoServlet</url-pattern> </servlet-mapping> ■EchoServlet.javaの記述 package input; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class EchoServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String msg = request.getParameter("message"); response.setContentType("text/plain; charset=Windows-31J"); PrintWriter out = response.getWriter(); out.println("message=" + msg); } } お気づきの点がございましたらご査収の程よろしくお願いいたします。

  • 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
  • DOMでXMLからデータを抽出するとNULLになる(JSP)

    JSPを勉強中なのですが、以下を実行するとエラーになってしまいます。 テキストに付録していた解答のコードを使っています。 JSPファイル: <%@ page contentType="text/html;charset=Windows-31J" import="javax.xml.parsers.*,org.w3c.dom.*,java.io.*" %> <html><head><title>住所録一覧</title></head><body> <h1 style="font-size:14pt;background:#cccccc">住所録一覧</h1> <table border="0"> <tr style="background:#00ccff"> <th>No.</th><th>名前</th><th>性別</th><th>電話番号</th><th>住所</th> </tr> <% DocumentBuilderFactory objDbf=DocumentBuilderFactory.newInstance(); DocumentBuilder objDb=objDbf.newDocumentBuilder(); Document objDoc=objDb.parse(new File(application.getRealPath("day04-3/addbook.xml"))); Element objRoot=objDoc.getDocumentElement(); NodeList clnNod=objRoot.getChildNodes(); for(int i=0;i<clnNod.getLength();i++) { out.println("<tr style='background:#ffffcc'>"); Node objNod=clnNod.item(i); NamedNodeMap clnNnm=objNod.getAttributes(); Attr atrNam=(Attr)clnNnm.item(0); out.println("<td>" + atrNam.getValue() + "</td>"); NodeList clnNod2=objNod.getChildNodes(); for(int j=0;j<clnNod2.getLength();j++) { Node objNod2=clnNod2.item(j); out.println("<td>" + objNod2.getFirstChild().getNodeValue() + "</td>"); } out.println("</tr>"); } %> </table></body></html> XMLファイル: ファイル名:addbook.xml <?xml version="1.1" encoding="utf-8"?> <addbook> <member id="1"> <name>高橋秀和</name> <gender>男</gender> <tel>04x-231x-123x</tel> <address>小金井市△△町123-3249</address> </member> <member id="2"> <name>輪笠貴子</name> <gender>女</gender> <tel>00x-1231-xxxx</tel> <address>横浜市○○区△△町34165-1</address> </member> <member id="3"> <name>佐々木健司</name> <gender>男</gender> <tel>04x-231x-xxxx</tel> <address>川崎市○○町1-3213</address> </member> <member id="4"> <name>鳥内都</name> <gender>女</gender> <tel>09x-21xx-xx97</tel> <address>横浜市◇◇区5-16</address> </member> <member id="5"> <name>金崎瑞穂</name> <gender>女</gender> <tel>02x-654x-324x</tel> <address>相模原市△△区1-9-21</address> </member><member id="10"> <name>川端真一</name> <gender>男</gender> <tel>0xx-999-8888</tel> <address>相模原市★★町12313-1</address> </member> </addbook> エラー内容: type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from lfilling this request. 例外 org.apache.jasper.JasperException: java.lang.NullPointerException org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) day10.LogFilter.doFilter(LogFilter.java:38) 原因 java.lang.NullPointerException org.apache.jsp.day04_002d4.addList_jsp._jspService(addList_jsp.java:79) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) day10.LogFilter.doFilter(LogFilter.java:38) 以上です。 JSPのコードは Document objDoc=objDb.parse(new File(application.getRealPath("day04-3/addbook.xml"))); の行の new File の部分だけ修正しました。 ここでつまづてしまい、先に進む事ができません。 環境は、 JDK1.6 Tomcat6 OS:WindowsXP を使用しています。 どなたか原因が分かる方、お助けください。

    • ベストアンサー
    • Java
  • JSP→JSP フォームチェック

    困っているので助けてください。 まずプログラムの説明をさせてもらいます。 JSPからfromをつかってJSPにフォーム情報を送ります。 プログラムはこんな感じです。 <form action="abcdefg.jsp" method="post"> <input type="hidden" name="abc" value="abc"> <input type="hidden" name="def" value="def"> <input type="checkbox" name="aa" value="aa"> <input type="checkbox" name="bb" value="bb"> <input type="checkbox" name="cc" value="cc"> <input type="submit" value="次へ"> </form> これをabcdefg.jspで受け取る場合 String hidden_abc = request.getParameter("abc"); String hidden_def = request.getParameter("def"); とhiddenは必ず値が入っているのでこれで受け取れるのですが チェックボックスは選択しているかどうかわからないので上の記述では だめなようなのですがどのようなプログラムを書いたらいいのですか? 説明がうまく出来なく申し訳ないです。よろしければ教えてください。

    • ベストアンサー
    • Java
  • JSPにおける引数の受け渡し

    こんにちは. 今JSPのプログラムを作っているのですが,引数を送る場面で困っています. test2.jspにおいて,タイプはちゃんと表示されているのですが,IDとパスワードはnullになっています. もし宜しければ,どこが間違っているのかお教えいただけないでしょうか?よろしくお願いします. 【test.jsp】 ~省略~ <%String type="aaa";%> <?xml version="1.0" encoding="Shift-JIS" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> ~省略~ </head> <body> <div class="abc"> <h1>タイトル</h1> <form action="test2.jsp" method="post"> <p> <table> <tr> <td>ID</td> <td><input type="text" name="user_id" /></td> </tr> <tr> <td>パスワード</td> <td><input type="password" name="user_pass" /></td> </tr> </table> <br /> <input type="button" value="ログイン" onclick="test('test2.jsp?type=<%=type%>')" /> </p> </form> </div> <script type="text/javascript" src="test.js"></script> </body> </html> 【test2.jsp】 ~省略~ <% String type=request.getParameter("type"); String user_id=request.getParameter("user_id"); String user_pass=request.getParameter("user_pass"); %> ~省略~ <h1>タイトル2</h1> <p> <table> <tr> <td>ID</td> <td><%=user_id%></td> </tr> <tr> <td>パスワード</td> <td><%=user_pass%></td> </tr> <tr> <td>タイプ</td> <td><%=type%></td> </tr> </table> </p>

    • ベストアンサー
    • HTML
  • Transformのエラー

    お世話になります。 XMLを本を見ながら勉強中、Javaを利用してXSLを適用しなくてはならない箇所があり、本に記載の方法で初めてJavaなるものを利用してみたのですが、エラーが出てしまって本来の目的であるXMLの勉強が進まない状況に陥ってしまいました。 解決方法についてご助言いただければ幸いです。 ■環境 J2SE JDK1.5.0_06 OS:Win2K ■状況 DOSより以下のコマンドを走らせました。 C\hoge>java Transform sample1.xml sample1.xsl result.xml エラーは Exception in thread "main" java.lang.NoClassDefFoundError: Transform とのことです。 Transformというクラスファイル(?)が必要なのかと、本の発行者HPに訪れたら"Transform.class"というバイナリファイルが存在していたので、サンプルのxmlファイルがある同一フォルダに落としてから、再度コマンドを打ってみましたが、問題が解決されません。 コンパイル前のTransform.javaも念のため記載します。 よろしくお願い致します。 [Transform.java] import java.io.*; import javax.xml.transform.*; import javax.xml.transform.stream.*; public class Transform { public static void main(String args[]) throws Exception { StreamSource in = new StreamSource(new File(args[0])); StreamSource ss = new StreamSource(new File(args[1])); StreamResult out = new StreamResult(new File(args[2])); TransformerFactory tff = TransformerFactory.newInstance(); Transformer tf = tff.newTransformer(ss); tf.transform(in,out); System.out.println(args[2] + "Output OK!"); } }

    • ベストアンサー
    • Java
  • WEBブラウザからJSPを介して、サーブレットを呼び出したいのですが・・・

    オールインワンeclipse3.4 tomcat5.5を使用して 動的WEBプロジェクトを作成して JSP~サーブレットを呼び出したいのですが、 なぜかJSPファイルを認識してくれず、404エラーとなります。 考えられるのは、ファイルの配置箇所くらいしか、思いつきませんが、色々動かしても結果は変わりませんでした。 どなたか、ご指導お願いいたします。 □basic |□javaリソースsrc>□パッケージinput>EchoServret.java |□WebContent>echo.jsp echo.jspソース <%@ page contentType="text/html; charset=windows-31j"pageEncoding="windows-31j"%> <html> <body> <h2>EchoServletの入力</h2> <form action = "../servlet/input.EchoServlet"> <input type="text" name="message"> <input type="submit"> </form> </body> </html> EchoServlet.javaソース package input; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class EchoServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{ String msg = request.getParameter("message"); response.setContentType("text/plain; charset=Windows-31J"); PrintWriter out = response.getWriter(); out.println("message=" + msg); } } 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>basic2</display-name> <servlet> <display-name>EchoServlet</display-name> <servlet-name>EchoServlet</servlet-name> <servlet-class>input.EchoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EchoServlet</servlet-name> <url-pattern>/EchoServlet</url-pattern> </servlet-mapping> <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> </web-app> よろしくお願いいたします!

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

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

    • ベストアンサー
    • Java
  • JSP表示エラー?

    たびたびすみません リクエストから取ってきたコメントどうしても表示ができないです。 環境は tomcat5.5 postgresql8.2 データベースエンコーディングはEUC_JP JSPファイルもEUC形式で保存してます。 コメント欄に日本語を入力するとエラーが出てしまいます。 JSPファイル1 <%@ page contentType="text/html; charset=euc-jp"pageEncoding="euc-jp" %> <%@ page import="java.sql.*,atmarkit.MyDBAccess" %> <% // 内容: データベースにアクセスする MyDBAccess db = new MyDBAccess(); db.open(); ResultSet rs = db.getResultSet("SELECT * FROM SHAINLIST order by member_id"); String tableL = "<table border=1>"; tableL += "<tr bgcolor=\"000080\"><td><font color=\"white\">ID</font></td>" + "<td nowrap><font color=\"white\">名前</font></td>" + "<td colspan=2><font color=\"white\">出欠</font></td>"; while(rs.next()) { int id = rs.getInt("member_id"); String name = rs.getString("name"); String age = rs.getString("age"); int state = rs.getInt("attendance"); String comment = rs.getString("comment"); if(comment != null){ comment = new String(comment.getBytes("8859_1"),"EUC_JP"); } 以下~略 JSPファイル2 <%@ page contentType="text/html; charset=euc-jp"pageEncoding="euc-jp" %> <%@ page import="java.sql.*, atmarkit.MyDBAccess" %> <% // 内容: データベースにアクセスする // 入力された引数を取得する String comment = request.getParameter("comment"); String attendance = request.getParameter("attendance"); String member_id = request.getParameter("member_id"); // MyDBAccess のインスタンスを生成する MyDBAccess db = new MyDBAccess(); // データベースへのアクセス db.open(); // データベース更新用のSQL文を作成 String sql = "update shainlist set comment='" + comment + "', attendance=" + attendance + " where member_id=" + member_id; // SQL文を実行 db.execute(sql); くわしい方教えていただけないでしょうか よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう