前提・実現したいこと
ここに質問の内容を詳しく書いてください。
javaを学習中の初心者です。javaでログイン機能を作っています。MVCモデルを一応意識して作りたいと考えています。
発生している問題・エラーメッセージ
eclips上で目立ったエラーメッセージは無いのですが、上手くログイン処理ができていない状態です。
具体的には、TopPage.jspを表示するところまではできています。そこからデータベースにあらかじめ登録しておいた情報を入力してもResult.jspには移動せず、TopPage.jspのままになります。URLはtoppageからLoginServletに変わっています。eclipsのコンソールを見ましたが異常はなかったと思います。
<トップページ>
<情報入力後>
該当のソースコード
java
1package model; 2 3public class LoginBean { 4 5 private int id; 6 private String name; 7 private String password; 8 9 public int getId() { 10 return id; 11 } 12 public void setId(int id) { 13 this.id = id; 14 } 15 public String getName() { 16 return name; 17 } 18 public void setName(String name) { 19 this.name = name; 20 } 21 public String getPassword() { 22 return password; 23 } 24 public void setPassword(String password) { 25 this.password = password; 26 } 27}
java
1package model; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8 9public class LoginDBdao { 10 private Connection con = null; 11 private ResultSet rs = null; 12 private PreparedStatement ps = null; 13 14 private String url = "jdbc:mysql://localhost:3306/loginmaster?characterEncoding=UTF-8&serverTimezone=JST&autoReconnect=true&useSSL=false"; 15 private String user = "user"; 16 private String pass = "password"; 17 18 public LoginBean select() throws SQLException { 19 LoginBean bean = new LoginBean(); 20 21 try { 22 //JDBCドライバ 23 Class.forName("com.mysql.jdbc.Driver"); 24 25 //DB接続 26 con = DriverManager.getConnection(url, user, pass); 27 28 //SQL文 29 ps = con.prepareStatement("select * from loginmaster"); 30 31 //SQL文の実行 32 rs = ps.executeQuery(); 33 34 if (!rs.next()) { 35 return null; 36 } 37 38 bean.setName(rs.getString("name")); 39 bean.setPassword(rs.getString("password")); 40 41 } catch (ClassNotFoundException e) { 42 // TODO 自動生成された catch ブロック 43 e.printStackTrace(); 44 } 45 return bean; 46 } 47 48 //DB切断 49 public void close() { 50 try { 51 if (con != null) { 52 con.close(); 53 } 54 if (ps != null) { 55 ps.close(); 56 } 57 if (rs != null) { 58 rs.close(); 59 } 60 } catch (SQLException e) { 61 e.printStackTrace(); 62 } 63 }} 64
java
1package controller; 2 3import java.io.IOException; 4 5import javax.servlet.RequestDispatcher; 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11 12@WebServlet("/toppage") 13public class TopPageServlet extends HttpServlet { 14 private static final long serialVersionUID = 1L; 15 16 17 public TopPageServlet() { 18 super(); 19 } 20 21 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 22 RequestDispatcher rd = request.getRequestDispatcher("/view/TopPage.jsp"); 23 rd.forward(request, response); 24 } 25 26 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 27 // TODO Auto-generated method stub 28 doGet(request, response); 29 } 30 31}
java
1<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2<!DOCTYPE html> 3<html lang="ja"> 4 <head> 5 <meta charset="UTF-8"> 6 <title>ログイン</title> 7 </head> 8 9 <body> 10 <h1>ログイン</h1> 11 <form action="LoginServlet" method="post"> 12 <label>名前</label><br> 13 <input type="text" name="name"><br> 14 15 <label>パスワード</label><br> 16 <input type="text" name="password"><br> 17 18 <input type="submit" value="送信する"> 19 20 </form> 21 </body> 22</html>
java
1package controller; 2 3import java.io.IOException; 4import java.sql.SQLException; 5 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11import javax.servlet.http.HttpSession; 12 13import model.LoginBean; 14import model.LoginDBdao; 15 16@WebServlet("/LoginServlet") 17public class LoginServlet extends HttpServlet { 18 private static final long serialVersionUID = 1L; 19 20 public LoginServlet() { 21 super(); 22 } 23 24 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 25 String name = request.getParameter("name"); 26 String password = request.getParameter("password"); 27 28 LoginDBdao dao = new LoginDBdao(); 29 LoginBean bean = null; 30 try { 31 bean = dao.select(); 32 } catch (SQLException e) { 33 // TODO 自動生成された catch ブロック 34 e.printStackTrace(); 35 } 36 37 38 boolean Login = (bean != null && name.equals(bean.getName()) && password.equals(bean.getPassword())); 39 HttpSession session = request.getSession(); 40 session.setAttribute("Login", Login); 41 42 if(Login){ 43 request.getRequestDispatcher("/view/Result.jsp").forward(request, response); 44 }else{ 45 request.getRequestDispatcher("/view/TopPage.jsp").forward(request, response); 46 } 47 } 48 49} 50
java
1<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2<!DOCTYPE html> 3<html lang="ja"> 4 <head> 5 <meta charset="UTF-8"> 6 <title>Insert title here</title> 7 </head> 8 <body> 9 <h1>ようこそ</h1> 10 11 </body> 12</html>
試したこと
ネットと書籍で調べようと思ったのですが、エラーもないので上手く調べられませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
eclipsで書いています。
Java EEを使用しています。
データベースはMySQLです。
追記
質問についての改善のご指摘ありがとうございます。質問すらまともにできておらずすみませんでした。また、至らない点があればご指摘よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー