質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Q&A

解決済

5回答

19630閲覧

JSP→サーブレット「遷移ができない」

junpi-ya

総合スコア17

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

0グッド

1クリップ

投稿2016/02/27 09:22

編集2016/02/28 13:17

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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

argius

2016/02/27 13:08

このソースを、どのような環境で動かして、どういった操作を行ったら「HTTPステータス 404」になったのかが分かりません。情報の追記をお願いします。
junpi-ya

2016/02/28 11:17

返信ありがとうございます。 ・Eclipse4.5 "Mars" ・java8 ・Tomcat 7 の環境で動かしてます。 ソースは問題ないと思うのですが、何度実行してもエラーでして、 よろしくお願いいたします。
argius

2016/02/28 11:30

どのURLで404エラーになるのでしょうか? Eclipseのサーバーでデバッグ機能を使って動かしているのでしょうか? あとMMPC003formが記載されていません。 実際に行った操作をできるだけ詳しく書いてください。そうしないと、これを読んでいる人にはソースコードからしか回答のしようがありません。
junpi-ya

2016/02/28 12:42

Eclipseのサーバーで実行しております。 「MMPC003form」のソース追加させて頂きました。このクラスは値を保持する為のクラスです。 実際の操作は、 ①MMPC003.jspをサーバーで実行し、Eclipseで画面を展開。 ②・メールアドレス・パスワードを入力 ③「ログイン」ボタンを押下。 ①の画面は出てくるのですが、③を実行すると、 ------------------------------------------------------------------ HTTPステータス 404 - /MyManager/MMPC003 type ステータスレポート メッセージ /MyManager/MMPC003 説明 The requested resource is not available. --------------------------------------------------------- と出てきております。 上記の返信でいかがでしょうか。わかりにくくてすみません"(-""-)"
argius

2016/02/28 13:17

あといくつか教えてください。Eclipseのプロジェクト名はMyManagerですか? ①のときにアドレスバーに表示されているURLを書いていただけますか? 直接手で入力せずにコピペが望ましいです。
guest

回答5

0

eclipseのプロジェクトのワークスペース以下の
アプリケーション構成は送ってもらえますか?

{workspace}.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

実際に動作するclassファイル等が配置されているはずです。

投稿2016/03/01 08:09

hato_pato

総合スコア215

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

最初に、MyManegerはマネージャーの英単語だとしたらつづりが正しくないですね。
後々のことを考えると本当は直しておいたほうが良いと思うのですが、ここを変えてしまうとまた別の問題が起きそうなので、今はやめておきましょう。

...

一度にいろいろやってしまうと収拾がつかなくなりますので、確実にひとつひとつ直していってください。

