前提
現在、簡易的なログイン証認機能の実装をしているのですが、サーバーで実行した際に”HTTPステータス 500 – Internal Server Error”が出てしまい困っています。
色々と試しましたが、自分では解決できないと判断し、質問させて頂くことにしました。
ご教授頂ければ幸いです。宜しくお願いします。
試したこと
・クラスパスにあるJarファイルを除去。libフォルダに直接配置。(ネットで調べた出てきた解決策)
・ファイル名、ファイル構造の見直し。
発生している問題の詳細・エラーメッセージ
コンソール

ブラウザ

該当のソースコード
index.jsp
Java
1<%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> 2<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3<html> 4<head> 5<title>ログイン画面</title> 6</head> 7<body> 8<form action="certification" method="post"> 9<table> 10<tr> 11<td >メール</td> 12<td><input type="text" name="mail" maxlength="256"/></td> 13</tr> 14<tr> 15<td>パスワード</td> 16<td><input type="password" name="password" maxlength="32"/></td> 17</tr> 18<tr> 19<td> 20<input type="submit" name="submit" value="ログイン"/> 21</td> 22</tr> 23</table> 24<p> 25<c:if test="${!empty errorMessages}"> 26<font color="red">名前かパスワードが違います。<br>再度入力して下さい。</font> 27</c:if> 28</form> 29</body> 30</html>
LoginServlet.java
Java
1package servlet; 2 3import java.io.IOException; 4import java.sql.Connection; 5import java.sql.DriverManager; 6import java.sql.PreparedStatement; 7import java.sql.ResultSet; 8import java.sql.SQLException; 9import java.util.ArrayList; 10import java.util.List; 11 12import javax.servlet.ServletException; 13import javax.servlet.annotation.WebServlet; 14import javax.servlet.http.HttpServlet; 15import javax.servlet.http.HttpServletRequest; 16import javax.servlet.http.HttpServletResponse; 17 18import beans.LoginBean; 19 20@WebServlet(urlPatterns = {"/certification"}) 21public class LoginServlet extends HttpServlet{ 22 private static final long serialVersionUID = 1L; 23 @Override 24 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 25 try { 26 String sql = "SELECT name FROM imada.login WHERE mail = ? AND password = ?"; 27 Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/imada?serverTimezone=Asia/Tokyo","root","***"); --パスワードはあえて伏せています。 28 PreparedStatement ps = connection.prepareStatement(sql); 29 LoginBean bean = new LoginBean(); 30 bean.setMail(request.getParameter("mail")); 31 bean.setPassword(request.getParameter("password")); 32 ps.setString(1,bean.getMail()); 33 ps.setString(2,bean.getPassword()); 34 ResultSet rs = ps.executeQuery(); 35 List<LoginBean> user = toUserList(rs); 36 if (user.isEmpty() == true) { 37 List<String> messages = new ArrayList<String>(); 38 messages.add("ログインに失敗しました。"); 39 request.setAttribute("errorMessages", messages); 40 getServletContext().getRequestDispatcher("/index.jsp").forward(request,response); 41 } else if (2 <= user.size()) { 42 throw new IllegalStateException("2 <= userList.size()"); 43 } else { 44 request.getSession().setAttribute("login", user.get(0)); 45 getServletContext().getRequestDispatcher("/certification.jsp").forward(request,response); 46 } 47 rs.close(); 48 ps.close(); 49 connection.close(); 50 51 } catch (Exception e) { 52 e.printStackTrace(); 53 } 54 } 55 private List<LoginBean> toUserList(ResultSet rs) throws SQLException{ 56 List<LoginBean> ret = new ArrayList<LoginBean>(); 57 try { 58 while (rs.next()) { 59 String name = rs.getString("name"); 60 LoginBean user = new LoginBean(); 61 user.setName(name); 62 ret.add(user); 63 } 64 } catch (Exception e) { 65 e.printStackTrace(); 66 } 67 return ret; 68 } 69} 70
LogoutServlet.java
Java
1package servlet; 2 3import java.io.IOException; 4 5import javax.servlet.ServletException; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11@WebServlet(urlPatterns = {"/logout"}) 12public class LogoutServlet extends HttpServlet{ 13 private static final long serialVersionUID = 1L; 14 @Override 15 protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { try{ 16 request.getSession().invalidate(); 17 }catch(Exception e){ 18 throw new ServletException(e); 19 } 20 getServletContext().getRequestDispatcher("/index.jsp").forward(request,response); 21 } 22 23}
certification.java
Java
1<%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> 2<html> 3<head> 4<title>認証画面</title> 5</head> 6<body> 7<table> 8<tr> 9<td> 10ようこそ${login.name}さん。 11</td> 12</tr> 13<tr> 14<td> 15<form action="logout" method="post"> 16<input type="submit" name="submit" value="ログアウト"/> 17</form> 18</td> 19</tr> 20</table> 21</body> 22</html>
LoginBean.java
Java
1package beans; 2public class LoginBean{ 3 private String mail; 4 private String password; 5 private String name; 6 public void setMail(String mail){ 7 this.mail = mail; 8 } 9 public String getMail(){ 10 return mail; 11 } 12 public void setPassword(String password){ 13 this.password = password; 14 } 15 public String getPassword(){ 16 return password; 17 } 18 public void setName(String name){ 19 this.name = name; 20 } 21 public String getName(){ 22 return name; 23 } 24}
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
現在のファイル構造

ビルドパス

環境変数


回答1件
あなたの回答
tips
プレビュー