JSP & Servlet :: DAO와 DTO를 활용한 데이터베이스 연결 실습 (회원 관리 프로그램)

2023. 12. 13. 22:35· 📚 Study/JSP & Servlet
목차
  1. # MemberDAO.java
  2. # MemberList.jsp
  3. # MemberInsert.jsp

📃 n명의 이름과 전화번호 입력받아 리스트를 출력해주는 프로그램 구현

→ 구현 기능 : 데이터 입력, 리스트 출력, 리스트 전체 인원 수 

 

# sql 파일은 따로 기록 X (String sql 작성 편리하게 하기 위해 쿼리문 한 줄 구성하는 것 추천)

# MemberDTO는 TBL_MEMBER 테이블의 컬럼 구조에 맞춰 String sid, name, tel 의 getter/ setter 구성

 

# MemberDAO.java

- DB 연결, 데이터 입력, 리스트 출력, 전체 인원 수 조회, DB 연결 종료 메소드 정의하기

① DB 연결

public MemberDAO() throws ClassNotFoundException, SQLException
{
conn = DBConn.getConnection();
}

 

② 데이터 입력 메소드 정의

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 dto = new MemberDTO();
dto.setSid(rs.getString("SID"));
dto.setName(rs.getString("NAME"));
dto.setTel(rs.getString("TEL"));
result.add(dto);
}
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();
while(rs.next())
{
result = rs.getInt("COUNT");
}
rs.close();
pstmt.close();
return result;
}

➰  체크할 내용 ➰

1) result는 단일값이니 if문으로 구성해도 된다.

if(rs.next())
result = rs.getInt("COUNT");

 

⑤ DB 연결 종료

public void close() throws SQLException
{
DBConn.close();
}

 


# MemberList.jsp

→ 사용자가 접하게 되는 페이지

① 페이지 레이아웃 구성

<body>
<div>
<h1>데이터베이스 연동 회원관리 실습</h1>
<hr>
</div>
<div>
<p>DAO, DTO 개념 적용</p>
<form action="MemberInsert.jsp" method="post" onsubmit="return formCheck();">
<table class="table">
<tr>
<th>이름(*)</th>
<td>
<input type="text" id="userName" name="userName" class="txt">
<span class="errMsg" id="nameMsg">이름을 입력해야 합니다.</span>
</td>
</tr>
<tr>
<th>전화번호</th>
<td>
<input type="text" id="userTel" name="userTel" class="txt">
</td>
</tr>
<tr></tr>
<tr>
<td colspan="2">
<button type="submit" class="btn" id="btnAdd">회원 추가</button>
</td>
</tr>
</table>
</form>
</div>
<br><br>
<div>
<%-- <%=memberCount %> --%>
<%-- <%=str.toString() %> --%>
</div>
</body>

➰체크할 내용➰

1) onsubmit = "return formCheck()" : 자바스크립트 영역에서 함수 정의하여 조건에 충족할 경우 submit~!

2) action : 해당 폼이 제출되면 MemberInsert.jsp로 이동하여 회원 추가 기능 수행 (단, 이동하는 페이지인 MemberInsert 페이지는 사용자에게 보이지 않는다.)

etc. <%=memberCount>랑 <%=str.toString()>은 스크립릿 구성 후 주석 풀어서 사용!

 

② 자바스크립트 영역 구성

- 필수 항목 입력하지 않았을 경우 폼 제출되지 않도록 하는 기능

<script type="text/javascript">
function formCheck()
{
var userName = document.getElementById("userName");
var nameMsg = document.getElementById("nameMsg");
nameMsg.style.display = "none";
if (userName.value == "")
{
nameMsg.style.display = "inline";
userName.focus();
return false;
}
return true;
}
</script>

 

③ 스크립릿 영역 구성

<%
StringBuffer str = new StringBuffer();
MemberDAO dao = null;
String memberCount = "<span id='memberCount'>전체 인원 수 : ";
try
{
dao = new MemberDAO();
memberCount += dao.count() + "명</span>";
str.append("<table class='table'>");
str.append("<tr><th>번호</th><th>이름</th><th>전화번호</th></tr>");
for (MemberDTO member : dao.lists())
{
str.append("<tr>");
str.append("<td class='record'>" + member.getSid() + "</td>");
str.append("<td class='record'>" + member.getName() + "</td>");
str.append("<td class='record'>" + member.getTel() + "</td>");
str.append("</tr>");
}
str.append("</table>");
}
catch(Exception e)
{
System.out.println(e.toString());
}
finally
{
try
{
dao.close();
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
%>

 


# MemberInsert.jsp

- 스크립릿 영역에서 DB에 데이터 입력하는 기능 수행 → 사용자에게 보이지 않는 페이지

<%
// 이전 페이지(MemberList.jsp)로부터 넘어온 데이터 수신
//-> userName, userTel
request.setCharacterEncoding("UTF-8");
String userName = request.getParameter("userName");
String userTel = request.getParameter("userTel");
MemberDAO dao = null;
try
{
dao = new MemberDAO();
MemberDTO member = new MemberDTO();
member.setName(userName);
member.setTel(userTel);
dao.add(member);
}
catch(Exception e)
{
System.out.println(e.toString());
}
finally
{
try
{
dao.close();
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
response.sendRedirect("MemberList.jsp");
// 아래 보여주는 페이지는 모두 삭제
%>

➰ 체크할 내용 ➰

1) MemberInsert.jsp 페이지는 데이터 입력에 대한 액션 처리 페이지로 사용자에게 보여지지 않는다

   → 아래 보여주는 페이지 모두 삭제

회원 추가가 된 것을 확인할 수 있음!! (9, 홍길동)

저작자표시 (새창열림)
  1. # MemberDAO.java
  2. # MemberList.jsp
  3. # MemberInsert.jsp
'📚 Study/JSP & Servlet' 카테고리의 다른 글
  • JSP & Servlet :: JSP 액션 태그와 자바 빈즈(JAVA Bean)
  • JSP & Servlet :: DAO와 DTO를 활용한 데이터베이스 연결 실습 (성적 처리 프로그램)
  • JSP & Servlet :: 데이터베이스 연결 실습 (성적 처리 프로그램)
  • JSP & Servlet :: 포워딩(Forwarding)과 리다이렉트(Redirect)
bono-hye
bono-hye
bono-hye
공부를 합시다👩🏻‍💻
bono-hye
전체
오늘
어제
  • 분류 전체보기 (506)
    • 📚 Study (225)
      • Java (148)
      • Oracle (28)
      • JDBC (4)
      • Javascript (9)
      • JSP & Servlet (19)
      • JQuery (6)
      • Spring (9)
      • Springboot (0)
      • 개인 공부 (2)
    • ✏️ 문제풀이 (280)
      • 백준 (181)
      • 프로그래머스 (99)

블로그 메뉴

  • 홈
  • 글쓰기
  • 관리
hELLO · Designed By 정상우.v4.2.1
bono-hye
JSP & Servlet :: DAO와 DTO를 활용한 데이터베이스 연결 실습 (회원 관리 프로그램)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.