ajax 호출 시 Failed to load resource: the server responded with a status of 404 () 에러 해결방법 - 호출은 되는데 응답 안 될 때

2024. 11. 15. 23:39·서버&인프라/Server

 

 

 

Spring 파일 업로드를 구현하다가 발생한 문제..

 

 

 

처음엔 /uploadAjax.do를 못찾아가서

 

컨트롤러 위에 @ResponseBody도 추가하고, @CrossOrigin(origins = "http://your-client-domain.com")도 추가하고

파라미터로 HttpServletRequest request도 추가하고.. 별 짓을 다해서 네트워크 오류는 사라졌다.

 

 

 

 

그런데 새로운 오류가 발생! 

Failed to load resource: the server responded with a status of 404 ()

 

보통 경로가 잘못되어 나타나는 에러라는데, 난 눈 씻고 찾아봐도 경로가 잘못된 부분은 없었다.

 

 

 

 

 

 

코드를 따라 경위를 확인해보니, ajax가 호출은 하는데 서버로부터 응답을 못받고 있었음

 

$.ajax({
            url         : 'uploadAjax.do',
            processData : false,
            contentType : false,
            data        : formData,
            type        : 'POST',
            dataType    : 'json',
            success     : function(result) {
                showUploadedImages(result);
            },
            error : function(jqXHR, textStatus, xhr) {
                console.log("에러 : ", textStatus);
            }
    });

 

컨트롤러는 다 타는데 결국 찍히는 건 에러..

 

 

 

 

 

* 컨트롤러에 @ResponseBody 있는지도 확인!

 

@ResponseBody가 있음에도 불구하고 에러가 난다면 해결 방법은 아래와 같다.

 

 

 

해결 방법

 

dispatcher-servlet.xml와 pom.xml에 JSON 데이터를 처리하고 다루는 데 필요한 코드를 넣어주면 된다.

 

 

dispatcher-servlet.xml 파일을 보면

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter라는 bean이 있는데

거기에 property로 messageConverters를 추가하면 된다.

 

 

아래와 같이 변경

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="webBindingInitializer">
            <bean class="egovframework.example.cmmn.web.EgovBindingInitializer"/>
        </property>
        <property name="messageConverters">
           <list>
               <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
           </list>
       </property>
    </bean>

 

bean > RequestMappingHandlerAdapter
Spring MVC에서 HTTP 요청을 처리하는 핵심 컴포넌트이다.
@RequestMapping이나 다른 HTTP 매핑 어노테이션을 처리하는 역할 수행
요청이 들어오면, 해당 요청을 어떤 메소드로 매핑할지 결정, 그 메소드에 적합한 파라미터를 바인딩, 반환된 값을 응답으로 변환

 

property > messageConverters > MappingJackson2HttpMessageConverter
JSON 형식의 데이터를 Java 객체로 변환하거나, Java 객체를 JSON 형식으로 변환할 수 있다.
Spring MVC에서 클라이언트와 서버 간에 JSON 데이터 포맷을 자동으로 변환

 

  • Spring MVC 애플리케이션에서 JSON 형식의 요청과 응답을 처리할 때 필요
  • @RequestMapping 또는 @GetMapping, @PostMapping 등의 어노테이션을 사용하여 HTTP 요청을 처리하고, 요청과 응답 데이터를 자동으로 바인딩하거나 변환해야 할 때 유용

 

 

 

 

 

pom.xml

    <!-- Jackson Core 라이브러리 -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.13.0</version> 
    </dependency>

    <!-- Jackson Databind 라이브러리 (데이터 바인딩을 위한 필수 의존성) -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.13.0</version>
    </dependency>

    <!-- Jackson Annotations 라이브러리 (어노테이션을 위한 필수 의존성) -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.13.0</version> 
    </dependency>

 

 

이후 프로젝트 우클릭 > Maven > Update Project

 

다시 실행해보면 해결됨!

 

 

 

 

  • jackson-core: Jackson 라이브러리의 핵심 기능을 제공. JSON 데이터를 읽고 쓰는 기본적인 기능을 담당
  • jackson-databind: JSON 데이터를 Java 객체에 바인딩하거나, 반대로 Java 객체를 JSON 데이터로 변환하는 기능 제공. Jackson을 사용할 때 기본적으로 필수 의존성이다.
  • jackson-annotations: Jackson에서 JSON 변환을 제어하기 위해 사용하는 어노테이션을 포함하고 있다.  @JsonProperty, @JsonIgnore와 같은 어노테이션을 제공하여 JSON 직렬화 및 역직렬화 방식 커스터마이즈 가능

 

 

 

 

'서버&인프라 > Server' 카테고리의 다른 글

이클립스(Eclipse)+톰캣(Apache Tomcat)+DB(MySQL) 연동하기  (1) 2024.11.14
아파치 톰캣(Apache Tomcat) 설치 경로 기억 안 날 때 이클립스(Eclipse)에서 확인하기  (0) 2024.11.14
Apache Tomcat Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. 에러 해결방법  (0) 2024.03.15
Apache Tomcat org.apache.logging.log4j.loggingexception: log4j-slf4j-impl cannot be present with log4j-to-slf4j 에러 해결방법  (0) 2024.02.22
'서버&인프라/Server' 카테고리의 다른 글
  • 이클립스(Eclipse)+톰캣(Apache Tomcat)+DB(MySQL) 연동하기
  • 아파치 톰캣(Apache Tomcat) 설치 경로 기억 안 날 때 이클립스(Eclipse)에서 확인하기
  • Apache Tomcat Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. 에러 해결방법
  • Apache Tomcat org.apache.logging.log4j.loggingexception: log4j-slf4j-impl cannot be present with log4j-to-slf4j 에러 해결방법
오은이
오은이
  • 오은이
    오은이 하우스
    오은이
  • 전체
    오늘
    어제
    • 분류 전체보기 (83) N
      • 일기 (2)
      • Python (1)
      • Java (4)
      • CS (2)
      • 코딩테스트 (26)
        • 백준 (25)
        • 프로그래머스 (1)
      • 웹 개발 (17)
        • Spring (6)
        • JavaScript (3)
        • WebSquare (5)
        • React (3)
      • DB (5)
        • MySQL (4)
        • Oracle (1)
      • 서버&인프라 (18)
        • Server (5)
        • Cloud (12)
        • Linux (1)
      • 자격증 (8) N
        • 정보처리기사 (1)
        • AICE (7) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    Java
    백준자바
    리액트
    클라우드 배포
    react
    자바
    AICE
    dockerspring
    AICE Associate
    EC2
    알고리즘
    docker배포
    톰캣
    MySQL
    Associate
    백준
    오블완
    AI
    클라우드
    tomcat
    Apache
    docker
    Spring
    웹스퀘어
    cloud DB
    websquare
    db
    SpringBoot
    머신러닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
오은이
ajax 호출 시 Failed to load resource: the server responded with a status of 404 () 에러 해결방법 - 호출은 되는데 응답 안 될 때
상단으로

티스토리툴바