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

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

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

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

servlet

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

Q&A

解決済

1回答

4353閲覧

javaでwebアプリ ログイン処理をpostgresから取得し照合してから次の画面へ移行したいです

nanasi778

総合スコア13

JSP

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

servlet

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

0グッド

0クリップ

投稿2019/06/02 13:57

編集2019/06/03 07:33

前提・実現したいこと

javaのwebアプリでログイン処理でsqldb取得し照合したいです

現在eclipseで、動的プロジェクトをつかいログイン画面(index.jsp)のログインボタンでsql取得から照合し、次の画面(top.jsp)へいくコードを書いております。
postgressqlのデータサーバから文字取得までできてるのですが照合で躓いています。
エラーがでていなく、ためしにテスト用メインメソッドでテストしても取得した文字が一致されなくて困っております。たぶん取得したコードをnext()あたりでうまく格納されないのではと思うのですが、どなたかアドバイスいただけませんでしょうか?

追記
データベースのとこまだ解決できておりませんDAOデータ取得あたりでうまくいってないと思うのですがもしわかる方いらっしゃいましたら教えていただけると助かります。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

HTTPステータス 404 – 見つかりません。 タイプ ステータスレポート メッセージ / 説明 オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。 Apache Tomcat/9.0.17

該当のソースコード

java

1public class Login { 2 private String userId; 3 private String pass; 4 5 public Login(String userId, String pass) { 6 this.userId = userId; 7 this.pass = pass; 8 } 9 10 public String getUserId() { 11 return userId; 12 } 13 14 public String getPass() { 15 return pass; 16 } 17} 18

java

1 2public class Acount { 3 4 private String userId; 5 private String pass; 6 7 8 public Acount(String userId, String pass) { 9 this.userId = userId; 10 this.pass = pass; 11 12 13 } 14 15 public String getUserId() { 16 return userId; 17 } 18 19 public String getPass() { 20 return pass; 21 } 22 23} 24

java

