todoListController는 GET 방식만 처리하므로 doGet()만 추가.
package org.zerock.w1.calc.todo.service;
import org.zerock.w1.calc.todo.dto.TodoDTO;
import org.zerock.w1.calc.todo.service.TodoService;
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 java.io.IOException;
import java.util.List;
@WebServlet(name= "todoListController", urlPatterns = "/todo/list")
public class TodoListController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws
ServletException,IOException{
System.out.println("/todo/list");
List<TodoDTO> dtoList = TodoService.INSTANCE.getList();
req.setAttribute("list",dtoList);
req.getRequestDispatcher("/WEB-INF/todo/list.jsp").forward(req,resp); // 현재의 요청을 다른 서버의 자원에게 전달하는 용도
}
}
getRequestDispatcher()을 이용해서 RequestDispatcher 타입의 객체를 구할 수 있고, 현재요청을 다른 서버자원(JSP)에 전달한다. 이때 forward()는 현재까지의 모든 응답 내용은 무시하고 JSP가 작성하는 내용만을 브라우저로 전달
즉, 현재 요청을 list.jsp에 전달하게 된다.
전달받을 list.jsp를 구현해보기 위해 다음과 같은 코드를 작성한다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>List Page</h1>
<ul>
<c:forEach var="dto" items="${list}">
<li>${dto}</li>
</c:forEach>
</ul>
</body>
</html>
http://localhost:8080/todo/list 에 접속을 하면 다음과 같은 페이지가 나오게 된다.
참고로 TodoDTO와 TodoService 의 내용은 뒤에 추가로 작성할 예정.