13 분 소요

프로젝트 : MVC 프론트 컨트롤러 패턴을 활용한 컴퓨터 추천 웹 솔루션

포트폴리오 주소: https://github.com/nohhyeon/Fidecosemi.git

수행 기간: 2024.03 ~ 2024.04

수행 인원: 6명

프로젝트 목표/소개

컴퓨터 추천 사이트로, 가격대별 카테고리와 커뮤니티 사이트로 로그인과 게시판 기능 등 MVC 패턴 기반 CRUD 구현 프로젝트입니다.

개발 환경 (사용 도구/언어)

Java EEJava EE, JavaScriptJavaScript, Spring Tools 4Spring Tools 4, OracleOracle, GitHubGitHub, Apache TomcatApache Tomcat, GradleGradle, Apache MavenApache Maven, SQLSQL

담당 역할

- 프로젝트 PM으로서 로그인 및 회원가입의 CRUD 구현
- 오라클 DB를 이용하여 데이터 저장 및 확인을 통해 로그인과 회원가입 기능 구현
- 페이지 상단의 세션을 통해 로그인 유지 기능 구현
- 메인 화면에서 팀원들의 CRUD 기능 연동 및 매핑
- 회원정보 수정 및 탈퇴 기능 구현

기능 설명

- 회원가입/로그인 선택: 아이디 중복 체크를 통해 Oracle DB의 아이디 확인 후 회원가입 가능
- 로그인 시 세션 유지 체크박스 설정
- 로그인 후 팀원들이 만든 기능 접근 가능
- 우측 상단에 로그인한 회원의 이름 표시
- 메인 화면에서 회원정보 클릭 시 정보 수정 가능

구성 화면

image-20240616205303095

image-20240616205308730

image-20240616205314732

에러 화면

실행화면

image-20240616205323187

-페이지의 매핑 설정 코드-

package fideco.member.frontcontroller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


import fideco.member.controller.MemberDeleteController;
import fideco.member.controller.MemberInsertController;
import fideco.member.controller.MemberSelectDetailController;
import fideco.member.controller.MemberSelectController;
import fideco.member.controller.MemberUpdateController;
import fideco.member.controller.MemberUpdateViewController;
import fideco.member.frontcontroller.MemberDispatcherServlet;
import fideco.member.controller.MemberSearchController;
import fideco.login.controller.IdCheckController;
import fideco.login.controller.IdSearchController;
import fideco.login.controller.LoginController;
import fideco.login.controller.LogoutController;
import fideco.login.controller.LoginMainController;
import fideco.login.controller.PasswordSearchController;
import fideco.control.Controller;
import fideco.handler.HandlerAdapter;

