JSP_7강_2_FrontController를 활용한 DB연동

열라뽕따히·2024년 3월 26일

JSP

목록 보기
36/43

view -> member_list.jsp에서

회원등록 버튼과 검색처리 기능을 추가하자


=============================코드=============================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

		<div align = "center">
			<hr width = "30%" color = "red">
				<h3>MEMBER 테이블 전체 회원 목록 페이지</h3>
			<hr width = "30%" color = "red">
			<br/> <br/>
			
			<table border = "1" width = "500">
				<tr>
					<th>회원 No.</th> <th>회원 이름</th> <th>회원 직업</th> <th>회원 등록일</th> <th>상세정보</th>
				</tr>
				
				<c:set var = "list" value = "${List }" />
				
				<c:if test="${!empty list }">   <!-- 데이터가 있다면 -->
					<c:forEach items = "${list }" var = "dto">  
						<tr>
							<td> ${dto.getNum() } </td>
							<td> ${dto.getMemname() } </td>
							<td> ${dto.getJob() } </td>
							<td> ${dto.getRegdate().substring(0,10) } </td>
							<td>
								<input type = "button" value = "상세정보" onclick = "location.href = 'content.go?num=${dto.getNum() }'">
							</td>
						</tr>
					</c:forEach>
				</c:if>
				
				<c:if test="${empty list }">
						<tr>
							<td colspan = '2' align = "center">
								<h3>전체 회원 리스트가 없습니다...</h3>
							</td>
						</tr>
				</c:if>  
			</table>
			
			<br/>
			
			<input type = "button" value = "회원등록" onclick = "location.href='insert.go'">
			<br/><br/>
			
			<%-- 검색 관련 폼 태그 --%>
			<form method = "post" action = "<%=request.getContextPath() %>/search.go">
				<select name = "field">
					<option value = "id">아이디</option>
					<option value = "name">이름</option>
					<option value = "job">직업</option>
					<option value = "addr">주소</option>
				</select> 
				
				<input type = "text" name = "keyword">&nbsp;&nbsp;&nbsp;
				<input type = "submit" value = "검색">
			</form>
			
		</div>

</body>
</html>

=============================실행=============================



다시 FrontController 클래스로 가서 else if를 작성



MemberInsertAction() 메서드를 만들자


=============================코드=============================

package com.member.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MemberInsertAction implements Action {

	@Override
	public String execute(HttpServletRequest request, HttpServletResponse response) {
		// 회원 등록 폼 페이지로 이동시키는 비즈니스 로직
		
		return "view/member_insert.jsp";
	}

}



view -> member_insert 에서 파일을 생성하자


=============================코드=============================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<div align = "center">
		<hr width = "30%" color = "marmoon">
			<h3>MEMBER 테이블 회원 추가 폼 페이지</h3>
		<hr width = "30%" color = "marmoon">
		<br/> <br/>
		
		<form method = "post" action = "<%=request.getContextPath() %>/insert_ok.go">
			<table border = "1" width = "350">
				<tr>
					<th>회원 아이디</th>
					<td>
						<input type = "text" name = "mem_id">
					</td>
				</tr>
				
				<tr>
					<th>회원 이름</th>
					<td>
						<input type = "text" name = "mem_name">
					</td>
				</tr>
				
				<tr>
					<th>회원 비밀번호</th>
					<td>
						<input type = "password" name = "mem_pwd">
					</td>
				</tr>
				
				<tr>
					<th>회원 나이</th>
					<td>
						<input type = "text" name = "mem_age">
					</td>
				</tr>
				
				<tr>
					<th>회원 마일리지</th>
					<td>
						<input type = "text" name = "mem_mileage">
					</td>
				</tr>
				
				<tr>
					<th>회원 직업</th>
					<td>
						<input type = "text" name = "mem_job">
					</td>
				</tr>
				
				<tr>
					<th>회원 주소</th>
					<td>
						<input type = "text" name = "mem_addr">
					</td>
				</tr>
				
				<tr>
					<td colspan = "2" align = "center">
						<input type = "submit" value = "회원추가">&nbsp;&nbsp;&nbsp;
						<input type = "reset" value = "다시작성">
					</td>
				</tr>
			</table>
		</form>
	</div>

</body>
</html>



=============================실행=============================

회원등록 클릭!



회원추가를 클릭했을 때 보여지는 동작을 작성하자

FrontController 클래스로 가서
MemberInsertOkAction() 메서드 생성



회원 추가 폼 페이지에서 넘어온 데이터들을 DB로 넘겨줄

MemberInsertOkAction() 클래스 생성


=============================코드=============================

package com.member.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.member.model.MemberDAO;
import com.member.model.MemberDTO;

public class MemberInsertOkAction implements Action {

