いつもお世話になっております。
今回も皆様のお力を借りたくご質問させて頂きます。
以下動作環境
Java
エクリプス4.5Mars
動的WEBプロジェクト
WEBアプリを構築中ですが問題が不明な為投稿させて頂きます。
以下ソース
package util;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import model.SQL_RS_form;
public class QueryExcute {
HttpServletRequest request; public void queryEX(ResultSet rs) { SQL_RS_form rsform = new SQL_RS_form(); List<Object> list = new ArrayList<Object>(); try { while (rs.next()) { rsform.setUser_mail(rs.getString("user_mail")); list.add(rsform.getUser_mail()); } } catch (SQLException e) { e.printStackTrace(); } /* 問題発生個所 */ HttpSession session = request.getSession(); session.setAttribute("user_mail", list); }
}
/MYSQL接続/
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcDriver {
final static String DRIVER = "com.mysql.jdbc.Driver"; final static String URL = "-------"; final static String NAME = "-----"; final static String PASS = "------"; Connection con = null; public void Conect(String sql) throws SQLException { try { Class.forName(DRIVER).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } con = DriverManager.getConnection(URL, NAME, PASS); Statement smt = con.createStatement(); ResultSet rs = smt.executeQuery(sql); QueryExcute qe = new QueryExcute(); qe.queryEX(rs); con.close(); }
}
/* メールアドレスを全件検索 */
package dao;
import java.io.IOException;
import java.sql.SQLException;
import util.JdbcDriver;
import util.QueryLoader;
public class R001 {
public void select() throws IOException, SQLException {
String sql = QueryLoader.getQuery("R001", "SQL01"); JdbcDriver jdbc = new JdbcDriver(); jdbc.Conect(sql); }
}
package validate;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.Properties;
import javax.servlet.ServletRequest;
import common.MessageStream;
import dao.R001;
/メールアドレス重複チェッククラス/
public class S002 {
ServletRequest session;
public String validate(String mail) {
MessageStream me = new MessageStream(); Properties inMessage = null; try { inMessage = me.loadUtf8Properties("/Message.properties"); } catch (IOException e) { e.printStackTrace(); } try { R001 r001 = new R001(); r001.select();
@SuppressWarnings("unchecked")
List<String> list = (List<String>) session.getAttribute("user_mail");
for (String str : list) { if (mail.equals(str)) { return inMessage.getProperty("M01"); } } } catch (IOException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return ""; }
}
デバッグにて動作確認をしていた所、上記指摘個所「HttpSession session = request.getSession();」にて問題がエラーが発生しています。それまでの動作には問題は御座いません。
以下エラー文
java.lang.NullPointerException
util.QueryExcute.queryEX(QueryExcute.java:36)
util.JdbcDriver.Query(JdbcDriver.java:42)
dao.R001.select(R001.java:19)
validate.S002.validate(S002.java:32)
servlet.MMPC002.doPost(MMPC002.java:46)
javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
問題が発生しなければ、ここでDBから取得してきた値がlistへ格納されているので、それをセッションへ保持して他ロジックで取得可能にさせるといった流れで考えています。
みなさまのお力添えの程宜しくお願い致します。
追記
一連の処理(下から進行)を掲載いたしました。S002クラスがサーブレットから呼ばれます。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/22 16:05
2016/03/22 16:29 編集
2016/03/25 15:31 編集
2016/03/25 16:23
2016/03/27 10:09