LoginSignup
ohayou1025
@ohayou1025

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

eclipseでサーブレットクラスを実行できません。

解決したいこと

eclipseでサーブレットクラスを実行できません。

「スッキリわかるサーブレット&JSP入門第4版」という書籍を参考にし、
eclipseで「動的Webプロジェクトの作成」→「サーブレットクラスの作成」→「サーブレットクラスの実行」という流れで進めてきたのですが、

eclipseでサーブレットクラス(UranaiServlet.java)で右クリック、「実行」→「サーバーで実行」をすると、
URLが「http://localhost:8080/example/WEB-INF/classes/servlet/UranaiServlet.java」となってしまい、404エラーが出てしまいます。

手打ちで「http://localhost:8080/example/UranaiServlet」とすれば、問題なく動きます。

「WEB-INF」ディレクトリ以下だと、ブラウザから直接リクエストできないというのは分かりましたが、
eclipseで「サーバーから実行」をすると、「http://localhost:8080/example/WEB-INF/classes/servlet/UranaiServlet.java」のパスになってしまう理由が分かりません。

以下は「UranaiServlet.java」です。

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

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

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 運勢をランダムで決定
String[] luckArray = { "超スッキリ", "スッキリ", "最悪" };
int index = (int) (Math.random() * 3);
String luck = luckArray[index];
// 実行日を取得
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日");
String today = sdf.format(date);

// HTMLを出力
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<meta charset=\"UTF-8\" />");
out.println("<title>スッキリ占い</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>" + today + "の運勢は「" + luck + "」です</p>");
out.println("</body>");
out.println("</html>");

}
}

スクリーンショット (1).jpg

0

2Answer

スッキリわかるサーブレット&JSP入門 第4版をご購入いただき誠にありがとうございます。著者の国本です。

確認したところ、Eclipseのバージョンが2024(2024-03)だと、同じ現象が再現いたしました。

2023(2023-12)をインストールしてやり直していただいたら、解決すると思います。お手数をおかけして誠に申し訳ございません。

今後もスッキリわかるシリーズをどうぞよろしくお願いいたします。

0

スッキリわかるサーブレット&JSP入門 第4版をご購入いただき誠にありがとうございます。著者の国本です。

確認したところ、Eclipseの新バージョン(2024-03)だと、同じ現象が再現いたしました。新バージョンによって生まれたEclipseの不具合と思われます。

本書で推奨している2023-12バージョンをインストールしてやり直していただいたら、解決すると思います。お手数をおかけして誠に申し訳ございません。

今後もスッキリわかるシリーズをどうぞよろしくお願いいたします。

0

Your answer might help someone💌