상세 컨텐츠

본문 제목

서블릿 컨트롤러, 커맨드 패턴

JSP

by kwanghyup 2020. 7. 5. 20:32

본문

커맨드 핸들러 : CommandHandler

package mvc.command;

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

public interface CommandHandler {

    public String process(HttpServletRequest request, HttpServletResponse response) throws ServletException;

}

 

커맨들 핸들러 구현체 : BoardListHandler

package mvc.command;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.logging.Handler;
import java.util.logging.LogRecord;

public class BoardListHandler implements CommandHandler {

    @Override
    public String process(HttpServletRequest request, HttpServletResponse response) throws ServletException {
        System.out.println("boardList");
        // 글 목록 읽기 요청
        // 뷰 페이지에서 사용할 정보 저장, (Dao객체 사용)
        String value = "어떤 값";
        request.setAttribute("value",value);

        // 뷰페이지 리턴
        return "/view/viewBoardList.jsp";
    }
}

 

커맨드 핸들러 구현체 : NullHandler

package mvc.command;

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

public class NullHandler implements CommandHandler {
    @Override
    public String process(HttpServletRequest request, HttpServletResponse response) throws ServletException {
        return "/view/viewNullPage.jsp";
    }
}

 

서블릿 컨트롤러 : CommandController

package mvc.command;

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 java.io.IOException;

@WebServlet(urlPatterns = "/board")
public class CommandController extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        proceedRequest(req,resp);
    }

    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        proceedRequest(req,resp);
    }

    private void proceedRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String command = request.getParameter("command");
        System.out.println("cmd : "+command);

        CommandHandler handler = null;
        if(command == null){
            handler = new NullHandler();
        } else if (command.equals("BoardList")){
            handler = new BoardListHandler();
        }

        String viewPage = handler.process(request,response);

        RequestDispatcher dispatcher = request.getRequestDispatcher(viewPage);
        dispatcher.forward(request,response);
    }
}

 

JSP페이지 

/view/viewBoardList.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    글 목록 읽기 <br>
    ${ value }
</body>
</html>

 

/view/viewNullPage.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    잘못된 요청
</body>
</html>

 

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>커맨드 패턴</title>
  </head>
  <body>
  <a href="/board">null 페이지 </a> <br>
  <a href="/board?command=BoardList">글 목록</a> <br>
  </body>
</html>

관련글 더보기

댓글 영역