	@Override
	public String execute(HttpServletRequest request, HttpServletResponse response) {
		// 회원 추가 폼 페이지에서 넘어온 데이터들을 member 테이블의 회원으로 추가시키는 비지니스 로직
		
		// 1단계 : 회원 추가 폼 페이지에서 넘어온 데이터들을 받아주어야 함
		String member_id = request.getParameter("mem_id").trim();
		String member_name = request.getParameter("mem_name").trim();
		String member_pwd = request.getParameter("mem_pwd").trim();
		int member_age = Integer.parseInt(request.getParameter("mem_age").trim());
		int member_mileage = Integer.parseInt(request.getParameter("mem_mileage").trim());
		String member_job = request.getParameter("mem_job").trim();
		String member_addr = request.getParameter("mem_addr").trim();
		
		// 2단계 : 데이터들을 DB에 전송을 해야 함. DTO객체를 이용하여 전송하면 됨
		//				이때 DTO 객체의 setter() 메서드의 인자로 데이터들을 넘겨주어 멤버변수에 초기값으로 할당
		MemberDTO dto = new MemberDTO();
		dto.setMemid(member_id);
		dto.setMemname(member_name);
		dto.setPwd(member_pwd);
		dto.setAge(member_age);
		dto.setMileage(member_mileage);
		dto.setJob(member_job);
		dto.setAddr(member_addr);
		
		// 3단계 : DAO 객체의 회원 추가 메서드 호출 시 인자에 DTO 객체를 넘겨주어
		//				member 테이블에 저장 하자
		MemberDAO dao = MemberDAO.getInstance();
		
		dao.insertMember(dto);
		
		return null;
	}

}




MemberDAO에

insertMember(dto) 메서드를 만들자!


=============================코드=============================

// member 테이블에 회원을 추가하는 메서드
	public int insertMember(MemberDTO dto) {
		int result = 0, count = 0;
		
		try {
			openConn();
			
			sql = "select max(mem_no) from member";
			pstmt = con.prepareStatement(sql);
			rs = pstmt.executeQuery();
			
			if(rs.next()) {
				count = rs.getInt(1) + 1;
			}
			
			sql = "insert into member values(?, ?, ?, ?, ?, ?, ?, ?, sysdate)";
			pstmt = con.prepareStatement(sql);
			pstmt.setInt(1, count);
			pstmt.setString(2, dto.getMemid());
			pstmt.setString(3, dto.getMemname());
			pstmt.setString(4, dto.getPwd());
			pstmt.setInt(5, dto.getAge());
			pstmt.setInt(6, dto.getMileage());
			pstmt.setString(7, dto.getJob());
			pstmt.setString(8, dto.getAddr());
			
			result = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			closeConn(rs, pstmt, con);
		}
		return result;
	}



MemberInsertOkAction() 로 가서 나머지 작성


=============================코드=============================

package com.member.action;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.member.model.MemberDAO;
import com.member.model.MemberDTO;

public class MemberInsertOkAction implements Action {

	@Override
	public String execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
		// 회원 추가 폼 페이지에서 넘어온 데이터들을 member 테이블의 회원으로 추가시키는 비지니스 로직
		
		// 1단계 : 회원 추가 폼 페이지에서 넘어온 데이터들을 받아주어야 함
		String member_id = request.getParameter("mem_id").trim();
		String member_name = request.getParameter("mem_name").trim();
		String member_pwd = request.getParameter("mem_pwd").trim();
		int member_age = Integer.parseInt(request.getParameter("mem_age").trim());
		int member_mileage = Integer.parseInt(request.getParameter("mem_mileage").trim());
		String member_job = request.getParameter("mem_job").trim();
		String member_addr = request.getParameter("mem_addr").trim();
		
		// 2단계 : 데이터들을 DB에 전송을 해야 함. DTO객체를 이용하여 전송하면 됨
		//				이때 DTO 객체의 setter() 메서드의 인자로 데이터들을 넘겨주어 멤버변수에 초기값으로 할당
		MemberDTO dto = new MemberDTO();
		dto.setMemid(member_id);
		dto.setMemname(member_name);
		dto.setPwd(member_pwd);
		dto.setAge(member_age);
		dto.setMileage(member_mileage);
		dto.setJob(member_job);
		dto.setAddr(member_addr);
		
		// 3단계 : DAO 객체의 회원 추가 메서드 호출 시 인자에 DTO 객체를 넘겨주어
		//				member 테이블에 저장 하자
		MemberDAO dao = MemberDAO.getInstance();

// -----------------------여기서부터 작성-----------------------
		int check = dao.insertMember(dto);
		
		PrintWriter out = response.getWriter();
		
		if(check > 0) {
			out.println("<script>");
			out.println("alert('회원 추가 성공!')");
			out.println("location.href='select.go'");
			out.println("</script>");
		}else {
			out.println("<script>");
			out.println("alert('회원 추가 실패...')");
			out.println("history.back()");
			out.println("</script>");
		}
		
		return null;
	}

}



0개의 댓글