학습목표 : 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 를 접근하고, 데이타를 가져오는 과정을 공부해 보기로 한다.
그럼 스프링을 하는 거냐고 물으신다면,
스프링은 단지 라이브러리에 지나지 않는다고 말해주고 싶다.
물론, 내가 잘 모르니 그냥 무시하는거다.
'쓰레기통 > [Web MVC 1] 모델1 - 모델2 진행과정' 카테고리의 다른 글
| 6. Jsp (동적웹을 좀더 쉽게) (0) | 2021.05.04 |
|---|---|
| 3. 프로젝트 생성, 톰캣으로 화면 보기까지 (0) | 2021.05.04 |
| 7. 원시 Model2, MVC 출현 (1 - view 생성까지) (0) | 2021.04.22 |
| 5. 원시 Servlet (자바진영의 동적웹 탄생) (0) | 2021.04.22 |
| 4. 선행작업, member 와 repository (0) | 2021.04.22 |