본문 바로가기
WEB Archive

[JSP] 데이터베이스 연결, 객체 구성, View 에서 호출

by universedevelope 2024. 8. 22.

MemberDTO.java  ▼▼▼

/* ============================================
 MemberDTO.java
 - 객체 전용(데이터 보관 및 전송) JAVA Bean
 ============================================ */
package com.test;

public class MemberDTO
{
	//주요 속성 구성(프로퍼티 구성)
	private String sid, name, tel;	// 번호, 이름, 전화번호

	public String getSid()
	{
		return sid;
	}

	public void setSid(String sid)
	{
		this.sid = sid;
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public String getTel()
	{
		return tel;
	}

	public void setTel(String tel)
	{
		this.tel = tel;
	}
	
	// getter / setter 구성
	
}

MemberDAO.java  ▼▼▼

/* ===============================
	MemberDAO.java
	- 데이터베이스 액션 처리 전용 클래스
	(TBL_MEMBER 테이블 전용 DAO)
=============================== */
package com.test;

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

import com.util.DBConn;

public class MemberDAO
{
	private Connection conn;
	// 데이터베이스 연결 담당 메소드
	public Connection connection()
	{
		conn = DBConn.getConnection();
		return conn;
	}
	
	// 데이터 입력 담당 메소드
	public int add(MemberDTO dto) throws SQLException
	{
		int result = 0;
		String sql = "INSERT INTO TBL_MEMBER(SID, NAME, TEL)"
				   + " VALUES(MEMBERSEQ.NEXTVAL, ?, ?)";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, dto.getName());
		pstmt.setString(2, dto.getTel());
				
		result = pstmt.executeUpdate();
		pstmt.close();
		return result;
	}
	
	// 회원 리스트 전체 출력 담당 메소드
	public ArrayList<MemberDTO> lists() throws SQLException
	{
		ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
		String sql = "SELECT SID, NAME, TEL FROM TBL_MEMBER ORDER BY SID";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		ResultSet rs = pstmt.executeQuery();
		
		while (rs.next())
		{
			MemberDTO member = new MemberDTO();
			member.setSid(rs.getString("SID"));
			member.setName(rs.getString("NAME"));
			member.setTel(rs.getString("TEL"));
			
			result.add(member);
		}
		rs.close();
		pstmt.close();
		return result;
	}
	
	// 전체 인원 수 확인 담당 메소드
	public int count() throws SQLException
	{
		int result = 0;
		String sql = "SELECT COUNT(*) AS COUNT FROM TBL_MEMBER";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		ResultSet rs = pstmt.executeQuery();
		
		// if 여도 됨... count 가 단일행 반환하기땜에
		while (rs.next())
		{
			result = rs.getInt("COUNT");
		}
		rs.close();
		pstmt.close();
		return result;
	}
	
	// 멤버 수정
	public int modify(MemberDTO dto) throws SQLException
	{
		int result = 0;
		String sql = "UPDATE TBL_MEMBER SET NAME=?, TEL=? WHERE SID=?";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, dto.getName());
		pstmt.setString(2, dto.getTel());
		pstmt.setString(3, dto.getSid());
		
		result = pstmt.executeUpdate();
		
		return result;
	}
	
	
	
	public void close()
	{
		DBConn.close();
	}
	
	// 멤버 (번호로)검색
	public MemberDTO searchMember(String sid) throws SQLException
	{
		MemberDTO dto = new MemberDTO();
		
		String sql = "SELECT SID, NAME, TEL FROM TBL_MEMBER WHERE SID = ?";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, sid);
		ResultSet rs = pstmt.executeQuery();
		while (rs.next())
		{
			dto.setSid(rs.getString("SID"));
			dto.setName(rs.getString("NAME"));
			dto.setTel(rs.getString("TEL"));
		}
		rs.close();
		pstmt.close();
		
		return dto;
	}
	
	// 데이터 삭제
	public int remove(String sid) throws SQLException
	{
		MemberDTO dto = new MemberDTO();

		int result = 0;
		String sql = "DELETE FROM TBL_MEMBER WHERE SID = ?";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, sid);
		result = pstmt.executeUpdate();
		return result;
	}
	
	// 메소드 추가
	// 자식 테이블의 참조 데이터 레코드 수 확인
	public int refCount(String sid) throws SQLException
	{
		int result = 0;
		String sql = "SELECT COUNT(*) AS COUNT FROM TBL_MEMBERSCORE WHERE SID=?";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, sid);
		
		ResultSet rs = pstmt.executeQuery();
		
		while (rs.next())
		{
			result = rs.getInt("COUNT");
		}
		rs.close();
		pstmt.close();
		
		return result;
	}
	
	
	
	
	
	
	
	
	
	
	
}

