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

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

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

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

Java

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Eclipse

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

servlet

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

解決済

Java Servlet & Jsp ログイン証認 "HTTPステータス 500 – Internal Server Error"が出て困っています。お力をお貸しください!!

RYU
RYU

総合スコア10

JSP

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

Java

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Eclipse

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

servlet

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

1回答

0評価

1クリップ

863閲覧

投稿2022/07/19 14:44

編集2022/07/20 23:01

前提

現在、簡易的なログイン証認機能の実装をしているのですが、サーバーで実行した際に”HTTPステータス 500 – Internal Server Error”が出てしまい困っています。
色々と試しましたが、自分では解決できないと判断し、質問させて頂くことにしました。
ご教授頂ければ幸いです。宜しくお願いします。

試したこと

・クラスパスにあるJarファイルを除去。libフォルダに直接配置。(ネットで調べた出てきた解決策)
・ファイル名、ファイル構造の見直し。

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

コンソール
イメージ説明

ブラウザ
イメージ説明

該当のソースコード

index.jsp

Java

<%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>ログイン画面</title> </head> <body> <form action="certification" method="post"> <table> <tr> <td >メール</td> <td><input type="text" name="mail" maxlength="256"/></td> </tr> <tr> <td>パスワード</td> <td><input type="password" name="password" maxlength="32"/></td> </tr> <tr> <td> <input type="submit" name="submit" value="ログイン"/> </td> </tr> </table> <p> <c:if test="${!empty errorMessages}"> <font color="red">名前かパスワードが違います。<br>再度入力して下さい。</font> </c:if> </form> </body> </html>

LoginServlet.java

Java

package servlet; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; 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 beans.LoginBean; @WebServlet(urlPatterns = {"/certification"}) public class LoginServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { try { String sql = "SELECT name FROM imada.login WHERE mail = ? AND password = ?"; Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/imada?serverTimezone=Asia/Tokyo","root","***"); --パスワードはあえて伏せています。 PreparedStatement ps = connection.prepareStatement(sql); LoginBean bean = new LoginBean(); bean.setMail(request.getParameter("mail")); bean.setPassword(request.getParameter("password")); ps.setString(1,bean.getMail()); ps.setString(2,bean.getPassword()); ResultSet rs = ps.executeQuery(); List<LoginBean> user = toUserList(rs); if (user.isEmpty() == true) { List<String> messages = new ArrayList<String>(); messages.add("ログインに失敗しました。"); request.setAttribute("errorMessages", messages); getServletContext().getRequestDispatcher("/index.jsp").forward(request,response); } else if (2 <= user.size()) { throw new IllegalStateException("2 <= userList.size()"); } else { request.getSession().setAttribute("login", user.get(0)); getServletContext().getRequestDispatcher("/certification.jsp").forward(request,response); } rs.close(); ps.close(); connection.close(); } catch (Exception e) { e.printStackTrace(); } } private List<LoginBean> toUserList(ResultSet rs) throws SQLException{ List<LoginBean> ret = new ArrayList<LoginBean>(); try { while (rs.next()) { String name = rs.getString("name"); LoginBean user = new LoginBean(); user.setName(name); ret.add(user); } } catch (Exception e) { e.printStackTrace(); } return ret; } }

LogoutServlet.java

Java

package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = {"/logout"}) public class LogoutServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { try{ request.getSession().invalidate(); }catch(Exception e){ throw new ServletException(e); } getServletContext().getRequestDispatcher("/index.jsp").forward(request,response); } }

certification.java

Java

<%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> <html> <head> <title>認証画面</title> </head> <body> <table> <tr> <td> ようこそ${login.name}さん。 </td> </tr> <tr> <td> <form action="logout" method="post"> <input type="submit" name="submit" value="ログアウト"/> </form> </td> </tr> </table> </body> </html>

LoginBean.java

Java

package beans; public class LoginBean{ private String mail; private String password; private String name; public void setMail(String mail){ this.mail = mail; } public String getMail(){ return mail; } public void setPassword(String password){ this.password = password; } public String getPassword(){ return password; } public void setName(String name){ this.name = name; } public String getName(){ return name; } }

web.xml

<?xml version="1.0" encoding="Windows-31J"?> <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee_9.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" version="5.0"> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>servlet.LoginServlet</servlet-class> </servlet> <servlet> <servlet-name>LogoutServlet</servlet-name> <servlet-class>servlet.LogoutServlet</servlet-class> </servlet> <servlet> <servlet-name>LoginBean</servlet-name> <servlet-class>beans.LoginBean</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/servlet/LoginServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LogoutServlet</servlet-name> <url-pattern>/servlet/LogoutServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LoginBean</servlet-name> <url-pattern>/beans/LoginBean</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

補足情報(FW/ツールのバージョンなど)

Windows - 10
Microsoft Edge - 103.0.1264.62
Java - 17
Tomcat - 9
MySQL -8.0
mysql-connector-java - 8.0.29


現在のファイル構造
イメージ説明

ビルドパス
イメージ説明

環境変数
イメージ説明

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

K_3578

2022/07/20 01:51

NoClassDefFoundErrorなんだからファイル名が誤ってるかファイルがそもそもないのでは
RYU

2022/07/20 02:00

そうですよね、自分ではどのファイル名が間違っているのか、何のファイルが足りないのかがいまいちわからなくて、、、 もう少し調べてみます。アドバイスありがとうございます。
dodox86

2022/07/20 02:24

> 色々と試しましたが、 具体的に何を試しましたか? 回答やコメントが重複することもあり、そんな場合は無駄な時間を過ごすことになるので、きちんと説明しましょう。 私の方では精査はしていませんがエラーの内容として以下の質問内容とかぶるようです。こちらが参考になりませんか。 [JSTLを用いたjspで起こるエラーを解決したい] https://teratail.com/questions/350891
RYU

2022/07/20 02:57

はい、投稿の方に追記しようと思います。 URLありがとうございます。確認してみます。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JSP

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

Java

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Eclipse

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

servlet

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