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

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

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

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

2回答

40355閲覧

jspからサーブレット呼び出しで404エラー

massa0413

総合スコア12

JSP

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2017/08/11 07:42

java初心者です。
現在、tomcatとeclipseでサーブレット/JSPの勉強をしています。

参考書に載っている、jspの入力画面で入力した値をサーブレットで受け取り、そのまま表示させるようなサンプルを作成しています。
JSPの入力画面は表示できるのですが、値を入力してサーブレットに移動する際、404エラーが出てしまいます。
よろしくお願いします。

###発生している問題・エラーメッセージ

HTTPステータス 404 - /jihanki/MainServlet The requested resource is not available.

###該当のソースコード
【サーブレット】
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 javax.servlet.http.HttpSession;

import model.CalcLogic;
import model.Money;

/**

  • Servlet implementation class top

*/
@WebServlet("/top")
public class MainServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/** * @see HttpServlet#HttpServlet() */ public MainServlet() { super(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 初期パラメータ Money money = new Money(); //HttpSessionインスタンスの取得 HttpSession session = request.getSession(); //セッションスコープにインスタンスを保存 session.setAttribute("money", money); // index.jspにフォワード RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/index.jsp"); dispatcher.forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // リクエストパラメータ取得 request.setCharacterEncoding("UTF-8"); String addMoney = request.getParameter("money");//投入金額 // 投入金額をプロパティに設定 Money money = new Money(); money.setMoney(Integer.parseInt(addMoney)); System.out.println("aaa"); // 計算処理を実行し結果を表示

// CalcLogic calclogic = new CalcLogic();
// calclogic.execute(money);

// //セッションスコープに保存
HttpSession session = request.getSession();
session.setAttribute("money", money);

// // index.jspにフォワード
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/index.jsp");
dispatcher.forward(request, response);

}

}

【JSP】
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="model.Money"%>
<%
//初期値を取得
Money money = (Money) session.getAttribute("money");
%>

<!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>sample</title> </head> <body> <p>お金を投入してください。</p> <form action="/jihanki/MainServlet" method="post"> <input type="text" name="money"> <input type="submit" value="投入"> </form> <p> 投入金額:<%= money.getMoney() %> </p> </body> </html>

###試したこと
JSP

<form action="/jihanki/MainServlet" method="post"> を → <form action="../jihanki/MainServlet" method="post">や → <form action="./jihanki/MainServlet" method="post">や → <form action="/servlet/MainServlet" method="post">などに変更

###補足情報(言語/FW/ツール等のバージョンなど)
MacOS X 10.10
Eclipse: Neon.1a Release (4.6.1)
apache-tomcat-8.5.8
tomcat 8.5サーバー

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

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

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

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

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

guest

回答2

0

ベストアンサー

<form action="/jihanki/MainServlet" method="post"> を <form action="/top" method="post"> に変更してみてください。

プロジェクト名は「jihanki」になっているのでしょうか?
そうであれば、

<form action="/jihanki/top" method="post"> も試してみてください。

投稿2017/08/11 13:22

編集2017/08/11 13:36
niciyan2486

総合スコア62

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

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

massa0413

2017/08/11 17:53

<form action="/jihanki/top" method="post">で無事呼び出せました。 ありがとうございます!
guest

0

404 エラーは「そんな URL に対応するコンテンツは知りません」です。
つまりサーブレットが「呼び出せていない」のです。

サーブレットはどこに配置されて、どの URL に紐付いているかが、正しく設定できていないのでしょう。
tomcat 上でサーブレットの配置状況を確認してください。

投稿2017/08/11 13:09

tacsheaven

総合スコア13703

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

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

massa0413

2017/08/11 17:54

勉強になる回答をいただきありがとうございます。 無事解決できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問