Study Web Development

2월 8일

이전으로

Servlet & JSP

9. MVC

mvcPage

프로젝트 생성 및 설정
  1. WEB-INF 폴더의 board.properties 하단에 다음의 내용을 추가
/board/listReply.do=kr.board.action.ListReplyAction
Model
  1. 새 클래스 ListReplyAction 생성
package kr.board.action;

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.codehaus.jackson.map.ObjectMapper;

import kr.board.dao.BoardDAO;
import kr.board.vo.BoardReplyVO;
import kr.controller.Action;
import kr.util.PagingUtil;

public class ListReplyAction implements Action {

	@Override
	public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
		// 전송된 데이터 인코딩 처리
		request.setCharacterEncoding("UTF-8");

		String pageNum = request.getParameter("pageNum");
		if(pageNum==null) pageNum = "1";

		int board_num = Integer.parseInt(request.getParameter("board_num"));

		BoardDAO dao = BoardDAO.getInstance();
		int count = dao.getReplyBoardCount(board_num);

		// ajax 방식으로 목록을 표시하기 때문에 PagingUtil은 페이지 수를 표시(getPagingHtml)하는 것이 아니라 목록 데이터의 분할을 위한 ROWNUM 번호를 구하는 것이 목적
		int rowCount = 10;
		PagingUtil page = new PagingUtil(Integer.parseInt(pageNum), count, rowCount, 1, null); // pageCount와 pageUrl은 불필요하므로 임의의 값 전달

		List<BoardReplyVO> list = null;
		if(count>0) {
			list = dao.getListReplyBoard(page.getStartCount(), page.getEndCount(), board_num);
		}
		else {
			list = Collections.emptyList(); // 데이터가 없는 경우 null 대신 비어 있는 리스트를 반환
		}
		
		HttpSession session = request.getSession();
		Integer user_num = (Integer)session.getAttribute("user_num");
		
		Map<String, Object> mapAjax = new HashMap<String, Object>();
		mapAjax.put("count", count);
		mapAjax.put("rowCount", rowCount);
		mapAjax.put("list", list);
		mapAjax.put("user_num", user_num);

		// JSON 데이터로 반환
		ObjectMapper mapper = new ObjectMapper();
		String ajaxData = mapper.writeValueAsString(mapAjax);
		
		request.setAttribute("ajaxData", ajaxData);
		
		// JSP 경로 반환
		return "/WEB-INF/views/common/ajax_view.jsp";
	}

}

다음으로