MemberInsert.jsp  ▼▼▼

<%@page import="com.test.MemberDTO"%>
<%@page import="com.test.MemberDAO"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%
	//MemberInsert.jsp
	// 테이블에 회원데이터 추가 액션 처리..
	// 이후 다시 리스트페이지 MemberSelect.jsp 요청
	request.setCharacterEncoding("UTF-8");

	String uName = request.getParameter("uName");
	String uTel = request.getParameter("uTel");
	
	MemberDAO dao = new MemberDAO();
	
	try
	{
		// 데이터베이스 연결
		dao.connection();
		
		// MemberDTO 객체 생성 및 속성 구성(→ add()메소드 호출 위해 필요 )
		MemberDTO member = new MemberDTO();
		member.setName(uName);
		member.setTel(uTel);
		
		// insert 쿼리문을 수행하는 dao의 add()메소드 호출
		dao.add(member);	
	}
	catch(Exception e)
	{
		System.out.println(e.toString());
	}
	finally
	{
		try
		{
			dao.close();
		}
		catch(Exception e)
		{
			System.out.println(e.toString());
		}
		
	}
	// check~!!
	// 클라이언트가 MemberSelect.jsp 페이지를 다시요청할 수 있도록 안내
	response.sendRedirect("MemberSelect.jsp");
	
%>

MemberUpdate.jsp ▼▼▼

<%@page import="com.test.MemberDTO"%>
<%@page import="com.test.MemberDAO"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%
	//MemberUpdate
	request.setCharacterEncoding("UTF-8");

	String sid = request.getParameter("sid");
	String uName = request.getParameter("uName");
	String uTel = request.getParameter("uTel");
	
	MemberDAO dao = new MemberDAO();
	try
	{
		dao.connection();
		MemberDTO dto = new MemberDTO();
		dto.setSid(sid);
		dto.setName(uName);
		dto.setTel(uTel);
		
		dao.modify(dto);
		// 이후 반환 결과에 따른 분기 처리 가능~!!
	}
	catch(Exception e)
	{
		System.out.println(e.toString());
	}
	finally
	{
		try
		{
			dao.close();
		}
		catch(Exception e)
		{
			System.out.println(e.toString());
		}
	}
	
	// 클라이언트에 MemberSelect.jsp를 다시 요청할 수 있도록 안내~!!
	response.sendRedirect("MemberSelect.jsp");
	
%>

 

MemberDelete.jsp  ▼▼▼

<%@page import="com.test.MemberDAO"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%
	String sid = request.getParameter("sid");
	MemberDAO dao = new MemberDAO();
	String strAddr = "";
	
	try
	{
		dao.connection();
		
		//dao.remove(sid);
		// 참조 레코드 수 확인
		int checkCount = dao.refCount(sid);
		// TBL_MEMBER 테이블의 제거하고자 하는 데이터의 
		// SID 를 참조하는 TBL_MEMBERSCORE 테이블 내의 갯수 확인
		
		if(checkCount == 0)	// 제거 가능
		{
			dao.remove(sid);
			strAddr = "MemberSelect.jsp";
		}	
		else	// 제거 불가
		{
			//dao.remove(sid);
			//-- TBL_MEMBERSCORE 테이블의 데이터가
			//   TBL_MEMBER 테이블의 SID 를 참조하고 있는 경우로
			//   삭제가 불가능한 상황
			//-- 제거하지 못하는 사유를 안내하는 페이지로 이동
			//   + 리스트로 돌아가기 버튼
			strAddr = "Notice.jsp";
		}
			
	}
	catch(Exception e)
	{
		System.out.println(e.toString());
	}
	finally
	{
		try
		{
			
		}
		catch(Exception e)
		{
			System.out.println(e.toString());
		}
	}
	
	response.sendRedirect(strAddr);
	// 나머지 보여지는 코드들 모두 제거
%>

 

728x90

'WEB Archive' 카테고리의 다른 글

[JSP] 회원 관리 실습 - 추가, 수정 폼  (0) 2024.08.22
[JSP] 회원 성적 관리 실습 - 추가, 수정 폼  (0) 2024.08.22
[JSP] Member Score 구현  (0) 2024.08.22
[JSP] Score 구현  (0) 2024.08.22
[JSP] Member 구현  (0) 2024.08.22

댓글