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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

0回答

1902閲覧

java.lang.ClassCastExceptionが解決できない。

shimchan

総合スコア15

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/10/26 14:08

編集2020/10/26 14:25

自己学習の中で勤怠管理システムを開発していまして、エラーメッセージが何日も解決しなかったため、質問させていただきます。

現状:ユーザー登録完了後、データベースにユーザー情報をinsert文で処理しようとした時にjava.lang.ClassCastExceptionエラーが出てしまいます。

ソースコードとエラー文は以下となっております。コメントアウトしている部分が多くてすみません。見づらいかもしれませんが、よろしくお願いします。
ちなみになのですが、eclipseのDBViewerでは正常にユーザー情報がinsertされています。

TopMenuServlet

1package Topmenu; 2 3import java.io.IOException; 4import java.util.Random; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12import javax.servlet.http.HttpSession; 13 14import Beans.UserBean; 15import DAO.UserDAO; 16 17@WebServlet("/Topmenu/TopMenuServlet") 18public class TopMenuServlet extends HttpServlet { 19 private static final long serialVersionUID = 1L; 20 21 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 22 request.setCharacterEncoding("UTF-8"); 23 String forwardPath = null; 24 String action = request.getParameter("action"); 25 26 if(action.equals("login")){ 27 forwardPath = "/WEB-INF/topmenu_op/login.jsp"; 28 }else if(action.equals("register")){ 29 forwardPath = "/WEB-INF/topmenu_op/register_start.jsp"; 30 }else if(action.equals("topmenu")){ 31 forwardPath = "/Topmenu.jsp"; 32 }else if(action.equals("topmenu_logout")){ 33 HttpSession session = request.getSession(true); 34 session.invalidate(); 35 forwardPath = "/Topmenu.jsp"; 36 } 37 RequestDispatcher dispatcher = request.getRequestDispatcher(forwardPath); 38 dispatcher.forward(request, response); 39 } 40 41 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 42 request.setCharacterEncoding("UTF-8"); 43 HttpSession session = request.getSession(); 44 Random rand = new Random(); 45 String forwardPath = null; 46 String action = request.getParameter("action"); 47 48 if(action.equals("register_end")){ 49 UserBean user_ = new UserBean(); 50 51 String name = request.getParameter("name"); 52 user_.setName(name); 53 54 String sex = request.getParameter("sex"); 55 user_.setSex(sex); 56 57 String year = request.getParameter("year"); 58 String month = request.getParameter("month"); 59 String day = request.getParameter("day"); 60 String birth_date = year + "年" + month + "月" + day + "日"; 61 62 63 user_.setBirth_date(birth_date); 64 65 int age = Integer.parseInt(request.getParameter("age")); 66 user_.setAge(age); 67 68 String attach = request.getParameter("attach"); 69 user_.setAttach(attach); 70 71 String pass = request.getParameter("pass"); 72 user_.setPass(pass); 73 74 int id = rand.nextInt(90000000)+10000000; 75 user_.setId(id); 76 77 System.out.println(user_.getName()); 78 System.out.println(user_.getSex()); 79 System.out.println(user_.getBirth_date()); 80 System.out.println(user_.getAge()); 81 System.out.println(user_.getAttach()); 82 System.out.println(user_.getPass()); 83 System.out.println(user_.getId()); 84 85 UserDAO user = new UserDAO(); 86 user.insertUser(user_); 87 session.setAttribute("user", user); 88 89 forwardPath = "/WEB-INF/topmenu_op/register_end.jsp"; 90 91 } 92 93 RequestDispatcher dispatcher = request.getRequestDispatcher(forwardPath); 94 dispatcher.forward(request, response); 95 } 96} 97 98 99

UserDAO

