씨네
공부하는 개발자 강씨네
씨네
  • 분류 전체보기 (460)
    • Web (21)
      • HTML (11)
      • CSS (10)
    • JS 관련 (49)
      • JavaScript (27)
      • JQuery (22)
    • TS 관련 (15)
      • TypeScript (15)
    • NodeJS (7)
      • NodeJS (7)
    • 따라하며 배우는 시리즈 (23)
      • NodeJS & ReactJS Basic (23)
      • NodeJS & ReactJS Movie (0)
      • NodeJS & ReactJS Youtube (0)
      • NodeJS & ReactJS ChatBot (0)
    • SPA (14)
      • React (14)
      • Vue (0)
      • Anguler (0)
    • Java 관련 (118)
      • Java (52)
      • JDBC (6)
      • JSP & Servlet (18)
      • Spring Legecy (38)
      • SpringBoot (4)
    • Python (26)
      • Python (20)
      • PyMongo (1)
      • Django (5)
    • Git (24)
      • Github (24)
    • RDB (22)
      • Oracle (21)
      • MySQL (1)
    • NoSQL (5)
      • MongoDB (5)
    • OS (4)
      • Linux (4)
    • 빅데이터 (2)
      • hadoop (2)
    • IDE (20)
      • eclipse (11)
      • VSCODE (4)
      • VisualStudio (1)
      • IntelliJ (1)
      • PyCharm (1)
      • DBeaver (2)
    • Install (3)
      • Tomcat (1)
      • Docker (1)
      • Anaconda (1)
    • 오류&에러 (28)
      • TS (2)
      • NodeJS (7)
      • SQL (8)
      • Java (1)
      • Spring (4)
      • Git (6)
      • 기타 (0)
    • 알고리즘 (67)
      • 수열 (1)
      • 백준(backjoon) (39)
      • Programmers (27)
    • 자격증 (5)
      • SQLD (5)
    • 기타 (2)
    • IT유튜브로 지식쌓기 (2)

공지사항

인기 글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
씨네

공부하는 개발자 강씨네

오류&에러/Spring

[org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]

2021. 7. 6. 20:41
728x90

리액트에서 데이터를 넘겨받았더니 이런 에러가 발생했다.

WARN : org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]

 

 

	// 스터디별 List 출력
	@RequestMapping(value = "calendarSelectStudy.do", method = RequestMethod.POST)
	@ResponseBody
	public List<CalendarDto> calendarSelectStudy(HttpSession session, @RequestBody int studyGroupId) {
		logger.info("[Controller] calendarSelectStudy.do");
		
		study_group_id = study_group_id.split("=")[0]+"";
		
		System.out.println("SELECTSTUDY TEST : " + studyGroupId);
		
		return calendarBiz.calendarSelectStudy(studyGroupId);
	}

아무리 봐도 잘못된 부분이 없는거같은데 왜 안되는 것인가...

415에러가 자꾸 발생한다.

 

리액트에서 data로 number타입의 studyGroupId 하나를 넘겨서 스프링에서 int타입으로 받아 줬는데 여기서는 이렇게 하면 안된다고한다.

 

 

CalendarService.CalendarSelectStudy = (data) => {
  return ApiService.post("calendarSelectStudy.do", data);
};
ApiService.post = async (uri, body) => {
  let resData = {};
  console.log("APIservice : ", body);


  const config = { "Content-Type": "application/json" };

  try {
    resData = await axios.post(`${uri}`, body, config);
  } catch (error) {
    console.error(error);
  }

  return resData;
};

 

리액트에서 스프링으로 데이터를 넘길때 어쨋든 제이슨 형태로 값을 보내기 때문...

String 타입으로 받아주면 해결된다.

	@RequestMapping(value = "calendarSelectStudy.do", method = RequestMethod.POST)
	@ResponseBody
	public List<CalendarDto> calendarSelectStudy(HttpSession session, @RequestBody String studyGroupId) {
		logger.info("[Controller] calendarSelectStudy.do");
		
		study_group_id = study_group_id.split("=")[0]+"";
		
		System.out.println("SELECTSTUDY TEST : " + studyGroupId);
		
		return calendarBiz.calendarSelectStudy(Integer.parseInt(studyGroupId));
	}

근데 왜인지는 모르겠으나 분명 값을 잘 넘겨 받았으나 왜인지 꼭 끝에 = 이 붙어서 받아온다...

원인을 몰라서 일단 강제로 split으로 =을 짤라버렸다

 

이에 대한 해법은 @RequestBody가 아닌 @RequestParam을 사용하면된다.

 

 

CalendarService.CalendarSelectStudy = (data) => {
  return ApiService.post("calendarSelectStudy.do?studyGroupId="+data);
};

data를 파라미터로 넘겨주는것이 아닌 쿼리스트링으로 넘겨준다음

 

	@RequestMapping(value = "calendarSelectStudy.do", method = RequestMethod.POST)
	@ResponseBody
	public List<CalendarDto> calendarSelectStudy(HttpSession session, @RequestParam String studyGroupId) {
		logger.info("[Controller] calendarSelectStudy.do");
		
		// study_group_id = study_group_id.split("=")[0]+"";
		
		System.out.println("SELECTSTUDY TEST : " + studyGroupId);
		
		return calendarBiz.calendarSelectStudy(Integer.parseInt(studyGroupId));
	}

@RequestParam을 사용하면 끝... 값이 잘 넘어온다.

728x90

'오류&에러 > Spring' 카테고리의 다른 글

스프링 RequestMethod.GET?POST? 405에러  (0) 2021.04.22
스프링 에러 org.springframework.beans.factory.BeanCreationException  (0) 2021.04.20
[eclipse]Spring 설치후 Dynamic Web Project 생성 오류  (6) 2021.04.11
    '오류&에러/Spring' 카테고리의 다른 글
    • 스프링 RequestMethod.GET?POST? 405에러
    • 스프링 에러 org.springframework.beans.factory.BeanCreationException
    • [eclipse]Spring 설치후 Dynamic Web Project 생성 오류
    씨네
    씨네
    개발자 씨네가 공부하는 내용을 기록 겸 공유하는 블로그입니다!

    티스토리툴바