Web/Spring

[Spring] No mapping found for HTTP request with URI 에러

돈기법 2022. 4. 9. 18:53

https://hyoj-j.tistory.com/36?category=1265604 

 

[Spring] poi 라이브러리를 이용한 엑셀 일괄 등록

Spring MVC + Maven 구조로 poi 라이브러리를 통해 엑셀 데이터를 읽고 DB에 저장하는 코드를 작성해봄. 스프링 강의는 많이 들었지만 전부 따라 하기만 했지 직접 구현해보는 건 처음이다 ... 그래도

hyoj-j.tistory.com

해당 포스팅에서 이어지는 내용입니다.

 

 


ajax를 통해 /excel/upload로 보내면 컨트롤러가 받는 구조인데

암만 버튼 눌러서 submit 해봐도 아무 반응이 없는 거다...

 

F12로 DevTools 꺼내서 콘솔창 확인해봤더니 해당 URI를 찾지 못해서 404 에러가 나는 것을 확인했다.

 

안 그래도 MVC구조 처음 적용해보니까 내가 작성한 코드에 신뢰성이 제로였다. 자바 코드부터 훑었음

기존에 잘 돌아가던 코드랑 열심히 비교해보며 틀린 부분을 찾았다.

 

http://localhost:포트번호/프로젝트path/excel/upload

이런 형식으로 접근해야 하는데 프로젝트 path가 빠져있었다. 기쁜 마음에 바로 추가해주었다.

 

//HomeController.java
@ModelAttribute("cp")
public String getContextPath(HttpServletRequest request) {
return request.getContextPath();	// 프로젝트 path 불러옴
}

//home.jsp
$("#excelUpForm").attr("action", "${cp}/excel/upload");

적용해줘도 404가 떴다.

 

jquery를 cdn(라이브러리를 가져올 때 웹 주소를 입력하는 방식)으로 사용하고 있었는데,

가끔 막힐 때도 있다는 말에 파일을 다운로드하여서 사용했다.

 

그래도 404가 떴다.

 

처음엔 에러 메세지가 뜨지도 않았던 거 같은데 이렇게 고생하다 보니 어느 순간 이클립스가 말을 하더라

No mapping found for HTTP request with URI

 

바로 구글링 해서 해결했다.

 

[원인 목록]

1. web.xml의 DispatcherServlet선언이 제대로 되어있는지

 

2. servlet-context.xml의 context:component-scan 확인하기

 

3. Controller 부분의 url mapping 확인하기

 

4. 서버 클린, 프로젝트 클린 해보기

 

 

내 경우엔 2번이 문제였다. 강의를 들으며 작성하던 프로젝트에 새로운 패키지를 생성해서 작업을 하고 있었는데

context:component-scan를 확인해보니 다른 패키지를 가리키고 있었다.

강의를 따라갈 때는 신경 쓸 필요도 없던 부분인지라 모르고 있었다.

 

 

패키지 지정을 해줬더니 잘 찾아가더라 ... 컴퓨터는 바보 같아 인간이 다 해줘야 하지

 

 

 

- 참고 글

https://velog.io/@chajaewon95/No-No-mapping-found-for-HTTP-request-with-URI-%EC%97%90%EB%9F%AC

 

No No mapping found for HTTP request with URI 에러

@RequestMapping( value , method ) 오타가 있는지 없는지 확인하기url-pattern 항목에 / 로 되어있는지 확인 → /\* 변경참고사이트 : https://stufeel.tistory.com/8

velog.io