public class MemberDispatcherServlet extends HttpServlet {
	private static Log log = LogFactory.getLog(MemberDispatcherServlet.class);
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		service(request, response);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		service(request, response);
	}

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String requestURI = request.getRequestURI( );
		String contextPath = request.getContextPath( );
		String pathURI = requestURI.substring(contextPath.length( ));
		HandlerAdapter handlerAdapter = null;
		Controller controller = null;
		if(pathURI.equals("/MemberSelect.me")) {
			controller = new MemberSelectController( );
			handlerAdapter = controller.execute(request, response);
			log.info("회원 전체 조회 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/MemberInsertView.me")) {
			handlerAdapter = new HandlerAdapter( );
			handlerAdapter.setPath("/WEB-INF/view/member/member_insert.jsp");
			log.info("회원 가입 화면 뷰 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/MemberInsert.me")) {
			controller = new MemberInsertController( );
			handlerAdapter = controller.execute(request, response);
			log.info("회원 가입 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/MemberUpdate.me")) {
			controller = new MemberUpdateController( );
			handlerAdapter = controller.execute(request, response);
			log.info("회원 수정 페이지 이동 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/MemberUpdateView.me")) {
			controller = new MemberUpdateViewController( );
			handlerAdapter = controller.execute(request, response);
			log.info("회원 수정 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/MemberDelete.me")) {
			controller = new MemberDeleteController( );
			handlerAdapter = controller.execute(request, response);
			log.info("회원 삭제 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/MemberSelectDetail.me")) {
			controller = new MemberSelectDetailController( );
			handlerAdapter = controller.execute(request, response);
			log.info("회원 상세 조회 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/LoginView.me")) {
			handlerAdapter = new HandlerAdapter( );
			handlerAdapter.setPath("/WEB-INF/view/login/login.jsp");
			log.info("로그인 화면 뷰 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/Login.me")) {
			controller = new LoginController( );
			handlerAdapter = controller.execute(request, response);
			log.info("로그인 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/LoginMain.me")) {
			controller = new LoginMainController( );
			handlerAdapter = controller.execute(request, response);
			log.info("로그인 메인 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/Logout.me")) {
			controller = new LogoutController( );
			handlerAdapter = controller.execute(request, response);
			log.info("로그아웃 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/IdCheck.me")) {
			controller = new IdCheckController( );
			handlerAdapter = controller.execute(request, response);
			log.info("아이디 체크 확인 -" + handlerAdapter);
		} else if(pathURI.equals("/IdSearchView.me")) {
			handlerAdapter = new HandlerAdapter( );
			handlerAdapter.setPath("/WEB-INF/view/login/id_search.jsp");
			log.info("아이디 찾기 뷰화면  확인 -" + handlerAdapter);
		} else if(pathURI.equals("/IdSearch.me")) {
			controller = new IdSearchController( );
			handlerAdapter = controller.execute(request, response);
			log.info("아이디 찾기 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/PasswordSearchView.me")) {
			handlerAdapter = new HandlerAdapter( );
			handlerAdapter.setPath("/WEB-INF/view/login/password_search.jsp");
			log.info("비밀번호 찾기 화면 뷰 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/PasswordSearch.me")) {
			controller = new PasswordSearchController( );
			handlerAdapter = controller.execute(request, response);
			log.info("비밀번호 찾기 확인 - " + handlerAdapter);
		} else if(pathURI.equals("/MemberSearch.me")) {
			controller = new MemberSearchController( );
			handlerAdapter = controller.execute(request, response);
			log.info("회원 검색 확인 -" + handlerAdapter);
			
		}
		if(handlerAdapter != null) {
			if(handlerAdapter.isRedirect( )) {
				response.sendRedirect(handlerAdapter.getPath( ));
			} else {
				RequestDispatcher dispatcher = request.getRequestDispatcher(handlerAdapter.getPath( ));
				dispatcher.forward(request, response);
			}
		}
	}
}

image-20240616205400019

-회원정보의 DAO-

package fideco.member.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import fideco.member.dto.MemberDTO;
import fideco.member.service.MemberService;

public class MemberDAO implements MemberService {
    private static final Log log = LogFactory.getLog(MemberDAO.class);

