2 분 소요

안녕하세요. Nerd-Lee입니다.
공부 내용은, 인프런 박매일님의 [NarP Series]MVC 프레임워크는 내 손에[나프1탄] 을 참고하였습니다.
MVC 1단계인, Servlet 환경으로만 만들어보고, MVC 2단계로 넘어가고
나중에는 Spring Framework를 사용하는 방식의 강의입니다.
MVC 1단계는, Controller + Model 만을 사용하는 방식입니다.


1. Servlet에서 Controller와 Model의 동작원리

  • Servlet에서, Controller는 Servlet으로, Model은 Java class 파일로 만든다.
  • 모델은 데이터베이스를 연동하는 DAO를 만든다.
  • JDBC로, DAO와 DB를 연결한다.
  • DAO에는, method들이 있을 것이고 생성,삭제,업데이트,추가와 같은 기능을 하는 메서드들이 있을 것이다.
  • Client가 요청을 Controller에게 하면, Controller가 Model(DAO) 에게, 해당 요청에 맞는 메서드를 실행하고
    Model(DAO)에서, DB에 접근해서, 요청에 맞는 쿼리문을 실행하고, 그 값을 Controller에게 전달한다.
    하지만 Servlet에서, Controller는 View의 역할도 하기 때문에, 상당히 까다롭지만…
    요청에 맞는 View를 실행시켜서 Client에게 응답한다.

2. Tables Generator 홈페이지에서 테이블 만들기

  • 테이블을 만들어서, 회원가입 틀을 만들 것이다. html 태그를 편하게 가져올 수 있게
    Tables Generator라는 곳에서 7행 2열의 테이블을 쉽게 만들 수 있다.
    File에, New table을 클릭해서, Row : 7, Column : 2로 테이블을 생성한다.
<!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://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<script
	src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
<script
	src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script
	src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
	회원가입 화면
	<form action="memberInsert.do" method="post">
		<table class="table table-bordered">
			<tr>
				<td>아이디</td>
				<td><input type="text" name="id" /></td>
			</tr>
			<tr>
				<td>패스워드</td>
				<td><input type="text" name="password" /></td>
			</tr>
			<tr>
				<td>이름</td>
				<td><input type="text" name="name" /></td>
			</tr>
			<tr>
				<td>나이</td>
				<td><input type="text" name="age" /></td>
			</tr>
			<tr>
				<td>이메일</td>
				<td><input type="text" name="email" /></td>
			</tr>
			<tr>
				<td>전화번호</td>
				<td><input type="text" name="phone" /></td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<input class="btn btn-primary" type="submit" value="가입" />
					<input class="btn btn-warning" type="reset" value="취소" />
				</td>
			</tr>
		</table>
	</form>
</body>
</html>
  • 만든 코드는 다음과 같다. 값을 다 입력하고, 전송버튼을 누르면, form 태그에 있는 action 속성에 맵핑되어 있는 url로 넘어가서
    DB에 있는 user 테이블에 값을 추가해주는 기능을 만들면 된다.

2. Servlet을 만들자.

  • controller 패키지에, MemberInsertController 서블릿을 만든다. 맵핑은 /memberInsert.do.
@WebServlet("/memberInsert.do")
public class MemberInsertController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 1. 클라이언트에서 넘어온 파라미터 수집(VO에 하나의 정보로 묶어서 넣어주면 된다.)
		String id = request.getParameter("id");
		String password = request.getParameter("password");
		String name = request.getParameter("name");
		int age = Integer.parseInt(request.getParameter("age"));
		String email = request.getParameter("email");
		String phone = request.getParameter("phone");
		
		// vo 수집은, 생성자로 해도 되고, Setter로 해도 된다.
		//MemberVO vo = new MemberVO(id, password, name, age, email, phone);
		MemberVO vo = new MemberVO();
		vo.setId(id);
		vo.setPassword(password);
		vo.setAge(age);
		vo.setName(name);
		vo.setEmail(email);
		vo.setPhone(phone);
		
		System.out.println(vo.toString());
	}
}
  • 코드는 위에처럼 짰다. DB작업은 다음 강의에서 공부를 할 수 있을 것 같다.
  • 일단, 이 상태로 테스트를 진행해보자. 그런데, 404 에러가 뜬다. 그 이유가 있다.
    memberRegister.html에 있는 form 태그에 action 속성이 /memberInsert.do 로 되어 있다.
    이렇게 되면, 경로가 member/memberInsert.do로 나오게 되기 때문에
    action의 속성을 ../memberInsert.do로 만들어줘야 한다.
    그리고 다시 서버를 껐다 킨 다음, 테스트를 진행해보면, Console창에 잘 뜨게 된다. 아주 귀찮다..
    Spring이라면 더 편하게 했을텐데ㅠㅠ하지만 Spring까진 많은 강의가 남았고..
    기본을 알아둬야 나중에 편하기 때문에.. 귀찮더라도 열심히 하자ㅠㅠ


이 글이 도움이 되셨다면 댓글 부탁드립니다^^
다음 글로 찾아오겠습니다!