プロが教える店舗&オフィスのセキュリティ対策術

フォームを設定した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>

A 回答 (4件)

アプリケーションサーバに何を使用しているかわかりませんが


ログに何か出力されていませんか?
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/11/20 14:13

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/tomca …
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。参考ページ等も拝見して、調べてみました。
現在、当方は

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)を返すプログラムは問題なく動作するのですが、自分で設定したメッセージを返したいと思います。
そのあたりのご教授お願いいたします。

お礼日時:2007/11/16 11:11

No1の者です。


ごめんなさい。
><%@ page errorPage="/error.jsp" %>
ではなく、
><%@ page errorPage="/webapp/JSPtest/error.jsp" %>
でした。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/15 15:05

><%@ page errorPage="error.jsp" %>


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています