학습목표 : 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 |