[Spring] No mapping found for HTTP request with URI 에러
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