반응형
# MVC03_06 Basic MVC 완성 (Controller와 View연동 핵심)
## 회원 리스트
### MemberListController
- memberList.do
package kr.bit.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.bit.model.MemberDAO;
import kr.bit.model.MemberVO;
@WebServlet("/memberList.do")
public class MemberListController extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1. 클라이언트 요청 받기 (memberList.do)
MemberDAO dao = new MemberDAO();
// 2. 회원 전체 리스트 가져오기(Model 연동)
ArrayList<MemberVO> list = dao.memberList();
// 3. JSP에 값을 전달하기 위한 객체 바인딩(request 바인딩)
request.setAttribute("list", list);
// forward 기법
RequestDispatcher rd = request.getRequestDispatcher("member/meberList.jsp");
rd.forward(request, response);
}
}
### memberList.jsp
- MVC03 > WebContent > member 에 memberList.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%@ page import="java.util.*" %>
<%
ArrayList<MemberVO> list = (ArrayList<MemberVO>) request.getAttribute("list");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css'>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>
<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js'></script>
<script>
function deleteFn(num) {
location.href="memberDelete.do?num=" + num;
}
</script>
</head>
<body>
[MVC03 예제 - Controller + View]
<table class="table table-bordered">
<tr>
<td>번호</td>
<td>아이디</td>
<td>비밀번호</td>
<td>이름</td>
<td>나이</td>
<td>이메일</td>
<td>전화번호</td>
<td>삭제</td>
</tr>
<%
for (MemberVO vo : list) {
%>
<tr>
<td><%=vo.getNum() %></td>
<td><a href="memberContent.do?num=<%=vo.getNum()%>"><%=vo.getId() %></a></td>
<td><%=vo.getPass() %></td>
<td><%=vo.getName() %></td>
<td><%=vo.getAge() %></td>
<td><%=vo.getEmail() %></td>
<td><%=vo.getPhone() %></td>
<td><input type="button" value="삭제" class="btn btn-warning" onclick="deleteFn(<%=vo.getNum() %>)" /></td>
</tr>
<%
}
%>
<tr>
<td colspan="8" align="right"><input type="button" value="회원가입" class="btn btn-primary" onclick="location.href='member/memberRegister.html'"/></td>
</tr>
</table>
</body>
</html>
## 회원 가입
### MemberInsertController
- memberInsert.do
package kr.bit.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.bit.model.MemberDAO;
import kr.bit.model.MemberVO;
@WebServlet("/memberInsert.do")
public class MemberInsertController extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
// 1. 파라미터 수집(VO)
String id = request.getParameter("id");
String pass = request.getParameter("pass");
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
String email = request.getParameter("email");
String phone = request.getParameter("phone");
// 파라미터 수집(VO)
// MemberVO vo = new MemberVO(id, pass, name, age, email, phone);
MemberVO vo = new MemberVO();
vo.setId(id);
vo.setPass(pass);
vo.setName(name);
vo.setAge(age);
vo.setEmail(email);
vo.setPhone(phone);
//System.out.println("vo : " + vo); // vo.toString() 이 생략되어있는 것.
// Model과 연동하는 부분
MemberDAO dao = new MemberDAO();
int cnt = dao.memberInsert(vo);
PrintWriter out = response.getWriter();
// 가입 성공
if ( cnt > 0 ) {
//out.println("insert success");
// 다시 회원 리스트 보기로 가야함.
response.sendRedirect("/MVC03/memberList.do");
// 가입 실패 -> 예외 객체를 만들어서 WAS에게 던지자.
} else {
throw new ServletException("not insert");
}
}
}
### memberRegister.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>신규 회원 가입</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<h1>회원가입화면</h1>
<form action="/MVC03/memberInsert.do" method="POST" >
<table class="table table-bordered">
<tr>
<td>아이디</td>
<th><input type="text" name="id" /></th>
</tr>
<tr>
<td>패스워드</td>
<th><input type="password" name="pass" /></th>
</tr>
<tr>
<td>이름</td>
<th><input type="text" name="name" /></th>
</tr>
<tr>
<td>나이</td>
<th><input type="text" name="age" /></th>
</tr>
<tr>
<td>이메일</td>
<th><input type="text" name="email" /></th>
</tr>
<tr>
<td>전화번호</td>
<th><input type="text" name="phone" /></th>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="가입" class="btn btn-primary"/>
<input type="reset" value="취소" class="btn btn-warning"/>
</td>
</tr>
</table>
</form>
</body>
</html>
## 회원 삭제
### MemberDeleteController
- memberDelete.do
package kr.bit.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.bit.model.MemberDAO;
@WebServlet("/memberDelete.do")
public class MemberDeleteController extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int num = Integer.parseInt(request.getParameter("num"));
MemberDAO dao = new MemberDAO();
int cnt = dao.memberDelete(num);
if (cnt > 0) {
response.sendRedirect("/MVC03/memberList.do");
} else {
throw new ServletException("not delete");
}
}
}
## 회원 상세보기
### MemberContentController
- memberContent.do
package kr.bit.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.bit.model.MemberDAO;
import kr.bit.model.MemberVO;
@WebServlet("/memberContent.do")
public class MemberContentController extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int num = Integer.parseInt(request.getParameter("num"));
MemberDAO dao = new MemberDAO();
MemberVO vo = dao.memberContent(num);
// 객체 바인딩
request.setAttribute("vo", vo);
RequestDispatcher rd = request.getRequestDispatcher("member/memberContent.jsp");
rd.forward(request, response);
}
}
### memberContent.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%
MemberVO vo = (MemberVO)request.getAttribute("vo");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css'>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>
<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js'></script>
</head>
<body>
<form action="memberUpdate.do" method="post">
<input type="hidden" name="num" value="<%=vo.getNum() %>"/>
<table border="1" class="table table-bordered">
<% if (vo != null) { %>
<tr>
<td colspan="2"><%=vo.getName() %> 회원의 상세보기</td>
</tr>
<tr>
<td>번호</td>
<td><%=vo.getNum() %></td>
</tr>
<tr>
<td>아이디</td>
<td><%=vo.getId() %></td>
</tr>
<tr>
<td>비밀번호</td>
<td><%=vo.getPass() %></td>
</tr>
<tr>
<td>이름</td>
<td><%=vo.getName() %></td>
</tr>
<tr>
<td>나이</td>
<td><input type="text" name="age" value="<%=vo.getAge() %>" /></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="text" name="email" value="<%=vo.getEmail() %>" /></td>
</tr>
<tr>
<td>전화번호</td>
<td><input type="text" name="phone" value="<%=vo.getPhone() %>" /></td>
</tr>
<% } else { %>
<tr>
<td>일치하는 회원이 없습니다.</td>
</tr>
<% } %>
<tr>
<td colspan="2" align="center">
<input type="submit" value="수정하기" class="btn btn-primary" />
<input type="reset" value="취소" class="btn btn-warning" />
<input type="button" value="리스트" onclick="location.href='/MVC03/memberList.do'" class="btn" />
</td>
</tr>
</table>
</form>
</body>
</html>
## 회원정보 수정
### MemberUpdateController
- memberUpdate.do
package kr.bit.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.bit.model.MemberDAO;
import kr.bit.model.MemberVO;
@WebServlet("/memberUpdate.do")
public class MemberUpdateController extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
// 1. 파라미터 수집(VO)
int num = Integer.parseInt(request.getParameter("num"));
int age = Integer.parseInt(request.getParameter("age"));
String email = request.getParameter("email");
String phone = request.getParameter("phone");
MemberVO vo = new MemberVO();
vo.setNum(num);
vo.setAge(age);
vo.setEmail(email);
vo.setPhone(phone);
MemberDAO dao = new MemberDAO();
int cnt = dao.memberUpdate(vo);
if (cnt > 0) {
response.sendRedirect("/MVC03/memberList.do");
} else {
throw new ServletException("not update");
}
}
}
### memberUpdate.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%
int num = Integer.parseInt(request.getParameter("num"));
int age = Integer.parseInt(request.getParameter("age"));
String email = request.getParameter("email");
String phone = request.getParameter("phone");
MemberVO vo = new MemberVO();
vo.setNum(num);
vo.setAge(age);
vo.setEmail(email);
vo.setPhone(phone);
MemberDAO dao = new MemberDAO();
int cnt = dao.memberUpdate(vo);
if (cnt > 0) {
response.sendRedirect("/MVC03/memberList.do");
} else {
throw new ServletException("not update");
}
%>
반응형