session을 이용한 학습을 하고 있는데
처음 웹서버를 재시작한 후 로그인을 했을 때는
정상적으로 되는데
로그아웃 이후
다시 로그인을 하면 비밀번호를 틀렸다고 하면서 로그인이 되지 않더라구요
그래서 이클립스 콘솔에서 확인해보니
로그인이 실패했을 때
java.sql.SQLException: Connection is null.
이라는 오류가 발생하더라구요...
하지만
서버 재시작->로그인 정상->로그아웃->다시 로그인 시도->비밀번호 틀렸다라는 알림이 발생하면서
이클립스 콘솔에 java.sql.SQLException: Connection is null.
위의 순서로 오류가 발생하고 있습니다.
서버를 재시작하고 로그인을 했을때는 커넥션이 정상적으로 이루어 지는것 같은데
로그아웃이후에는 커넥션이 널값을 가지고 있어버리네요;;
dbConnection.java
package webTest.bean;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
//DB연결 및 connection 반환
public class dbConnection {
private Connection conn;
public PreparedStatement pstmt;
public Connection getConn() {
try {
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookupLink("jdbc/jsptest");
this.conn = ds.getConnection();
}
catch(Exception e) {
e.printStackTrace();
}
return this.conn;
}
public void disConnection()
{
if(this.pstmt !=null)
{
try {this.pstmt.close();}catch(SQLException sqle) {}
}
if(this.conn != null) {
try {this.conn.close();}catch(SQLException sqle) {}
}
}
}
LogonDBBean.java
//폼에서 넘어온 데이터를 가지고 검증
package webTest.bean;
import java.sql.Connection;
import java.sql.ResultSet;
import webTest.bean.dbConnection;
public class LogonDBBean {
private static LogonDBBean instance = new LogonDBBean();
dbConnection db = new dbConnection();
Connection conn = db.getConn();
ResultSet rs;
public static LogonDBBean getInstance() {
return instance;
}
private LogonDBBean() {}
public int userCheck(String id, String passwd) {
String sql = "select * from jspuser where id = ?";
int confirmX = 0;
try {
db.pstmt = conn.prepareStatement(sql);
db.pstmt.setString(1, id);
rs = db.pstmt.executeQuery();
if(rs.next()) {
String Dbpass = rs.getString("password");
confirmX = 1;
}
else
{
confirmX = 0;
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
db.disConnection();
}
return confirmX;
}
}
sessionLogoPro.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "webTest.bean.LogonDBBean"%>
<% request.setCharacterEncoding("utf-8"); %>
<%
LogonDBBean bean = LogonDBBean.getInstance();
String id = request.getParameter("id");
String pass = request.getParameter("password");
int check = bean.userCheck(id, pass);
if(check == 1) {
session.setAttribute("id", id);
response.sendRedirect("sessionLogin.jsp");
}
else
{
%>
<script>
alert("비밀번호가 맞지 않습니다.");
//history.go(-1);
</script>
<%
}
%>