まず、JSPの先頭のpageEncodingの前にスペースがありません。

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>`

これを直してみてください。

MMPC004.jspのみ実行というのは今のところやってみなくて結構です。

formのaction属性ですが、プロジェクト名を後で変えても良いように、相対パスで書いておいた方が良いと思います。これならもしコンテキスト名が誤っていてもサーブレットを呼び出せるはずです。

lang

1<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

投稿2016/02/28 13:36

編集2016/03/01 07:54
argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junpi-ya

2016/02/28 13:45

pageEncoding="UTF-8"は、わたしの記入ミスで、実際のソースを確認したら、 スペースはありませんでした。 <form method="post" action="./MMPC003"> も変更してみましたが、エラーは改善されませんでした。せっかく回答頂いたのに、 申し訳ございません。
argius

2016/02/28 13:54

スペースは無かったのなら入れないとダメですが。 「スペースはありました」が正しいですか? あと、Eclipseのコンソールに何かエラーメッセージが出ていませんか?
argius

2016/02/28 13:56

上記以外の点では、ソースコードには特に問題ないと思います。
junpi-ya

2016/02/28 14:20

>「スペースはありました」が正しいですか? はい。スペースはありました。 コンソールにはエラーは出ておりません。 わたしも何度もソースの確認をしたのですが、原因が分からず、 知人のPCで実行しても同様のエラーでしたので、環境の原因ではさなそうです。
argius

2016/02/28 14:38

肝心なところを確認していませんでした。 プロジェクトのプロパティーの「プロジェクト・ファセット」という項目にある"動的Webプロジェクト"のバージョンは何になっていますか?
junpi-ya

2016/02/28 14:47

動的Webモジュールの事でしょうか? 確認したところ、3.0でした。 よろしくお願いいたします。
argius

2016/02/28 15:03

あ、失礼しました。 動的Webモジュールのことです。 これが3.0になっていなかったら確か404になるのでもしやと思ったのですが。 もう一度書いていただいたものを確認したのですが、 404エラーメッセージは/MyMan"a"ger/MMPC003となっていますね。 プロジェクトは/MyMan"e"ger/なんですよね? 実際はすべて"e"の方でしょうか?
junpi-ya

2016/02/28 15:17

>404エラーメッセージは/MyMan"a"ger/MMPC003となっていますね。 →失礼しました。コピペで質問回答したつもりでしたが、私の記述ミスです。 プロジェクト名:MyManeger 404エラーメッセージ:HTTPステータス 404 - /MyManeger/MMPC003 です。
argius

2016/02/29 21:52

何度もすみません。 確認させてください。 ① Eclipseのエディションは何でしょうか? (JavaEE, Pleiades All In One, それ以外) ② MyManegerプロジェクトを作った時の操作はどのようにしましたか? 動的Webプロジェクトですか?
junpi-ya

2016/03/01 01:13

確認ありがとうございます。 ① All in one eclipse 4.5です。 ② 動的WEBプロジェクトです。 よろしくお願いいたします。
argius

2016/03/01 05:57

ありがとうございます。 おそらく全く同じ手順でプロジェクトを作ってみましたが、ちゃんと動きました。 なので、コードは以前に指摘した箇所以外には問題が無いですし、 特別な設定をしなくても動作するはずです。 あと考えられることは、 ご友人のPCでも発生しているということで、 実際に動かしているコードが貼っていただいているのと異なっているくらいしか 思いつきません。 例えば、アノテーション@WebServlet("/MMPC003")の記載が誤っている、 (文字列の中に無駄なスペースがあるとか、ゼロのつもりが大文字のオーだったとか) のようなケースです。
junpi-ya

2016/03/01 06:43

本当ですか!?もう一度、プロジェクトを作成してみます。 もし差し支えなければ、作成頂いたフォルダの配置も教えて頂けないでしょうか。 もしかしたら私の配置が間違っているかもしれないので。 色々と細かくご返信頂き、本当にありがとうございます。
argius

2016/03/01 07:56

回答欄に追記しました。 もうひとつ、考えられるケースを思いつきました。 MMPC003.javaがビルド対象外になっている可能性はありませんか? クラスファイルが出来ているなら問題ないと思いますが。 念のため、プロジェクトのクリーンを実行してみたほうが良いかも知れません。
hato_pato

2016/03/01 08:19

横から失礼します。 プロジェクトクリーンとサーバタブでサーバを選択して 同期をさせるのが良いかもしれませんね。
junpi-ya

2016/03/01 08:29

>argiusさま 解決しました!かなりソースを修正していたので、ソースが反映?されていなかったのでしょうか。プロジェクトのクリーン実行すると、遷移できました!! 初歩的な原因で、ご迷惑をおかけしました。。。。。( 一一) >hato_patoさま プロジェクトクリーン、今後も気を付けます。 コメントありがとうございます!
hato_pato

2016/03/01 08:33

自動ビルドにチェックされていない? JSPはコンパイル不要ですが、Servletはコンパイル必要なので。
argius

2016/03/01 08:37

解決できて良かったです。
junpi-ya

2016/03/01 09:24

>hato_pato さま 自動ビルドはチェック入ってます。 チェック入っていると何か問題あるのでしょうか・・・? よろしくお願いいたします。
junpi-ya

2016/03/01 09:28

>hato_patoさま 引き続き、失礼いたします。 わたしのEclipseでは、コンテキストの再ロードが自動的にされる場合と されない場合があるのですが、これも原因なのでしょうか。 また、どういう条件で再ロードされるのか教えて頂けると助かります。。。(´;ω;`)
guest

0

フォルダ配置は以下で間違いないでしょうか?
Web-Content
└WEB-INF
└jsp
└MMPC004.jsp

↓こちらではありませんか?
Web-Content
└jsp
└MMPC004.jsp

Java

1 2//修正前 3RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/MMPC004.jsp"); 4 5//修正後 6 RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/MMPC004.jsp");

投稿2016/02/28 13:31

編集2016/02/28 13:37
Richiko

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Richiko

2016/02/28 15:47

私がよく、上のような間違いをしていたので確認しました。 コメントではなく質問で確認すべきだったかもしれません、申し訳ありません。
junpi-ya

2016/02/28 23:56

ファイルの配架は、 Web-Content  └WEB-INF    └jsp    └MMPC004.jsp で間違いありません。 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/MMPC004.jsp"); もいくつか試してみたのですが、解決に繋がらず。。。。 よろしくお願いいたします。
guest

0

ServletにdoGetを実装して、web.xmlなどを記述して、まずURLが呼べるかどうかをチェックしてみてはどうでしょうか。画面が思った通りに遷移できるようにしてから、それからログイン処理を書いたらよいかと思います。

投稿2016/02/27 17:52

thesecret11

総合スコア234

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junpi-ya

2016/02/28 11:19

ありがとうございます。 画面遷移から作成してみたいと思います。
guest

0

<form method="post" action="/MyManeger/MMPC003">

この行じゃないですかね。
相対パスでしか書いてないのでURLが解析できないのでは?
http://localhost/MyManager/MMPC003とかにしてみてください。

投稿2016/02/27 14:57

liguofeng29

総合スコア801

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junpi-ya

2016/02/28 11:18

絶対パスでも実行してみましたが、エラーは解決できませんでした。 環境の問題なのでしょうか。 よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問