inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

프론트 컨트롤러 도입 - v1

FrontControllerServletV1 404오류

283

참깨햄스터

작성한 질문수 6

0

안녕하세요 강의를 따라 진행하면서 /front-controller/v1/members/new-form에 들어가면 404오류가 뜨고있습니다

어떻게 해결할지 몰라 질문글을 남깁니다

https://drive.google.com/file/d/11KMx5ovVj1_bTCjTaOx2u7fx4uxQcV6g/view?usp=sharing

spring mvc

답변 2

0

y2gcoder

안녕하세요. 참깨햄스터님, 공식 서포터즈 y2gcoder입니다.

보내주신 코드 살펴보았습니다! 각 단계를 순서대로 진행해주십쇼!

1) build.gradle 정리

  • build.gradle 에서 서블릿 관련 의존성 들이 중복되어있습니다! 스프링 부트 3버전 이상이므로 그 이전의 의존성은 필요없습니다! 지워주십쇼

image.png

(지우고 꼭 오른쪽 위의 코끼리를 눌러 gradle 을 리프레시 해주십쇼!)

 

2) build tool 변경

  • 스프링 부트 3버전 부터는 build tool을 gradle 로 변경해주시길 권장하고 있습니다! Settings > Build, Execution, Deployment > Build Tools > Gradle 로 들어가셔서 모두 Gradle 로 변경해주십쇼! 그 후에 Apply & OK 를 눌러 적용해주십쇼!

image.png

이유에 대해서 궁금하시다면 자주하는 질문(클릭) 을 참고해주십쇼!

 

3) FrontControllerServletV1 오타 수정

  • urlPatterns 에 v1 앞에 스페이스바가 있습니다! 지워주십쇼!

image.png

 

 

4) 각 Member***ControllerV1 의 내부 코드가 서로 잘못 적혀있는 것으로 보입니다!

  • 강의자료를 보고 각 이름에 맞게 코드를 다시 작성해주십쇼! 예를 들어 지금 작성해주신 MemberFormControllerV1 의 코드는 이렇습니다

package hello.servlet.web.frontcontroller.v1.controller;

import hello.servlet.domain.member.Member;
import hello.servlet.domain.member.MemberRepository;
import hello.servlet.web.frontcontroller.v1.ControllerV1;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

public class MemberFormControllerV1 implements ControllerV1 {
    private MemberRepository memberRepository = MemberRepository.getInstance();
    @Override
    public void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age"));
        Member member = new Member(username, age);
        memberRepository.save(member);
        request.setAttribute("member", member);
        String viewPath = "/WEB-INF/views/save-result.jsp";
        RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
        dispatcher.forward(request, response);
    }
}

강의자료에 있는 MemberFormControllerV1의 코드는 이렇습니다! 나머지 코드들도 강의자료 참고 후 변경해주십쇼!

 

그 후에 애플리케이션을 실행해주시면!

image.png

해당 화면을 볼 수 있게 됩니다 🙂

 

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 참깨햄스터님.

스프링 MVC 강의를 진행하면서 404 오류를 만나셨군요. 404 오류는 주로 URL 매핑이 제대로 되지 않았을 때 발생합니다. 여기에 몇 가지 일반적인 해결 방법들을 정리해 드리겠습니다.

  1. URL 매핑 확인: 먼저, FrontControllerServletV1 클래스에서 해당 URL이 제대로 매핑되어 있는지 확인해 보세요. @WebServlet("/front-controller/v1/*")와 같은 애너테이션으로 URL 패턴을 매핑해야 합니다.

  2. 파일 경로 확인: JSP 파일 혹은 다른 뷰 파일이 제대로 위치해 있는지 확인하세요. 보통 WEB-INF/views 내에 파일이 있어야 합니다. 또한 강의에서 제공한 디렉토리 경로와 실제 프로젝트의 디렉토리 구조가 일치하는지 확인하세요.

  3. 오타 확인: 경로나 파일 이름에 오타가 있는 경우도 많습니다. 특히 대소문자 실수는 자주 발생하니 주의 깊게 확인해 보세요.

다음은 Inflearn의 유사한 질문과 답변 링크입니다. 이 유사한 해결책들이 도움이 될 수 있습니다:
- “Controller V2 404 에러” - 디렉토리 이름과 코드의 경로가 일치하는지를 확인하는 것이 중요하다는 내용이 포함되어 있습니다.
- “SpringMemberFormControllerV1 404 에러” - 캐시 문제로 인한 오류일 가능성과 해결 방법에 대해 다룹니다.

질문 하신 상황과 꼭 맞는 해결 방법을 찾기 어려울 때는, 공유 주신 구글 드라이브 링크에서 소스 코드 및 설정을 한번 더 자세히 살펴보시고, 코드에 문제점이 없는지 디버깅 해보시기를 추천드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

참깨햄스터

누적된 캐시도 지워보고 인텔리제이 다시 켜보기도 했지만 500오류가 계속납니다

servlet과 container에 대한 질문입니다

0

24

1

api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?

0

62

1

jsp 의존성 수정 요청

0

77

2

요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?

0

143

1

save() 메서드 문의

0

66

1

절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상

0

100

1

request-body-json

0

83

2

MVC 패턴의 적용 단위

0

95

1

RequestMapping을 이용한 핸들러, 어댑터

0

118

2

save 후 결과화면

0

88

2

jsp를 이용한 view

0

97

1

application.properties에 debug 추가해도 결과가 똑같습니다.

0

177

1

수업 코드 제공 관련 문의

0

97

2

RequestMappingHandlerAdapter의 Controller 호출 과정

0

99

3

파일 오픈 시

0

69

1

스프링 배치 관련

0

77

1

@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부

0

112

1

postman으로 /request-body-json-v1 호출시 500 error

0

94

1

프론트엔드와 백엔드의 mvc, rest api에 대한 질문

0

78

1

모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문

0

111

1

console log 출력 관련 질문입니다.

0

74

1

애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ

0

139

1

html 변경하는 부분 적용 문제

0

103

1

한글 깨짐

0

76

2