1package DAO; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9import java.util.List; 10 11import Beans.UserBean; 12/*参照処理*/ 13public class UserDAO { 14 Connection conn = null; 15 private static final String URL 16 = "jdbc:mysql://localhost:3306/user?characterEncoding=UTF-8&serverTimezone=JST"; 17 private static final String USER = "root"; 18 private static final String PASS = "○○○○○";←伏せておきます。 19 20public List<UserBean> findAll() { 21 List<UserBean> userList = new ArrayList<>(); 22 23 try{ 24 Class.forName("com.mysql.jdbc.Driver"); 25 conn = DriverManager.getConnection(URL, USER, PASS); 26 String SQL = "select * from user;"; 27 PreparedStatement ps = conn.prepareStatement(SQL); 28 29 ResultSet rs = ps.executeQuery(); 30 31 while (rs.next()) { 32 UserBean ub = new UserBean(); 33 ub.setName(rs.getString("name")); 34 ub.setSex(rs.getString("sex")); 35 ub.setBirth_date(rs.getString("birth_date")); 36 ub.setAge(rs.getInt("age")); 37 ub.setAttach(rs.getString("attach")); 38 ub.setPass(rs.getString("pass")); 39 ub.setId(rs.getInt("id")); 40 userList.add(ub); 41 } 42 } catch (SQLException e) { 43 e.printStackTrace(); 44 } catch (Exception e) { 45 e.printStackTrace(); 46 } finally{ 47 } 48 return userList; 49} 50/*挿入処理*/ 51public void insertUser(UserBean ub) { 52 try{ 53 conn = DriverManager.getConnection(URL, USER, PASS); 54 String SQL = "insert into user(name,sex,birth_date,age,attach,pass,id) values(?,?,?,?,?,?,?);"; 55 PreparedStatement ps = conn.prepareStatement(SQL); 56 57 ps.setString(1, ub.getName()); 58 ps.setString(2,ub.getSex()); 59 ps.setString(3,ub.getBirth_date()); 60 ps.setInt(4, ub.getAge()); 61 ps.setString(5, ub.getAttach()); 62 ps.setString(6, ub.getPass()); 63 ps.setInt(7, ub.getId()); 64 65 ps.executeUpdate(); 66 67 } catch (SQLException e) { 68 e.printStackTrace(); 69 } 70} 71/*選択処理*/ 72public UserBean findUser(int id,String pass) { 73 UserBean ub = new UserBean(); 74 try{ 75 conn = DriverManager.getConnection(URL, USER, PASS); 76 String SQL = "SELECT * from user where id = ? and pass = ?"; 77 PreparedStatement ps = conn.prepareStatement(SQL); 78 79 ps.setInt(1, id); 80 ps.setString(2,pass); 81 82 ResultSet rs = ps.executeQuery(); 83 84 if(rs.next()) { 85 ub.setName(rs.getString("name")); 86 ub.setSex(rs.getString("sex")); 87 ub.setBirth_date(rs.getString("birth_date")); 88 ub.setAge(rs.getInt("age")); 89 ub.setAttach(rs.getString("attach")); 90 ub.setPass(rs.getString("pass")); 91 ub.setId(rs.getInt("id")); 92 }else{ 93 return null; 94 } 95} catch (SQLException e) { 96 e.printStackTrace(); 97 return null; 98} 99 return ub; 100} 101} 102

UserBean

1package Beans; 2 3import java.io.Serializable; 4 5public class UserBean implements Serializable { 6 7 private String name; 8 9 private String sex; 10 11 private String birth_date; 12 13 private int age; 14 15 private String attach; 16 17 private String pass; 18 19 private int id; 20 21 public UserBean(){} 22 23 public String getName() { 24 return name; 25 } 26 27 public void setName(String name) { 28 this.name = name; 29 } 30 31 public String getSex() { 32 return sex; 33 } 34 35 public void setSex(String sex) { 36 this.sex = sex; 37 } 38 39 public String getBirth_date() { 40 return birth_date; 41 } 42 43 public void setBirth_date(String birth_date) { 44 this.birth_date = birth_date; 45 } 46 47 public int getAge() { 48 return age; 49 } 50 51 public void setAge(int age) { 52 this.age = age; 53 } 54 55 public String getAttach() { 56 return attach; 57 } 58 59 public void setAttach(String attach) { 60 this.attach = attach; 61 } 62 63 public String getPass() { 64 return pass; 65 } 66 67 public void setPass(String pass) { 68 this.pass = pass; 69 } 70 71 public int getId() { 72 return id; 73 } 74 75 public void setId(int id) { 76 this.id = id; 77 } 78} 79

errorMessage1

1HTTPステータス 500 - java.lang.ClassCastException: DAO.UserDAO cannot be cast to Beans.UserBean 2 3 4type 例外レポート 5 6メッセージ java.lang.ClassCastException: DAO.UserDAO cannot be cast to Beans.UserBean 7 8説明 The server encountered an internal error that prevented it from fulfilling this request. 9 10例外 11org.apache.jasper.JasperException: java.lang.ClassCastException: DAO.UserDAO cannot be cast to Beans.UserBean 12 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549) 13 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) 14 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 15 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 16 javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 17 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 18 Topmenu.TopMenuServlet.doPost(TopMenuServlet.java:94) 19 javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 20 javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 21 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 22 23 24 25原因 26java.lang.ClassCastException: DAO.UserDAO cannot be cast to Beans.UserBean 27 org.apache.jsp.WEB_002dINF.topmenu_005fop.register_005fend_jsp._jspService(register_005fend_jsp.java:65) 28 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 29 javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 30 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 31 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 32 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 33 javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 34 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 35 Topmenu.TopMenuServlet.doPost(TopMenuServlet.java:94) 36 javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 37 javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 38 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 39 40 41 42注意 原因のすべてのスタックトレースは、Apache Tomcat/7.0.47のログに記録されています 43 44 45Apache Tomcat/7.0.47

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

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

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

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

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

YT0014

2020/10/26 16:24

userテーブルの詳細を、create table 文にて、ご提示ください。 また、開発ツールのデバッグ機能で、insertUser()をステップ実行するなどにて、実際にcast例外が発生している行を特定してみてください。
xebme

2020/10/26 17:19

JSPでセッションの情報をgetAttribute("user")していますが、キャスト失敗。サーブレットを修正してください。アンダースコアを付けること。 誤 session.setAttribute("user", user); 正 session.setAttribute("user", user_);
shimchan

2020/10/27 01:09

YT0014さん 了解しました。デバック機能を用いて確認してみます。 xebmeさん 指摘部分を確認したところ正常に機能しました。セッションとして渡す情報が謝っていたためキャスト失敗してしまっていたんですね、今後必ずつまずくかと思いますので、しっかりと確認していきたいと思います。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問