1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.PreparedStatement; 4import java.sql.ResultSet; 5import java.sql.SQLException; 6 7 8public class AccountDAO { 9 // データベース接続に使用する情報 10 11 private final String url = "jdbc:postgresql://127.0.0.1:5432/"; 12 private final String user = "postgres"; 13 private final String password = "postgres"; 14 15 public Acount findByLogin(Login login) { 16 Acount acount = null; 17 18 // データベースへ接続 19 try (Connection conn = DriverManager.getConnection(url, user, password)) { 20 21 // SELECT文を準備 22 String sql = 23 24 "select * from レンタル where レンタルid = ? AND パスワード = ?"; 25 26 PreparedStatement pStmt = conn.prepareStatement(sql); 27 28 pStmt.setString(1, login.getUserId()); 29 pStmt.setString(2, login.getPass()); 30 31 // selectを実行し結果を取得 32 ResultSet rs = pStmt.executeQuery(); 33 34 // 一致したユーザーが存在した場合 35 // そのユーザーを表すAcountインスタンスを生成 36 if (rs.next()) { 37 // 結果からデータを取得 38 String userId = rs.getString("レンタルid"); 39 String pass = rs.getString("パスワード"); 40 41 acount = new Acount(userId, pass,nisu); 42 } 43 } catch (SQLException e) { 44 e.printStackTrace(); 45 return null; 46 } 47 // 見つかったユーザーまたはnullを返す 48 return null; 49 } 50} 51

java

1//テスト用のメインメゾットプログラムです 2public class AccountDAOTest { 3 public static void main(String[] args) { 4 testFindByLogin1(); // ユーザーが見つかる場合のテスト 5 testFindByLogin2(); // ユーザーが見つからない場合のテスト 6 } 7 8 public static void testFindByLogin1() { 9 Login login = new Login("1001","S02"); 10 AccountDAO dao = new AccountDAO(); 11 Acount result = dao.findByLogin(login); 12 13 if (result != null && 14 15 result.getUserId().equals("1001") && result.getPass().equals("S02")) { 16 System.out.println("findByLogin1:成功しました"); 17 } else { 18 System.out.println("findByLogin1:失敗しました"); 19 } 20 } 21 22 public static void testFindByLogin2() { 23 Login login = new Login("minato", "12345"); 24 AccountDAO dao = new AccountDAO(); 25 Acount result = dao.findByLogin(login); 26 if (result == null) { 27 System.out.println("findByLogin2:成功しました"); 28 } else { 29 System.out.println("findByLogin2:失敗しました"); 30 } 31 } 32} 33

java

1//ログイン処理 2public class LoginLogic { 3 public boolean execute(Login login) { 4 5 AccountDAO dao = new AccountDAO(); 6 Acount acount = dao.findByLogin(login); 7 8 return acount != null; 9 } 10} 11

java

1import java.io.IOException; 2 3import javax.servlet.RequestDispatcher; 4import javax.servlet.ServletException; 5import javax.servlet.annotation.WebServlet; 6import javax.servlet.http.HttpServlet; 7import javax.servlet.http.HttpServletRequest; 8import javax.servlet.http.HttpServletResponse; 9import javax.servlet.http.HttpSession; 10 11@WebServlet("/ServletLo") 12public class ServletLo extends HttpServlet { 13 private static final long serialVersionUID = 1L; 14 15 protected void doGet(HttpServletRequest request,HttpServletResponse response) 16 throws ServletException, IOException { 17 18 //フォワード 19 RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp"); 20 dispatcher.forward(request, response); 21 } 22 23 protected void doPost(HttpServletRequest request,HttpServletResponse response) 24 throws ServletException, IOException { 25 26 //リクエストパラメータ取得 27 response.setContentType("text/html; charset=UTF-8"); 28 //request.setCharacterEncoding("UTF-8"); 29 String userId = request.getParameter("userId"); 30 String pass = request.getParameter("pass"); 31 32 //ログイン処理実行 33 Login login = new Login(userId,pass); 34 LoginLogic bo = new LoginLogic(); 35 boolean result = bo.execute(login); 36 37 //ログイン処理の結果次第で処理を分析 38 if(result) { 39 //セッションスコープにユーザーidを保存 40 HttpSession session = request.getSession(); 41 session.setAttribute("userId","pass"); 42 43 //フォワード 44 RequestDispatcher dispatcher = request.getRequestDispatcher("/top.jsp"); 45 dispatcher.forward(request, response); 46 47 }else {//ログイン失敗 48 response.sendRedirect("/ログイン/ServletLo"); 49 } 50 } 51} 52

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%><!DOCTYPE html> 3<html> 4<head> 5 <meta charset="UTF-8"> 6 <title>ログイン画面</title> 7 <link rel="stylesheet" href="./style.css"> 8</head> 9<body> 10 <header class = "herder"> 11 <he>webアプリケーション</he> 12 </header> 13 <div class="box"> 14 <form action="/ログイン/ServletLo" method ="post"> 15 16 <dt>ログイン名: 17 <input type="text" name ="userId"></dt> 18 <dt>パスワード: 19 <input type="password" name ="pass"></dt> 20 21 <button type="submit">ログイン</button> 22 23 </form> 24 </div> 25 26</body> 27</html> 28 29

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%><!DOCTYPE html> 3<html> 4<head> 5 <meta charset="UTF-8"> 6 <title>トップ画面</title> 7 <link rel="stylesheet" href="./style.css"> 8</head> 9<body> 10 <header class = "herder"> 11 <he>webアプリケーション</he> 12 <nav> 13 <ul> 14 <li>ようこそ<c:out value="${userId}" /> さん</li> 15 <li><a href="/ログイン/Login">ログアウト</a></li> 16 </ul> 17 </nav> 18 </header> 19 <p class="topdis">トップ画面</p> 20 <p class="me">メニュー</p><br>. 21 22 <div class="meiti"> 23<!-- <div class="menu"><a href="userTOU.jsp"><form action="Login" method="get">ユーザー登録</a></from><br></div> --> 24 25 <div class="menu"> 26 <form action="Login" method="get"> 27 <a href="userTOU.jsp">ユーザー登録</a></from><br></div> 28 29 <div class="menu"><a href="userIR.jsp">ユーザー一覧</a><br></div> 30 31 <div class="menu"><a href="toiawase.jsp">お問い合わせ</a><br></div> 32 33 </div> 34 35</body> 36</html> 37

java

試したこと

ここに問題に対して試したことを記載してください。

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

eclipse Version: 2019-03 (4.11.0
ここにより詳細な情報を記載してください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/06/02 14:29

コードブロック冒頭はファイル名やクラス名ではなく言語名を入力してください。
nanasi778

2019/06/02 14:36

すみません、ご指摘ありがとうございます。 修正します。
退会済みユーザー

退会済みユーザー

2019/06/02 23:25

代入したaccountをリターンしてるところはどこですか?
nanasi778

2019/06/03 04:54

Loginのところです。
guest

回答1

0

ベストアンサー

そのページが見つからない、言っているのでページが存在しているか、そのページが存在しているところを本当に示しているかチェックしてみてください。

投稿2019/06/03 00:26

ices_sinon

総合スコア479

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問