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

빵냥이님의 프로필 이미지

작성한 질문수

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

뷰 리졸버

Servlet 호출 안되는 문제 발생

작성

·

97

·

수정됨

1

안녕하세요, 강의를 수강하는 학생입니다.

 

<문제 상황>

이때까지 강의를 잘 따라오다가 갑자기 뷰 리졸버를 위해 OldController 클래스를 작성하고 properties도 수정했는데 뷰가 제대로 나오지 않았습니다. 그래서 문제를 찾다가 애초에 servlet도 호출이 잘 안되는거 같아서 다시 스프링 프로젝트 파일을 생성하여 이전에 배운 프레임워크를 간단하게 다시 구현하고 실행을 했습니다만, 여전히 문제가 발생합니다. 어떻게 해결해야 할지 모르겠습니다.

 

*수정 : 확인을 다시해보니, 서블릿은 정상적으로 호출이 되며, viewPath도 잘 만들어지고 view 객체 클래스의 render 메서드까지 잘 도달했지만, foward 메서드 실행 후에 계속 같은 문제가 발생하고 있습니다. 꼭 좀 도와주세요!! (강의를 듣고 싶습니다 ㅠㅠ)

 

<문제 코드>

깃허브에 코드를 올려놓았습니다.

주소 : https://github.com/bread-Cat13/mvc1/tree/main/mvc/src/main/java/com/example/mvc

<문제 사진>

image.png

 

 

혼자서 해결해보고자 했지만 잘 안되어 질문드립니다. 많은 정보를 작성해놓지 않아 죄송합니다.

질문글 읽어주셔서 감사합니다.

답변 2

0

안녕하세요. 빵냥이님, 공식 서포터즈 OMG입니다.

프로젝트 실행하여 확인해보았습니다.

제 개발환경에서는 정상 동작하였고, 코드에는 문제가 없습니다.

재현하려고 예상가는 점을 확인해보았는데, 정상동작하던 상황에서 올리신 상황과 동일하게 404에러가 발생하더라구요.

프로젝트 폴더 구조가 아래처럼 mvc > mvc의 구조로 열려있을 때 해당 오류가 발생합니다.

image.png

프로젝트를 열 때 build.gradle을 클릭해서 열어서 mvc가 최상단에 존재하도록 프로젝트를 실행해주세요.

image.png

 

감사합니다.

빵냥이님의 프로필 이미지
빵냥이
질문자

늦은 시간에도 정말 감사드립니다. 문제가 해결되었습니다!

정말 죄송하지만, 근본적인 원인이 해결이 안되었습니다.

image.png

이렇게 했고, http://localhost:8080/springmvc/old-controller를 호출했지만,

image.png

문제가 여전히 발생합니다. 어떻게 해결할 수 있을까요?

강의에선 아래와 같이 OldController를 선언하였습니다.

image.png

그런데 올리신 코드에서는 OldController가 보이지 않고, OldController와 동일한 동작을 하는 클래스도 없는 것 같습니다.

image.png

OldController코드를 작성해주세요.

 

빵냥이님의 프로필 이미지
빵냥이
질문자

로컬 환경에서 클래스를 추가해서 돌려봤었습니다. 깃허브에는 반영을 안 해놓았습니다. 죄송합니다 ㅠㅠ

깃에 푸쉬하고 보니 디렉토리 구조가 잘못 되어 있었습니다. 다시 변경해서 돌려보니 정상적으로 작동합니다. 앞으로 더 신중하게 원인을 찾겠습니다. 귀한 시간 내주시고 친절하게 방법 알려주셔서 정말 감사드립니다.

0

안녕하세요, 인프런 AI 인턴입니다. 빵냥이님의 문제 상황에 대해 이해하고 적절한 해결 방법을 찾아보았습니다. 제가 찾은 정보를 기반으로 답변을 드립니다.

문제 상황에서 언급하신 것처럼, 서블릿 호출이 제대로 이루어지지 않아 웹 페이지에 404 오류가 발생하고 있습니다. 이 문제는 서블릿 및 스프링 MVC 구성, 컨트롤러 매핑, 뷰 리졸버 설정에 오류가 있을 수 있으므로 다음 링크의 지침에 따라 해결 방법을 찾으실 수 있습니다.

  1. 안녕하세요 localhost:8080/hello 부분 질문드립니다.에서 유사한 문제(서블릿 호출 문제)에 대한 질문에 답변한 내용입니다. 특히, @ServletComponentScan 애노테이션이 빠져있어서 서블릿이 등록되지 않았을 가능성에 초점을 맞추었습니다. 안녕하세요 localhost:8080/hello 부분 질문드립니다. 와 같은 상황일 수 있으니, @ServletComponentScan 애노테이션을 추가하거나, 해당 애노테이션이 특정 클래스나 패키지 경로에 정확히 적용되었는지 확인해 보시기 바랍니다.

  2. MVC 패턴 적용 중 404 에러가 납니다. (/servlet-mvc/members/new-form)에서는 서블릿 매핑 및 뷰 리졸버와 관련된 문제 해결에 대해 다루고 있습니다. MVC 패턴 적용 중 404 에러가 납니다. 이 답변 역시 귀하의 문제 해결에 도움이 될 수 있는 통찰력을 제공합니다.

위의 답변 링크들을 확인하시고, 해당 사례들과 유사한 설정을 점검해보시는 것이 좋겠습니다. 일반적으로 404 오류는 요청한 URL이 서버에서 찾을 수 없음을 의미하므로, URL 매핑, 서블릿 등록, 스프링 MVC 설정 등을 다시 한 번 꼼꼼히 검토해 볼 필요가 있습니다.

깃허브에 올려주신 코드를 기반으로 구체적인 코드 문제들을 진단할 수는 없으나, 컨트롤러 클래스에서 @RequestMapping 어노테이션을 사용하여 경로를 정확하게 설정했는지, application.properties 또는 application.yml에 뷰 리졸버 설정이 적절히 되었는지 확인하시길 권장드립니다.

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