인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

참깨햄스터님의 프로필 이미지
참깨햄스터

작성한 질문수

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

프론트 컨트롤러 도입 - v1

FrontControllerServletV1 404오류

작성

·

68

0

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

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

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

답변 2

0

안녕하세요. 참깨햄스터님, 공식 서포터즈 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 인턴입니다. 참깨햄스터님.

스프링 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 에러” - 캐시 문제로 인한 오류일 가능성과 해결 방법에 대해 다룹니다.

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

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

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

참깨햄스터님의 프로필 이미지
참깨햄스터

작성한 질문수

질문하기