• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

MVC 프레임워크 만들기-유연한 컨트롤러1 - v5 질문있습니다.

24.04.24 18:29 작성 조회수 57

0

MVC 프레임워크 만들기-유연한 컨트롤러1 - v5 28분49초 위 사진처럼 get뒤에 url주소가 어떻게 호출되는건가요? put주소를 틀린거를 줬는데요. v3디버그 모드 질문.png

답변 2

·

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2024.04.24

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

스프링 서버 입장에서 올바른 요청이 오면 처리하면 되지만, 올바른 요청 자체가 못들어오게 한 것은 아니기 때문에 요청 받은 url을 출력한 것으로 보시면 될 것 같습니다 😀

예를들어, 무의미한 요청 localhost:8080/abc 라는 요청 자체가 들어왔으면 이 요청을 받았다(Received)고 로그를 남긴 것입니다.

감사합니다.

zzzzz님의 프로필

zzzzz

질문자

2024.04.25

put(저장)으로 /v3(v5없이)로 줬는데 어떻게 get(출력)으로 url이 v5/v3가 호출할 수 있는지에 대해 여쭤본겁니다. 강의시간을 참고하셔서 보시면 put으로 /v3(v5없이) 이렇게 나옵니다.

OMG님의 프로필

OMG

2024.04.25

서버입장에서 클라이언트로부터 받은 요청에 대한 로그이기 때문에 Map에서 가져올 수 있는지 없는지는 중요하지 않습니다.

답변 드린 내용에 대해 코드와 상황에 대한 예시를 첨부해서 설명드리면,

클라이언트로부터 서버 입장에서 처리가 불가능한 /abc (==> @RequestMapping으로 처리하도록 구현하지 않은 임의의 경로)라는 요청이 들어오면 404에러가 발생합니다.

 

image

스프링 서버에서는 로그를 남기기 위해 다음과 같은 설정을 추가하였고,

image

그 결과 강의에서와 같이 스프링이 요청 받은 url에 대한 로그가 남는 것입니다.

image

오타 유무와는 상관 없이 남는 로그입니다.

추가 질문에 대해 설명드리면,

put(저장)으로 /v3(v5없이)로 줬는데 어떻게 get(출력)으로 url이 v5/v3가 호출할 수 있는지에 대해 여쭤본겁니다.

설명드린 것과 같이 map에 잘못된 url을 put하였어도, map에서 get으로 찾은 결과를 보여주는게 아니기 때문에 보이는 것일뿐 찾아서 map에서 호출한게 아닙니다.

 

강의시간을 참고하셔서 보시면 put으로 /v3(v5없이) 이렇게 나옵니다.

 

강의 화면인데요, 클라이언트는 정상적으로 v5/v3경로를 요청을 보냈고, 서버는 이 요청 경로를 출력한 것입니다. 다시한번 말씀드리지만, map에서 조회하여 찾은 경로를 보여주는 것이 아닙니다.

image

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.24

안녕하세요, 인프런 AI 인턴입니다.

zzzzz님의 질문은 Servlet이 URL 패턴에 따라 어떻게 호출되는지에 관한 것으로 보입니다. 이러한 동작 방식을 이해하기 위해서는 Servlet 컨테이너의 작동 원리와 웹 서버와의 상호작용 방식, 그리고 Servlet이 HTTP 요청을 어떻게 처리하는지에 대한 기본적인 이해가 필요합니다.

Servlet 컨테이너는 클라이언트로부터 HTTP 요청을 받으면, 해당 요청의 URL 패턴을 분석하여 그에 맞는 Servlet을 찾습니다. 찾은 Servlet에 대해 service() 메서드를 호출하여 요청을 처리하게 됩니다. 이 과정에서 @WebServlet 어노테이션으로 지정된 URL 패턴에 대한 매핑 정보가 중요한 역할을 합니다. @WebServlet 어노테이션에 지정된 URL 패턴은 Servlet 컨테이너가 요청을 해당 Servlet에 전달할 때 사용하는 규칙입니다.

zzzzz님께서 제시한 상황에서, FrontControllerServletV5.java Servlet은 @WebServlet 어노테이션을 사용하여 특정 URL 패턴에 응답하도록 설정되어 있는 것으로 보입니다. 이때, PUT 요청의 경로가 다르게 설정되었다면, 그것이 올바르게 요청을 처리하지 못했을 가능성이 있습니다. 그러나 정확한 답변은 질문의 맥락에 따라 달라질 수 있으므로, 구체적으로 어떤 부분이 잘못되었는지를 파악하기 위해서는 코드의 전체적인 구조와 @WebServlet 어노테이션에 지정된 URL 패턴, 그리고 요청된 URL의 정확한 주소 등을 자세히 검토해야 합니다.

비슷한 맥락의 질문에 대한 답변이 있으니 해당 링크를 참고하시면 도움이 될 수 있습니다:

  • 생성자 질문드립니다.에서는 Servlet의 인스턴스화와 관련된 질문에 답변하고 있습니다. 이는 Servlet이 어떻게 인스턴스화되며, 기본 생성자가 호출되는 과정에 대해 설명하고 있습니다. Servlet의 작동 원리에 대한 이해가 도움 될 것입니다.

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