    // MemberDTO 클래스 반환 자료형으로 전체 데이터를 조회한다.
    @Override
    public ArrayList<MemberDTO> memberSelectAll(int page, int limit) {
        ArrayList<MemberDTO> arrayList = new ArrayList<MemberDTO>();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            // 쿼리문 입력
            String sql = "select member_id, member_name, member_pw, member_address, member_phone, member_email, member_auth from member ";
            sql += "where member_id != 'admin' order by member_id desc";
            log.info("SQL - " + sql);
            preparedStatement = connection.prepareStatement(sql);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                MemberDTO memberDTO = new MemberDTO();
                memberDTO.setMember_id(resultSet.getString("member_id"));
                memberDTO.setMember_name(resultSet.getString("member_name"));
                memberDTO.setMember_pw(resultSet.getString("member_pw"));
                memberDTO.setMember_address(resultSet.getString("member_address"));
                memberDTO.setMember_phone(resultSet.getString("member_phone"));
                memberDTO.setMember_email(resultSet.getString("member_email"));
               memberDTO.setMember_auth(resultSet.getString("member_auth"));
                arrayList.add(memberDTO);
                log.info("조회 데이터 확인" + memberDTO);
            }
            if (resultSet.getRow() == 0) {
                log.info("등록된 회원이 없습니다.");
            }
        } catch (Exception e) {
            log.info("전체 회원 조회 실패 - " + e);
        } finally {
            try {
                resultSet.close();
                preparedStatement.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return arrayList;
    }

    // MemberDTO 반환 자료형으로 데이터를 입력한다.
    @Override
    public MemberDTO memberInsert(MemberDTO memberDTO) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            String sql = "insert into member(member_id, member_name, member_pw, member_address, member_phone, member_email, member_auth) ";
            sql += " values (?, ?, ?, ?, ?, ?, ?)";
            log.info("SQL - " + sql);
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, memberDTO.getMember_id());
            preparedStatement.setString(2, memberDTO.getMember_name());
            preparedStatement.setString(3, memberDTO.getMember_pw());
            preparedStatement.setString(4, memberDTO.getMember_address());
            preparedStatement.setString(5, memberDTO.getMember_phone());
            preparedStatement.setString(6, memberDTO.getMember_email());
           preparedStatement.setString(7, memberDTO.getMember_auth());
            int count = preparedStatement.executeUpdate();
            log.info("입력 데이터 확인 - " + memberDTO);
            if (count > 0) {
                connection.commit();
                log.info("커밋되었습니다.");
            } else {
                connection.rollback();
                log.info("롤백되었습니다.");
            }
        } catch (Exception e) {
            log.info("회원 가입 실패 - " + e);
        } finally {
            try {
                connection.close();
                preparedStatement.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return memberDTO;
    }

    // MemberDTO 클래스 반환 자료형으로 데이터를 수정한다.
    @Override
    public MemberDTO memberUpdate(MemberDTO memberDTO) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        log.info("업데이트 정보 - " + memberDTO);
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            String sql = "update member set member_name = ?,  member_pw = ?,  member_address = ?, member_phone = ?, member_email = ?, member_auth = ?  ";
            sql += "where member_id = ?";
            log.info("SQL - " + sql);
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, memberDTO.getMember_name());
            preparedStatement.setString(2, memberDTO.getMember_pw());
            preparedStatement.setString(3, memberDTO.getMember_address());
            preparedStatement.setString(4, memberDTO.getMember_phone());
            preparedStatement.setString(5, memberDTO.getMember_email());
            preparedStatement.setString(6, memberDTO.getMember_auth());
            preparedStatement.setString(7, memberDTO.getMember_id());
            int count = preparedStatement.executeUpdate();
            log.info("수정 데이터 확인 - " + memberDTO);
            if (count > 0) {
                connection.commit();
                log.info("커밋되었습니다.");
            } else {
                connection.rollback();
                log.info("롤백되었습니다.");
            }
        } catch (Exception e) {
            log.info("회원 정보 수정 실패 - " + e);
        } finally {
            try {
                connection.close();
                preparedStatement.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return memberDTO;
    }

    // MemberDTO 클래스 반환 자료형으로 데이터를 삭제한다.
    @Override
    public MemberDTO memberDelete(MemberDTO memberDTO) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            String sql = "delete from member ";
            sql += " where member_id = ? ";
            log.info("SQL - " + sql);
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, memberDTO.getMember_id());
            int count = preparedStatement.executeUpdate();
            if (count > 0) {
                connection.commit();
                log.info("커밋되었습니다.");
            } else {
                connection.rollback();
                log.info("롤백되었습니다.");
            }
        } catch (Exception e) {
            log.info("회원 삭제 실패 - " + e);
        } finally {
            try {
                connection.close();
                preparedStatement.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return memberDTO;
    }

    // MemberDTO 클래스 반환 자료형으로 특정 회원 데이터를 조회한다.
    @Override
    public MemberDTO memberSelect(MemberDTO memberDTO) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            // 쿼리문 작성
            String sql = "select member_id, member_name, member_pw, member_address, member_phone, member_email, member_auth from member";
            sql += " where member_id = ? ";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, memberDTO.getMember_id());
            resultSet = preparedStatement.executeQuery();
            if (resultSet.next()) {
                log.info("아이디 확인 - " + resultSet.getString("member_id"));
                memberDTO.setMember_name(resultSet.getString("member_name"));
                memberDTO.setMember_id(resultSet.getString("member_id"));
                memberDTO.setMember_pw(resultSet.getString("member_pw"));
                memberDTO.setMember_address(resultSet.getString("member_address"));
                memberDTO.setMember_phone(resultSet.getString("member_phone"));
                memberDTO.setMember_email(resultSet.getString("member_email"));
                memberDTO.setMember_auth(resultSet.getString("member_auth"));
            }
        } catch (Exception e) {
            log.info("개별 회원 조회 실패 - " + e);
        } finally {
            try {
                resultSet.close();
                preparedStatement.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return memberDTO;
    }

    // int 반환 자료형으로 입력 데이터의 번호를 구한다.
    @Override
    public int memberNumber() {
        int i = 0;
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            String sql = "select max(member_id) from member";
            log.info("SQL 확인 - " + sql);
            preparedStatement = connection.prepareStatement(sql);
            resultSet = preparedStatement.executeQuery(sql);
            if (resultSet.next()) {
                i = resultSet.getInt("max(member_id)");
            }
        } catch (Exception e) {
            log.info("최대 회원 번호 검색 실패 - " + e);
        } finally {
            try {
                resultSet.close();
                preparedStatement.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return i;
    }

    // int 반환 자료형으로 입력 데이터의 개수를 구한다.
    @Override
    public int memberCount() {
        int i = 0;
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            String sql = "select count(*) from member where member_id != 'admin'";
            preparedStatement = connection.prepareStatement(sql);
            resultSet = preparedStatement.executeQuery();
            if (resultSet.next()) {
                i = resultSet.getInt(1);
            }
        } catch (Exception e) {
            log.info("현재 회원 수 검색 실패 - " + e);
        } finally {
            try {
                resultSet.close();
                preparedStatement.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return i;
    }

    // 제네릭 MemberDTO 클래스 반환 자료형으로 데이터를 검색한다.
    @Override
    public ArrayList<MemberDTO> memberSearch(String keyword, int page, int limit) {
        log.info("검색 단어 확인 - " + keyword);
        String searchCall = "";
        if (!keyword.equals("")) {
            searchCall = "where member_id like '%" + keyword + "%'";
        }
        ArrayList<MemberDTO> arrayList = new ArrayList<MemberDTO>();
        int startrow = (page - 1) * 10 + 1;
        int endrow = startrow + limit - 1;
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            String sql = "select member_id, member_name, member_pw, member_address, member_phone, member_email, member_auth from member ";
            sql += "from member " + searchCall + " order by member_id desc) where member_id != 'admin')";
            sql += " where rnum between " + startrow + " and " + endrow;
            log.info("SQL - " + sql);
            preparedStatement = connection.prepareStatement(sql);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                MemberDTO memberDTO = new MemberDTO();
                memberDTO.setMember_id(resultSet.getString("member_id"));
                memberDTO.setMember_name(resultSet.getString("member_name"));
                memberDTO.setMember_pw(resultSet.getString("member_pw"));
                memberDTO.setMember_address(resultSet.getString("member_address"));
                memberDTO.setMember_phone(resultSet.getString("member_phone"));
                memberDTO.setMember_email(resultSet.getString("member_email"));
                memberDTO.setMember_auth(resultSet.getString("member_auth"));
                arrayList.add(memberDTO);
                log.info("조회 데이터 확인" + memberDTO);
            }
            if (resultSet.getRow() == 0) {
                log.info("등록된 회원이 없습니다.");
            }
        } catch (Exception e) {
            log.info("회원 포인트 검색 실패 - " + e);
        } finally {
            try {
                resultSet.close();
                preparedStatement.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return arrayList;
    }

    // int 반환 자료형으로 검색 데이터의 개수를 구한다.
    @Override
    public int memberSearchCount(String keyword) {
        int i = 0;
        log.info("검색 단어 확인 - " + keyword);
        String searchCall = "";
        if (!keyword.equals("")) {
            searchCall = "member_id like '%" + keyword + "%'";
        }
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            String sql = "select count(*) from (select * from member where member_id != 'admin') where " + searchCall;
            log.info("SQL 확인 - " + sql);
            preparedStatement = connection.prepareStatement(sql);
            resultSet = preparedStatement.executeQuery();
            if (resultSet.next()) {
                i = resultSet.getInt(1);
            }
        } catch (Exception e) {
            log.info("아이디 검색 회원 수 검색 실패 - " + e);
        } finally {
            try {
                resultSet.close();
                preparedStatement.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return i;
    }

  //MemberDTO 클래스 반환 자료형으로 로그인 데이터를 조회한다.
  	@Override
  	public MemberDTO memberLogin(MemberDTO memberDTO) {
  		Connection connection = null;
  		PreparedStatement preparedStatement = null;
  		ResultSet resultSet = null;
  		try {
  			Context context = new InitialContext( );
  			DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
  			connection = dataSource.getConnection( );
  			String sql = "select * from member ";
  			sql += " where member_id = ?";
  			log.info("SQL - " + sql);
  			preparedStatement = connection.prepareStatement(sql);
  			preparedStatement.setString(1, memberDTO.getMember_id( ));
  			// SQL 문인 select…from…where 문을 실행하고 데이터를 조회한다.
  			resultSet = preparedStatement.executeQuery( );
  			// 커서를 현재 위치에서 한 행 앞으로 이동하면서 조건을 확인한다.
  			if(resultSet.next( )) {
  				// 입력한 아이디와 비밀번호가 기존의 아이디와 비밀번호가 일치하는지를 검사한다.
  				memberDTO.setMember_name(resultSet.getString("member_name"));
  				memberDTO.setMember_id(resultSet.getString("member_id"));
  				log.info("아이디 확인 - " + resultSet.getString("member_id"));
  				if(resultSet.getString("member_pw").equals(memberDTO.getMember_pw( ))) {
  					memberDTO.setMember_pw(resultSet.getString("member_pw"));
  					log.info("비밀번호 확인 - " + resultSet.getString("member_pw"));
  				} else {
  					memberDTO.setMember_pw("");
  				}
  			} else {
  				memberDTO.setMember_id("");
  			}
  		} catch(Exception e) {
  			log.info("로그인 실패 - " + e);
  		} finally {
  			try {
  				resultSet.close( );
  				preparedStatement.close( );
  				connection.close( );
  			} catch(SQLException e) {
  				e.printStackTrace( );
  			}
  		}
  		return memberDTO;
  	}

  	@Override
  	public MemberDTO memberLoginMain(MemberDTO memberDTO) {
  	    Connection connection = null;
  	    PreparedStatement preparedStatement = null;
  	    ResultSet resultSet = null;

  	    try {
  	        Context context = new InitialContext();
  	        DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
  	        connection = dataSource.getConnection();

  	        // 사용자 인증을 위한 쿼리 작성
  	        String sql = "SELECT * FROM member WHERE member_id = ? AND member_pw = ? AND member_name";
  	        preparedStatement = connection.prepareStatement(sql);
  	        preparedStatement.setString(1, memberDTO.getMember_id());
  	        preparedStatement.setString(2, memberDTO.getMember_pw());
  	        preparedStatement.setString(3, memberDTO.getMember_name());
  	        resultSet = preparedStatement.executeQuery();

  	        if (resultSet.next()) {
  	            // 사용자 인증에 성공한 경우
  	            // 세션에 사용자 정보를 저장하는 등의 작업을 수행할 수 있습니다.
  	            // 예를 들어, 세션에 사용자 아이디를 저장한다면:
  	            // session.setAttribute("loggedInUserId", memberDTO.getmember_Id());
  	            // 혹은 로그인 여부를 저장할 수도 있습니다.
  	            // session.setAttribute("isLoggedIn", true);

  	            // 사용자 인증에 성공하면 memberDTO를 반환합니다.
  	            return memberDTO;
  	        } else {
  	            // 사용자 인증에 실패한 경우
  	            // 실패한 이유를 사용자에게 알려주는 등의 작업을 수행할 수 있습니다.
  	            // 예를 들어, 인증 실패 메시지를 설정하여 반환할 수 있습니다.
  	            
  	            return null;
  	        }
  	    } catch (Exception e) {
  	        // 예외 처리
  	        e.printStackTrace();
  	        // 예외가 발생하면 null을 반환하거나 예외를 다시 던지는 등의 처리를 할 수 있습니다.
  	        return null;
  	    } finally {
  	        // 리소스 해제
  	        try {
  	            if (resultSet != null) resultSet.close();
  	            if (preparedStatement != null) preparedStatement.close();
  	            if (connection != null) connection.close();
  	        } catch (SQLException e) {
  	            e.printStackTrace();
  	        }
  	    }
  	}
  	
  	
    // int 반환 자료형으로 아이디 데이터를 조회한다.
    @Override
    public int membermember_Id(String member_id) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        int idCheck = 0;

        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            String sql = "select * from member ";
            sql += "where member_id=? ";
            log.info("SQL - " + sql);
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, member_id);
            resultSet = preparedStatement.executeQuery();
            if (resultSet.next() || member_id.equals("")) {

                // 존재하는 경우
                idCheck = 1;
            } else {
                // 존재하지 않는 경우
                idCheck = 0;
            }

        } catch (Exception e) {
            log.info("회원 아이디 체크 실패 - " + e);
        } finally {
            try {
                resultSet.close();
                preparedStatement.close();
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return idCheck;
    }

    // MemberDTO 클래스 반환 자료형으로 아이디 데이터를 검색한다.
    @Override
    public MemberDTO memberSearchmember_Id(String member_name, String member_email) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        MemberDTO memberDTO = new MemberDTO();
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            // 쿼리문 작성
            String sql = "select * from member where member_name=? and member_email=?";
            log.info("SQL - " + sql);
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, member_name);
            preparedStatement.setString(2, member_email);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                memberDTO.setMember_id(resultSet.getString("member_id"));
                memberDTO.setMember_name(resultSet.getString("member_name"));
                memberDTO.setMember_pw(resultSet.getString("member_pw"));
                memberDTO.setMember_address(resultSet.getString("member_address"));
                memberDTO.setMember_phone(resultSet.getString("member_phone"));
                memberDTO.setMember_email(resultSet.getString("member_email"));

                log.info("조회 데이터 확인" + memberDTO);
            }
        } catch (Exception e) {
            log.info("아이디 찾기 실패 - " + e);
        } finally {
            try {
                resultSet.close();
                preparedStatement.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return memberDTO;
    }

    // MemberDTO 클래스 반환 자료형으로 비밀번호 데이터를 검색한다.
    public MemberDTO memberSearchPassword(String member_id, String member_email) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        MemberDTO memberDTO = new MemberDTO();
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc");
            connection = dataSource.getConnection();
            // 쿼리문 작성
            String sql = "select * from member where member_id=? and member_email=?";
            log.info("SQL - " + sql);
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, member_id);
            preparedStatement.setString(2, member_email);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                memberDTO.setMember_id(resultSet.getString("member_id"));
                memberDTO.setMember_name(resultSet.getString("member_name"));
                memberDTO.setMember_pw(resultSet.getString("member_pw"));
                memberDTO.setMember_address(resultSet.getString("member_address"));
                memberDTO.setMember_phone(resultSet.getString("member_phone"));
                memberDTO.setMember_email(resultSet.getString("member_email"));
                log.info("조회 데이터 확인" + memberDTO);
            }
        } catch (Exception e) {
            log.info("비밀번호 찾기 실패 - " + e);
        } finally {
            try {
                resultSet.close();
                preparedStatement.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return memberDTO;
    }

	@Override
	public MemberDTO memberSearchmember_Pw(String member_id, String member_email) {
		// TODO Auto-generated method stub
		return null;
	}

}

image-20240616205406187

image-20240616205410282

image-20240616205415681

image-20240616205419726

댓글남기기