JAVA初心者です。
JSPとサーブレットを使って、ログイン画面を作成しているのですが、
【HTTPステータス 404】エラーで原因が分からず。。。。。困ってます。。。。
どなたか分かる方いらっしゃいましたら、教えてください。(*‘ω‘ *)
MMPC003.jsp---------------------------------------------------
<body>
<form method="post" action="/MyManeger/MMPC003">
<br>
<font face="HGS明朝B" size="3" color="#00008b">メールアドレス(ID):</font>
<input type="text" name="emailaddress">
<br>
<input type="submit" value="ログイン">
</form>
</center>
</body>
</html>
MMPC003.java(Servlet)-----------------------------------------------
package servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.MMPC003form;
import validate.S007;
/**
* Servlet implementation class MMPC003
*/
@WebServlet("/MMPC003")
public class MMPC003 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String email = request.getParameter("emailaddress");
/*MMPC003form.javaに値を渡す*/
MMPC003form mform = new MMPC003form();
mform.setEmail(email);
String mail = mform.getEmail();
/*S007.javaをインスタンス化*/
S007 cheak = new S007();
String uac = cheak.execute(mail);
mform.setError(uac);
/*取得した値をJSPへ*/
request.setAttribute("error", mform);
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/MMPC004.jsp");
dispatcher.forward(request, response);
}
}
MMPC003form.java----------------------------------------------------------
package model;
public class MMPC003form {
private String email;
private String error;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
}
S007.java------------------------------------------------
package validate;
public class S007 {
public S007() {
}
/* メールアドレスは31文字以内で入力してください */
public String execute(String mform) {
if (mform.length() >= 31) {
return "メールアドレスは31文字以内で入力してください。";
} else {
return null;
}
}
}
MMPC004.jsp--------------------------------------------------
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ page import="model.MMPC003form"%>
<%MMPC003form mmpc003 = (MMPC003form) request.getAttribute("error");%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%= mmpc003.getError()%>
<font face="HGS明朝B" size="5" color="#00008b">
Login
<br>
MyManegerへようこそ!
</font>
</body>
</html>
よろしくお願いいたします。
【追記】
一番最後のMMPC004.jspのみ実行してみると、
HTTPステータス 500 - JSPのクラスをコンパイルできません: というエラーが出てきました!(泣)
type 例外レポート
メッセージ JSPのクラスをコンパイルできません:
説明 The server encountered an internal error that prevented it from fulfilling this request.
例外
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません:
An error occurred at line: [14] in the generated java file: [C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\MyManeger\org\apache\jsp\MMPC004_jsp.java]
Only a type can be imported. model.MMPC003form resolves to a package
JSPファイル: /MMPC004.jsp の中の4行目でエラーが発生しました
MMPC003form cannot be resolved to a type
1: <%@ page language="java" contentType="text/html; charset=UTF-8"
2: pageEncoding="UTF-8"%>
3: <%@ page import="model.MMPC003form"%>
4: <%MMPC003form mmpc003 = (MMPC003form) request.getAttribute("error");%>
5: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
6: <html>
7: <head>
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
最初に、MyManeger
はマネージャーの英単語だとしたらつづりが正しくないですね。
後々のことを考えると本当は直しておいたほうが良いと思うのですが、ここを変えてしまうとまた別の問題が起きそうなので、今はやめておきましょう。
...
一度にいろいろやってしまうと収拾がつかなくなりますので、確実にひとつひとつ直していってください。
まず、JSPの先頭のpageEncoding
の前にスペースがありません。
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>`
これを直してみてください。
MMPC004.jspのみ実行というのは今のところやってみなくて結構です。
formのaction属性ですが、プロジェクト名を後で変えても良いように、相対パスで書いておいた方が良いと思います。これならもしコンテキスト名が誤っていてもサーブレットを呼び出せるはずです。
<form method="post" action="./MMPC003">
(コメント2016/03/01 15:43 を受けての追記)
フォルダー構成は以下のようになっています。
(不要なファイルは除く)
ファイルを作った以外の特別な操作・設定はしていません。
MyManeger
├─build
│ └─classes
│ ├─model
│ │ MMPC003form.class
│ │
│ ├─servlet
│ │ MMPC003.class
│ │
│ └─validate
│ S007.class
│
├─src
│ ├─model
│ │ MMPC003form.java
│ │
│ ├─servlet
│ │ MMPC003.java
│ │
│ └─validate
│ S007.java
│
└─WebContent
│ MMPC003.jsp
│
├─META-INF
│ MANIFEST.MF
│
└─WEB-INF
│ web.xml
│
├─jsp
│ MMPC004.jsp
│
└─lib
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
<form method="post" action="/MyManeger/MMPC003">
この行じゃないですかね。
相対パスでしか書いてないのでURLが解析できないのでは?
http://localhost/MyManager/MMPC003とかにしてみてください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
ServletにdoGetを実装して、web.xmlなどを記述して、まずURLが呼べるかどうかをチェックしてみてはどうでしょうか。画面が思った通りに遷移できるようにしてから、それからログイン処理を書いたらよいかと思います。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
フォルダ配置は以下で間違いないでしょうか?
Web-Content
└WEB-INF
└jsp
└MMPC004.jsp
↓こちらではありませんか?
Web-Content
└jsp
└MMPC004.jsp
//修正前
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/MMPC004.jsp");
//修正後
RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/MMPC004.jsp");
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
eclipseのプロジェクトのワークスペース以下の
アプリケーション構成は送ってもらえますか?
{workspace}\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
実際に動作するclassファイル等が配置されているはずです。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
argius
2016/02/27 22:08
このソースを、どのような環境で動かして、どういった操作を行ったら「HTTPステータス 404」になったのかが分かりません。情報の追記をお願いします。
junpi-ya
2016/02/28 20:17
返信ありがとうございます。
・Eclipse4.5 "Mars"
・java8
・Tomcat 7
の環境で動かしてます。
ソースは問題ないと思うのですが、何度実行してもエラーでして、
よろしくお願いいたします。
argius
2016/02/28 20:30
どのURLで404エラーになるのでしょうか? Eclipseのサーバーでデバッグ機能を使って動かしているのでしょうか? あとMMPC003formが記載されていません。 実際に行った操作をできるだけ詳しく書いてください。そうしないと、これを読んでいる人にはソースコードからしか回答のしようがありません。
junpi-ya
2016/02/28 21:42
Eclipseのサーバーで実行しております。
「MMPC003form」のソース追加させて頂きました。このクラスは値を保持する為のクラスです。
実際の操作は、
①MMPC003.jspをサーバーで実行し、Eclipseで画面を展開。
②・メールアドレス・パスワードを入力
③「ログイン」ボタンを押下。
①の画面は出てくるのですが、③を実行すると、
------------------------------------------------------------------
HTTPステータス 404 - /MyManager/MMPC003
type ステータスレポート
メッセージ /MyManager/MMPC003
説明 The requested resource is not available.
---------------------------------------------------------
と出てきております。
上記の返信でいかがでしょうか。わかりにくくてすみません"(-""-)"
argius
2016/02/28 22:17
あといくつか教えてください。Eclipseのプロジェクト名はMyManagerですか? ①のときにアドレスバーに表示されているURLを書いていただけますか? 直接手で入力せずにコピペが望ましいです。
junpi-ya
2016/02/28 22:19
URLは、
http://localhost:8080/MyManeger/MMPC003.jsp
になります。よろしくお願いいたします!