前提・実現したいこと
ここに質問の内容を詳しく書いてください。
いつもお世話になっております。
現在、Javaで開発を行っているのですが、下記問題が発生しています。
DbaccessクラスでUserinformationdtoクラスのフィールドに値を格納し、UserconfimationクラスでUserinformationdtoクラスの
フィールドをUserconfimationクラスの「System.out.println(this.userInfDto.getUser());」で確認しようとしたのですが、
そのタイミングで「nullpointerexception」が発生しました。
個人的には恐らくフィールドの初期化タイミングを理解していないことが原因だとは考えているのですが、調べてもいまいちピンと
来ませんでしたので今回質問させていただきました。
どなたかご存知の方がいましたらご教授お願い致します。
私自身Javaは現在勉強し始めたばかりなので今回の原因が初歩的なものだとしたら申し訳ありません。
発生している問題・エラーメッセージ
フィールド参照時にNullの為、「nullpointerexception」が発生
java.lang.NullPointerException at jp.co.controller.todo.Userconfirmation.doPost(Userconfirmation.java:39) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
該当のソースコード
Java
1package jp.co.controller.todo; 2 3import java.io.IOException; 4 5import javax.servlet.ServletException; 6import javax.servlet.http.HttpServlet; 7import javax.servlet.http.HttpServletRequest; 8import javax.servlet.http.HttpServletResponse; 9 10import org.apache.commons.lang3.StringUtils; 11 12import jp.co.model.todo.Dbaccess; 13import jp.co.model.todo.Userinformationdto; 14 15public class Userconfirmation extends HttpServlet{ 16 17 boolean bool; 18 Dbaccess dbaccess; 19 Userinformationdto userInfDto; 20 21 public void doPost(HttpServletRequest request, HttpServletResponse response) 22 throws IOException, ServletException{ 23 24 String user = null; 25 int psw = 0; 26 27 try { 28 user = request.getParameter("user"); 29 psw = Integer.parseInt(request.getParameter("psw")); 30 } catch (Exception e) { 31 32 } 33 34 dbaccess = new Dbaccess(); 35 36 bool = dbaccess.Confimation(user, psw); 37 try { 38 if (bool == true) { 39 System.out.println(this.userInfDto.getUser()); 40 System.out.println(this.userInfDto.getPsw()); 41 if (!StringUtils.isEmpty(this.userInfDto.getUser()) && this.userInfDto.getPsw() != 0) { 42 request.setAttribute("user", user); 43 request.setAttribute("psw", psw); 44 request.setAttribute("userinformationList", this.userInfDto.getUserInformationList()); 45 request.getRequestDispatcher("/Loginsuccess.jsp").forward(request, response); 46 } 47 } else { 48 request.getRequestDispatcher("/Login.jsp").forward(request, response); 49 } 50 } 51 catch (Exception e) { 52 e.printStackTrace(); 53 } 54 55 } 56 57}
該当のソースコード
Java
1package jp.co.model.todo; 2 3import java.sql.Connection; 4import java.sql.PreparedStatement; 5import java.sql.ResultSet; 6import java.sql.SQLException; 7import java.util.ArrayList; 8import java.util.List; 9 10import javax.naming.InitialContext; 11import javax.servlet.ServletException; 12import javax.sql.DataSource; 13 14public class Dbaccess extends Userinformationdto{ 15 16 DataSource ds; 17 Userinformationdto userInfDto; 18 19 public Dbaccess() throws ServletException { 20 try { 21 InitialContext ic = new InitialContext(); 22 ds = (DataSource)ic.lookup("java:/comp/env/jdbc/SQLServer"); 23 24 } catch(Exception e) { 25 26 } 27 } 28 29 public boolean Confimation(String user, int psw ) { 30 31 Connection con = null; 32 PreparedStatement pstmt = null; 33 ResultSet rset = null; 34 35 try { 36 con = ds.getConnection(); 37 if (user != null && psw != 0) { 38 39 StringBuffer sql = new StringBuffer(); 40 41 sql.append("select user_id, user_name, user_password from user_table where user_name='" + user +"'" + "and user_password=" + psw ); 42 43 // sql文実行準備 44 pstmt = con.prepareStatement(new String(sql)); 45 46 // sql文実行 47 pstmt.execute(); 48 49 // 実行結果を、ResultSetクラスに代入 50 rset = pstmt.executeQuery(); 51 if(rset.next()) { 52 setUser(rset.getString("user_name")); 53 setPsw(rset.getInt("user_password")); 54 System.out.println(getUser()); 55 System.out.println(getPsw()); 56 //StringBuilderの初期化を行います。 57 sql.delete(0, sql.length()); 58 sql.append("select task_number, task_title, task_start_date, task_end_date, task_status, task_description from user_table INNER JOIN user_task_table on user_table.user_id='" + rset.getString("user_id") + "'"); 59 System.out.println(sql); 60 // sql文実行準備 61 pstmt = con.prepareStatement(new String(sql)); 62 // sql文実行 63 pstmt.execute(); 64 //結果格納前に初期化を行います。 65 rset = null; 66 System.out.println(getUser()); 67 System.out.println(getPsw()); 68 // 実行結果を、ResultSetクラスに代入 69 rset = pstmt.executeQuery(); 70 ArrayList arrayList = new ArrayList(); 71 List<ArrayList> list = new ArrayList(); 72 while (rset.next()) { 73 arrayList.add(rset.getInt("task_number")); 74 arrayList.add(rset.getString("task_title")); 75 arrayList.add(rset.getDate("task_start_date")); 76 arrayList.add(rset.getDate("task_end_date")); 77 arrayList.add(rset.getInt("task_status")); 78 arrayList.add(rset.getString("task_description")); 79 list.add(arrayList); 80 } 81 setUserInformationList(list); 82 } 83 } else { 84 return false; 85 } 86 } catch (SQLException e) { 87 // TODO 自動生成された catch ブロック 88 e.printStackTrace(); 89 } finally { 90 try { 91 if (con != null) { 92 con.close(); 93 } 94 } catch (SQLException e) { 95 // TODO 自動生成された catch ブロック 96 e.printStackTrace(); 97 } 98 } 99 return true; 100 } 101 102} 103
該当のソースコード
Java
1package jp.co.model.todo; 2 3import java.util.ArrayList; 4import java.util.List; 5 6public class Userinformationdto { 7 8 private String user; 9 10 private int psw; 11 12 private List<ArrayList> userInformationList; 13 14 public String getUser() { 15 return user; 16 } 17 18 protected void setUser(String user) { 19 this.user = user; 20 } 21 22 public int getPsw() { 23 return psw; 24 } 25 26 protected void setPsw(int psw) { 27 this.psw = psw; 28 } 29 30 public List<ArrayList> getUserInformationList() { 31 return userInformationList; 32 } 33 34 protected void setUserInformationList(List<ArrayList> userInformationList) { 35 this.userInformationList = userInformationList; 36 } 37 38 39 40} 41
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー