###前提・実現したいこと
JSP/Servletを使いログイン画面を作成しているのですが、
表題のエラーが発生し例外処理が実行されてしまいます。
サーバ:Tomcat
DB:MYSQL
SQLが間違えているとは思うのですが、
どこが間違えているか分かりません。
###発生している問題・エラーメッセージ
エラーメッセージ 重大: Servlet.service() for servlet [servlet.loginservlet] in context with path [/Library] threw exception [java.sql.SQLException: Cannot create PoolableConnectionFactory (Access denied for user ''@'localhost' to database 'library')] with root cause
###JSP
Login.jsp
1 2<%@ page import="java.sql.*,javax.naming.*,javax.sql.*" 3 contentType="text/html; charset=utf-8"%> 4<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 5<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 6<html> 7<head> 8<link rel="stylesheet" type="text/css" href="css/login.css"> 9 10<title>ログイン</title> 11</head> 12<body> 13 <form method="POST" action="loginservlet"> 14 <br> 15 <div> 16 ユーザ I D : <input type="text" name="userid" /> 17 </div> 18 <br> 19 <div> 20 パスワード : <input type="password" name="pass" /> 21 </div> 22 <br> 23 <div> 24 <button class="button" type="submit" style="float: left">ログイン</button> 25 <button class="button" type="reset">クリア</button> 26 </div> 27 28 29 </form> 30 <c:if test="${!empty requestScope['errorMessage']}"> 31 <div>${requestScope['errorMessage']}</div> 32 </c:if> 33</body>
###Servlet
loginservlet
1package servlet; 2 3import java.io.IOException; 4import java.sql.Connection; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7 8import javax.naming.Context; 9import javax.naming.InitialContext; 10import javax.servlet.ServletException; 11import javax.servlet.annotation.WebServlet; 12import javax.servlet.http.HttpServlet; 13import javax.servlet.http.HttpServletRequest; 14import javax.servlet.http.HttpServletResponse; 15import javax.servlet.http.HttpSession; 16import javax.sql.DataSource; 17 18/** 19 * Servlet implementation class loginservlet 20 */ 21@WebServlet("/loginservlet") 22public class loginservlet extends HttpServlet { 23 private static final long serialVersionUID = 1L; 24 25 /** 26 * @see HttpServlet#HttpServlet() 27 */ 28 public loginservlet() { 29 super(); 30 // TODO Auto-generated constructor stub 31 } 32 33 /** 34 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse 35 * response) 36 */ 37 protected void doGet(HttpServletRequest request, 38 HttpServletResponse response) throws ServletException, IOException { 39 // TODO Auto-generated method stub 40 } 41 42 /** 43 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 44 * response) 45 */ 46 protected void doPost(HttpServletRequest request, 47 HttpServletResponse response) throws ServletException, IOException { 48 // TODO Auto-generated method stub 49 Connection con = null; 50 PreparedStatement ps = null; 51 String sql = null; 52 ResultSet rs = null; 53 54 String userid = request.getParameter("userid"); 55 String pass = request.getParameter("pass"); 56 57 if (userid == null || userid.length() == 0) { 58 59 request.setAttribute("errorMessage", "ユーザ名が未入力です"); 60 61 this.getServletContext().getRequestDispatcher("/Login.jsp") 62 .forward(request, response); 63 } else if (pass == null || pass.length() == 0) { 64 65 request.setAttribute("errorMessage", "パスワードが未入力です"); 66 67 this.getServletContext().getRequestDispatcher("/Login.jsp") 68 .forward(request, response); 69 } else { 70 try { 71 72 Context initContext = new InitialContext(); 73 Context envContext = (Context) initContext 74 .lookup("java:comp/env"); 75 DataSource ds = (DataSource) envContext.lookup("jdbc/Library"); 76 con = ds.getConnection(); 77 78 sql = "SELECT user_id,password FROM user"; 79 80 ps = con.prepareStatement(sql); 81 82 rs = ps.executeQuery(); 83 84 boolean userResult = false; 85 boolean ad = false; 86 while (rs.next()) { 87 88 String dbuserid = rs.getString("user_id"); 89 String dbpassword = rs.getString("password"); 90 91 if (dbuserid.equals(userid) && dbpassword.equals(pass)) { 92 userResult = true; 93 /* 94 * if ("管理者".equals(rs.getString("admin"))) { ad = true; 95 * } 96 */ 97 98 } 99 } 100 101 if (userResult) { 102 103 HttpSession session = request.getSession(); 104 105 session.setAttribute("userResult", userResult); 106 session.setAttribute("admin", ad); 107 108 this.getServletContext().getRequestDispatcher("/a.jsp") 109 .forward(request, response); 110 } else { 111 112 request.setAttribute("errorMessage", "ユーザ名またはパスワードが違います"); 113 114 this.getServletContext().getRequestDispatcher("/Login.jsp") 115 .forward(request, response); 116 } 117 } catch (Exception e) { 118 119 request.setAttribute("errorMessage", "システムエラーが発生しました。"); 120 121 this.getServletContext().getRequestDispatcher("/Login.jsp") 122 .forward(request, response); 123 124 throw new ServletException(e); 125 } finally { 126 try { 127 if (rs != null) { 128 rs.close(); 129 } 130 if (ps != null) { 131 ps.close(); 132 } 133 if (con != null) { 134 con.close(); 135 } 136 } catch (Exception e) { 137 } 138 } 139 } 140 141 } 142 143} 144 145
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。