• 締切済み

JSPのエラー画面(error.jsp)に遷移(移動)しない

フォームを設定したlogin.htmlから情報を受け取るlogin.jspで検証をして、間違ったid番号を入力した場合はerror.jspに移動させたいのですが、遷移せず、「HTTP 500 - 内部サーバー エラー」となります。 改善のご教示お願い致します。 [login.html] <html><head><title>login.html</title></head> <body><h1>ログイン</h1><hr><br> <form method="post" action="/webapp/JSPtest/login.jsp"> <table> <tr> <td>ID:</td> <td><input type="text" name="id"></td> </tr> </table> <br><br> <input type="submit" value="送信"> <input type="reset" value="キャンセル"> </form> </body> </html> [login.jsp] <%@ page contentType="text/html;charset=Shift_JIS" pageEncoding="Shift_JIS" %> <%@ page errorPage="error.jsp" %> <html><head><title>login.jsp</title></head> <body> <% String id = "2007"; String data = request.getParameter("id"); StringBuffer temp = new StringBuffer(); if(!id.equals(data)) temp.append("数値間違い<BR>"); if(temp.length() != 0){ throw new Exception(temp.toString()); } %> <h1>こんにちは<%= data %>様</h1> <h1><%= temp.length() %> </h1> </body></html> [error.jsp] <%@page contentType="text/html;charset=Shift_JIS" pageEncoding="Shift_JIS" %> <%@ page isErrorPage="true" %> <html><head><title>error.jsp</title></head> <body> エラーメッセージ<br> <%= exception.getMessage() %> </body></html>

みんなの回答

  • ARIA9
  • ベストアンサー率37% (3/8)
回答No.4

アプリケーションサーバに何を使用しているかわかりませんが ログに何か出力されていませんか?

maiko100
質問者

お礼

ありがとうございます。 ログは特に無いようです。 MYSQL+Tomcatです

noname#49428
noname#49428
回答No.3

error.jspがどこに配置されてるか分かりませんが、パスを正しく設定して、web.xmlに以下のタグを追加して下さい。 <error-page> <exception-type>java.lang.Exception</exception-type> <location>error.jsp</location> </error-page>

参考URL:
http://www.geocities.jp/newtype_shira/java/tomcaterror.html
maiko100
質問者

お礼

早速の回答ありがとうございました。参考ページ等も拝見して、調べてみました。 現在、当方は webapp------WEB-INF/src | |-----work |-----JSPtest |   |---error.jsp |   |---login.html |   |---login.jsp | |---WEB-INF |---lib という構造になっています。ご指摘に従って、次のweb.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <error-page> <exception-type>java.lang.Exception</exception-type> <location>error.jsp</location> </error-page> </web-app> をWEB-INFの配下においたところ、login.html、login.jspも動かなくなりました。(HTTPステータス 404) 勉強不足で申し訳ないのですが、web.xmlにサーブレットを登録するのは、 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>JSPtest.HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app> という形は理解しているのですが、JSPとweb.xmlの関係がよくわかりません。通常のエラー(NULLとか、/ZERO)を返すプログラムは問題なく動作するのですが、自分で設定したメッセージを返したいと思います。 そのあたりのご教授お願いいたします。

回答No.2

No1の者です。 ごめんなさい。 ><%@ page errorPage="/error.jsp" %> ではなく、 ><%@ page errorPage="/webapp/JSPtest/error.jsp" %> でした。

maiko100
質問者

お礼

早速ありがとうございます。 残念ながら、動作しませんでした

回答No.1

><%@ page errorPage="error.jsp" %> これを <%@ page errorPage="/error.jsp" %> にしてみては。

関連するQ&A

専門家に質問してみよう