인프런 커뮤니티 질문&답변

Lego님의 프로필 이미지
Lego

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

프론트 컨트롤러 도입 - v1

whitelabel error page

해결된 질문

작성

·

573

0

http://localhost:8080/front-controller/v1/members/new-form 이 들어가면 whitelabel error page가 뜨는데 jsp,servlet-mvc할 때까지는 잘 됐었는데 frontcontroller에서 안 되는 것 보니 어딘가 잘못된 것 같은데 어디인지를 모르겠습니다.

servlet-mvc에서 사용한 똑같은 view페이지인 jsp파일을 사용하는데 갑자기 왜 안될까요??

  • FrontControllerServletV1

package hello.servlet.web.frontcontroller.v1;

import hello.servlet.web.frontcontroller.v1.controller.MemberFormControllerV1;
import hello.servlet.web.frontcontroller.v1.controller.MemberListControllerV1;
import hello.servlet.web.frontcontroller.v1.controller.MemberSaveControllerV1;

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.HashMap;
import java.util.Map;

@WebServlet(name = "frontControllerServletV1", urlPatterns = "/front-controller/vi/*")
public class FrontControllerServletV1 extends HttpServlet {

    private Map<String, ControllerV1> controllerMap = new HashMap<>();

    public FrontControllerServletV1() {
        controllerMap.put("/front-controller/v1/members/new-form", new MemberFormControllerV1());
        controllerMap.put("/front-controller/v1/members/save", new MemberSaveControllerV1());
        controllerMap.put("/front-controller/v1/members", new MemberListControllerV1());
    }

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("FrontControllerServletV1.service");

        String requestURI = request.getRequestURI();

        ControllerV1 controller = controllerMap.get(requestURI);
        if (controller == null) {
            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
            return;
        }

        controller.process(request, response);

    }
}

 

 

 

 

답변 2

2

안녕하세요. Lego님, 공식 서포터즈 David입니다.

매핑된 url pattern이 v1이 아니라 vi로 보여지는데, 이 부분 확인 부탁드립니다.

image

감사합니다.

Lego님의 프로필 이미지
Lego
질문자

혼자 고쳐보려고 계속 들여다봤는데 왜 저는 저게 안 보였는지.....

감사합니다!

0

Lego님의 프로필 이미지
Lego
질문자

고쳐보려고 하는데 도통 이유를 모르겠습니다.

FrontControllerServletV1에서 @WebServletd어노테이션으로 /front-controller/vi/* 입력하면 받았고

controllerMap에다가 다 알맞게 넣어놨고 마지막에 controller.process(request,response); 해서 process함수도 실행시켜줬는데

왜 404가 뜰까요?....

Lego님의 프로필 이미지
Lego

작성한 질문수

질문하기