쓰레기통/[Web MVC 1] 모델1 - 모델2 진행과정

7. 원시 Model2, MVC 출현 (2 - view 생성까지)

고인돌개발자 2021. 5. 4. 19:09

학습목표 : M V C 를 흉내내보자.

 

실제 나처럼 예전 방식에 익숙한 사람에게 jsp 를 통해 저장된 값을 가져아게 하는 방식은 좀 생소하여 이해하기 어렵다.

하지만, 지금까지 순차적으로 잘 따라왔다면, 오늘 하는 부분을 마치면 아마도..

MVC 에 대한 문은 열어본것이 아닐까 싶음.

 

마지막으로 서블릿에 리스트를 요청하고, view/jsp 를 통해 화면을 보여준다.

여기서는 Attribute 를 이용하여 사용.

 

 

1. 리스트를 가져오도록 진행 

 

 

2. ServletList_ver1.java : 리스트를 가져오도록 Servlet 에서 작업을 하고, 던진다.

package com.study.mvc.ver1;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

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 com.study.comm.repository.Repository_member;
import com.study.comm.vo.Members;

/**
 * Servlet implementation class ServletList
 */
@WebServlet("/mvc/ver1/member_list")
public class ServletList_ver1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	/* Repository_member 객체를 얻어온다 , Members 에 있는 값을 가져와야 함. */
	private Repository_member repository_member = new Repository_member();
       
    public ServletList_ver1() {
        super();    
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {	
		//한글깨짐. response.getWriter().append("Served at: ").append(request.getContextPath());
		
		
		/*
		 *  Member 의 값을 받을 List 생성,, 여러개를 받기 위해 List 객체를 사용
		 *  아래 같은 구문이 솔직히 나에겐 어려움.. 
		 *  이해하자면, Members 객체를 인자로 하는 List 객체는  repository_member 가 갖고 있는 List 를 생성한다.
		 *  */
		List<Members> list = repository_member.getList();		
		System.out.println("list.size => "+ list.size());
		
		response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
		
		// 리스트의 값을 Attribute 를 통해 주고 받는다.
		request.setAttribute("member", list);
		
		/* forward 방식 
		 * List 의 값을 Attribute 를 통해 전달한다. 
		 * */		
		 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/views/mvc/servlet_ver1_list.jsp");
		 dispatcher.forward(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {	
		doGet(request, response);
	}

}

3. servlet_ver1_list.jsp : Attribute를 통해 List를 받아낸다. member 참조변수 사용

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page import="com.study.comm.vo.Members"%>
<%@ page import="com.study.comm.repository.Repository_member"%>
<%@ page import=" java.util.*" %>

        
<!DOCTYPE html>

<%
		
		List<Members> list = (ArrayList<Members>)request.getAttribute("member");	
		
		out.println("List Size : "+list.size());	

%>

<html>
<head>
<meta charset="UTF-8">
<title>새로운 회원을 맞이하세</title>
</head>
<body>
<a href="/index.html">[Go Home]</a>
<p>
package com.study.mvc.ver1;<br>
/WEB-INF/views/mvc/servlet_ver1_list.jsp<br>
환영합니다. <p>
<table>
		 <tr>		
		 <th>Name</th>
		 <th>Age</th>
		 <th>Mobile</th>
		 </tr>	
<%  for (Members members : list) { %>
		<tr>
		<td><%=members.getStrName() %></td>
		<td><%=members.getIntAge() %></td>
		<td><%=members.getStrMobile() %></td>
		</tr>
<% } %>
</table>

</body>
</html>

 

* 여기까지 디렉토리 구조

 

 

 

위 방식을 이용하면, 결국 Servlet 에서 DB에 접근하여 데이타를 가져오고, 

해당 데이타를 View 에 던지는 것이 가능하다.
   - 기존 ServletJoin_ver1.java 서블릿에서 Repository_member 의 list (static) 에 값을 넣었기 때문에
     이 값을 jsp 에 넘겨주고, jsp 에서 이 값을 열도록 해야 한다. (이게 view 를 분리할때 Model 의 역할이 된다.)

 

 이번 프로젝트는 우선 여기에서 끊고

다음 시간부터는 이제 서블릿에서 일어나는 일들을 공부하면서 mvc 패턴에서 어떻게 서블릿이 변화하는지를 공부해보도록하자.
또한 DB 를 접근하고, 데이타를 가져오는 과정을 공부해 보기로 한다.


그럼 스프링을 하는 거냐고 물으신다면,
스프링은 단지 라이브러리에 지나지 않는다고 말해주고 싶다.
물론, 내가 잘 모르니 그냥 무시하는거다.