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

maui2005님의 프로필 이미지
maui2005

작성한 질문수

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

spring mvc 시작하기 부분에서 오류 질문이요..!

작성

·

7.7K

0

SpringMVC - v1,v2 를 수행할때

코드를 오타없이 정확히 입력했는데도(혹시 몰라서 교재 복붙까지했습니다) 맨 아래 사진과 같은 에러가 뜹니다.

다른 FrontController - v1,v2,v3,v4,v5.... 들은 여전히 잘 작동하구요

제가 어떤걸 잘못했을까요??

코드를 보면 클래스명이 회색으로 뜨긴하는데..... 왜 안되는지 이유를 모르겠습니다ㅠ



+) 이게 정확한 오류 메시지인지는 모르겠으나 혹시 몰라서 이건가 싶어 남깁니다..!

2021-08-19 23:45:36.747 ERROR 14332 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Circular view path [new-form]: would dispatch back to the current handler URL [/springmvc/v2/members/new-form] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)] with root cause

package hello.servlet.web.springmvc.v2;
import hello.servlet.domain.member.Member;
import hello.servlet.domain.member.MemberRepository;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;


@Controller
@RequestMapping("/springmvc/v2/members")

public class SpringMemberControllerV2 {

private MemberRepository memberRepository = MemberRepository.getInstance();

@RequestMapping("/new-form")
public ModelAndView newForm() {
return new ModelAndView("new-form");
}

@RequestMapping("/save")
public ModelAndView save(HttpServletRequest request, HttpServletResponse
response) {
String username = request.getParameter("username");
int age = Integer.parseInt(request.getParameter("age"));
Member member = new Member(username, age);
memberRepository.save(member);
ModelAndView mav = new ModelAndView("save-result");
mav.addObject("member", member);
return mav;
}

@RequestMapping //List
public ModelAndView members() {
List<Member> members = memberRepository.findAll();
ModelAndView mav = new ModelAndView("members");
mav.addObject("members", members);
return mav;
}
}

답변 1

0

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

javax.servlet.ServletException: Circular view path [project]: would dispatch back to the current handler URL [/project] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.) 에.. :: Carry On Progamming (tistory.com)

위 링크와 강의를 참고하여 application.properties에 prefix, suffix를 추가해주세요.

/ (슬래시) 를 반드시 강의와 맞춰주세요.(강의 기준으로)

그래도 안될 경우 자주하는 질문을 참고하여 구글드라이브로 프로젝트 압축 후 링크 공유해주세요.

감사합니다. 

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

해결되었습니다! 그런데 질문이 있습니다

강의 그대로 따라갔었는데 왜 저만 에러가 나는 것이고 정확한 이유가 무엇인가요??

다른 FrontController - v1,v2,v3,v4,v5.... 들은 여전히 잘 작동하는데 SpringMVC 만 잘 작동하지 않았던 이유는 무엇인가요??

참고해주신 링크를 봐도 이해가 가지 않아서 댓글로 재질문드립니다! 감사합니다:)

원인까지는 모르겠으나

이런 코드로 인해 발생합니다.

어떻게 해결하셨는지(해결되었는지) 모르겠지만 해결이 되었다면 그 과정속에 힌트가 있지 않을까 생각합니다.

https://github.com/spring-projects/spring-framework/blob/main/spring-webmvc/src/main/java/org/springframework/web/servlet/view/InternalResourceView.java

안쪽 if 조건을 보면 path가 "/"로 시작할 때 uri가 path와 같을 때 서블릿예외가 발생하는 것을 확인할 수 있습니다.

더 궁금한 사항이 있으시다면 내용을 정리하여 새로 글 작성해주세요. 추가 질문에 대한 것은 저만 확인이 가능하기 때문에 영한님이나 서포터즈분들이 볼 수 있게 글을 새로 작성해주시면 감사하겠습니다. 글을 올리실 때 이 글에 대한 링크를 첨부하셔도 좋을 것 같습니다.

감사합니다.

다른 FrontController - v1,v2,v3,v4,v5.... 들은 여전히 잘 작동하는데 SpringMVC 만 잘 작동하지 않았던 이유는 무엇인가요??

이 부분에 대한 답변은 위 링크에서 프로젝트 구조를 보시면 아시겠지만 해당 에러가 스프링mvc에서 발생(구현한)하는 에러이기 때문입니다.

maui2005님의 프로필 이미지
maui2005

작성한 질문수

질문하기