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

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

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

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

JSP

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

Java

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

servlet

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

解決済

修正DBから抽出したデータをjspで表示したい

EmaS
EmaS

総合スコア0

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

JSP

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

Java

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

servlet

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

2回答

0評価

0クリップ

1993閲覧

投稿2020/08/01 04:58

編集2022/01/12 10:58

Login機能を作っているのですが、DBから抽出したデータを画面で表示ができません。
どなたか、お知恵をおかし頂けないでしょうか?問題解決が出来なくて困っています。。
###前提・実現

・前提:
1:AP:Tomcat
2: JSP and Servletを使用
3:Account And Password の入力check
4:以下のSQLを使用してデータの抽出をすること
"Select NAME , ID from USER where ACCOUNT =? And PASWORD =? And DELETE_FLAG=0 "
5:検索処理エラーの場合、"error has occured in login-process"と表示
6:検索結果が0件の場合、"UserName or PW is wrong"と表示

・実現:
DBから抽出した値をlogin_home.jsp画面で表示したい。

できないこと
1:DBからデータの抽出データUserdtoクラスの各フィールド(name and userid)に値を保持していて、その値を取得してlogin_home画面で表示

###わからないこと
1:debugしてname and userid field にそれぞれdbから抽出したデータが入っていることを確認済みなのですが、何故か結果が表示されるないのかがわからない
見直しても上手く動いてくれません。
###SQL(Create and Insert )

SQL

Create Table =============== CREATE TABLE USER ( ID NUMBER(3,0) ,ACCOUNT VARCHAR2(50) not null ,NAME VARCHAR2(60) ,PASSWORD VARCHAR2(50) ,ADMIN_FLAG char(1) ,DELETE_FLAG char(1) ,REGIST_DATE date DEFAULT SYSDATE ,UPDATE_DATE date ,CONSTRAINT MST_USER_PK PRIMARY KEY(ID) ,CONSTRAINT MST_USER_UK UNIQUE (ACCOUNT)); ==============================================--- Insert: INSERT INTO USER(ID, ACCOUNT,NAME,PASSWORD,ADMIN_FLAG,DELETE_FLAG) VALUES (003,'jsp123@gmail.com','Grace','Grace12334567', '0','0');

###Jsp

<%@ page contentType="text/html;charset=UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Context-Type" content="text/html;charset=UTF-8"> <title>ログインホーム画面</title> <link rel="stylesheet" href="../css/login_home.css"> </head> <body> <form name="Logout" method="post" action="/Login/jsp/login.jsp"> <label><span class="login_home">Login-HOME</span> </label><br> <p> <% String id = (String)session.getAttribute("UserID"); %> </p> <p> <%=id %> </p> <p> <% String name= (String) session.getAttribute("NAME"); %> </p> <p> <%=name %> </p> <table class="form_area"> <tr> <td>ユーザーID</td> </tr> <tr> <td>ユーザー名</td> </tr> </table> <br /> <div class="button_area"> <input class="logout " type="submit" value="Logout" /> <%if(session.getAttribute("userInfo")!=null){ %> <%session.invalidate(); %> <% }%> </div> </form> </body> </html>

###Dto

java

public class UserDto { /* UserAccount */ private String account; /* UserID */ private int userid; /* Password */ private String password; /* UserName */ private String name; /* getter */ public String getACCOUNT() { return account; } public int getUserID() { return userid; } public String getPASSWORD() { return password; } public String getUserName() { return name; } /* setter */ public void setACCOUNT(String account) { this.account = account; } public void setUserID(int userid) { this.userid = userid; } public void setPASSWORD(String password) { this.password = password; } public void setUserName(String name) { this.name = name; }

###Dao

Java

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import LoginCheckServlet; import userDto.UserDto; public class LoginDao { // DB connection private static final String HOSTNAME = "0.0.0.0"; private static final String USERNAME = "*****"; private static final String PW = "********"; private static final String SID = "XE"; private static final String URL = "jdbc:oracle:thin:@"; private static final String SQL = "Select NAME , ID from USER where ACCOUNT =? And PASSWORD =? And DELETE_FLAG=0 "; public UserDto Search(String userAcc, String pw) throws SQLException, Exception { ResultSet rs; UserDto userDto = null; try (Connection con = this.getConnection(); PreparedStatement ps = con.prepareStatement(SQL)) { ps.setString(1, userAcc); ps.setString(2, pw); rs = ps.executeQuery(); while (rs.next()) { userDto = new UserDto(); userDto.setUserID(rs.getInt("ID")); userDto.setUserName(rs.getString("NAME")); } } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { System.exit(1); } return userDto; } private Connection getConnection() throws SQLException, ClassNotFoundException { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con = DriverManager.getConnection(URL + HOSTNAME + ":1521:" + SID, USERNAME, PW); return con; } public static void main(String args[]) { } }

###Servlet

@WebServlet("/LoginServlet") public class LoginCheckServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final byte MAX = 50; /** * @see HttpServlet#HttpServlet() */ public LoginServlet() { super(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Start session HttpSession session = request.getSession(); String userAcc = request.getParameter("UserAcc"); String pw = request.getParameter("PW"); if (!(checkUser(userAcc) && checkPW(pw))) { request.setAttribute("ErrorMessage", errorMessage); // login.jspに遷移 RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/login.jsp"); dispatcher.forward(request, response); return; } LoginDao dao = new LoginDao(); try {  UserDto dto= dao.Search(userAcc, pw);               String name = dto.getUserName();//Return Null int userid = dto.getUserID();//return 0 if (name != null) { session.setAttribute("Name", name); session.setAttribute("UserID", userid); RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/login_home.jsp"); dispatcher.forward(request, response); } else { request.setAttribute("ErrorMessage", "UserAcc or PW is wrong"); RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/login.jsp"); dispatcher.forward(request, response); return; } } catch (Exception e) { e.printStackTrace(); } } String errorMessage; public boolean checkUser(String userAcc) { if (userAcc == null || userAcc.isEmpty()) { this.errorMessage = "Please type in your UserAcc"; return false; } if (userAcc.getBytes().length > MAX) { this.errorMessage = "UserAcc should be typed in less than 50 bytes"; return false; } return true; } public boolean checkPW(String pw) { if (pw == null || pw.isEmpty()) { this.errorMessage = "Please type in your PW"; return false; } if (pw.getBytes().length > MAX) { this.errorMessage = "Please type in your PW less than 50 byte"; return false; } return true; } }

###解決したいこと
・Login_home.jspに遷移してDBから抽出したデータを表示したい......Done
・UserDtoクラスの各フィールドにDBから抽出した値を取得.......Done
・Error回避

###試したこと
以下のコードで値を取得して各変数に入れようとしていますが、上手く行きませんでした。(dbから抽出した値を取得できなかった)
UserDto dto = new UserDto();

String name = dto.getUserName();
int userid = dto.getUserID();

###追記
Debugした結果
各フィールドに値を保持していますが、やっぱりNull and 0がかえります。
userid
name
###Error
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Stringが発生してしまいました。
Login_home.jsp

JSP

13: <p> 14: <% 15: String id = (String)session.getAttribute("UserID");//ここでError 16: %> 17: </p> 18: <p>

###期待結果
login_home画面
ユーザID 3
ユーザ名 Grace

###補足情報
Oracle 18c
Java 1.8
Tomcat_version_9
Eclipse を使用

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

JSP

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

Java

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

servlet

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