Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
이런 오류가 나네요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:158) ~[spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:167) ~[spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:102) ~[spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:78) ~[spring-web-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162) [spring-web-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:129) [spring-web-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:775) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:965) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:867) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) [servlet-api.jar:na] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:841) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) [servlet-api.jar:na] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) [catalina.jar:7.0.67] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.67] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat7-websocket.jar:7.0.67] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.67] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.67] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) [catalina.jar:7.0.67] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) [catalina.jar:7.0.67] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) [catalina.jar:7.0.67] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) [catalina.jar:7.0.67] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) [catalina.jar:7.0.67] at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) [catalina.jar:7.0.67] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) [catalina.jar:7.0.67] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) [catalina.jar:7.0.67] at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) [tomcat-coyote.jar:7.0.67] at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) [tomcat-coyote.jar:7.0.67] at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) [tomcat-coyote.jar:7.0.67] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_79] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_79] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-coyote.jar:7.0.67] at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79] | cs |
* jsp에서 ajax로 호출하는 자바스크립트(jquery)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $.ajax({ type : type, async : async, data : JSON.stringify(data), dataType : 'json', url : url, error : function(json){ alert('저장중 오류가 발생하였습니다'); }, success : function(data){ if(data.resultFg == "SS" ) { alert('저장 하였습니다.'); window.parent.opener.searchMain(); self.close(); } else if (data.resultFg == "DU" ){ alert('메인코드명이 중복 되었습니다.'); return; } else { alert('저장중 오류가 발생 하였습니다.'); return; } } }); | cs |
java에서는 다음과 같이 구현돼 있습니다.
스프링 프레임워크 사용중입니다.
1 2 3 4 5 6 7 8 9 | @Transactional @RequestMapping("/saveCode.json") public @ResponseBody Map<String , Object> saveCode(@RequestBody Map<String, Object> param, HttpServletRequest request) { Map<String, Object> jsonObject = new HashMap<String, Object>(); param.put("userId", (String) request.getSession().getAttribute("sessionUserId")); String code = (String) param.get("code"); String upCode = (String) param.get("upCode"); } | cs |
뭐가 문제인지 몰라서 한참을 구글링 했네요.
뭔가 인코딩의 문제라는 생각은 드는데 한참이나 java 부분이 문제인지 알고 찾았는데
해결방법은 생각보다 간단하네요^^
1 | contentType: 'application/json', | cs |
ajax 호출시 요거 한줄 넣어주니 되네요.
아래처럼요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $.ajax({ type : type, async : async, contentType: 'application/json', data : JSON.stringify(data), dataType : 'json', url : url, error : function(json){ alert('저장중 오류가 발생하였습니다'); }, success : function(data){ if(data.resultFg == "SS" ) { alert('저장 하였습니다.'); window.parent.opener.searchMain(); self.close(); } else if (data.resultFg == "DU" ){ alert('메인코드명이 중복 되었습니다.'); return; } else { alert('저장중 오류가 발생 하였습니다.'); return; } } }); | cs |
ajax에서 파라미터를 json으로 넘기고
받을 때 Vo가 아닌 Map으로 받을 땐 이걸 꼭 넣어줘야 하나 봅니다.
1 | @RequestBody Map<String, Object> param | cs |
java에서 이렇게 받으면 json으로 넘어온 값들을 자동으로 매핑됩니다.
즉, 아래와 같은 json 값을 ajax에서 넘겨줬다고 가정해 봅시다.
1 | {"codeNm":"하늘색","code":"BLUE","codeDiv":"COLOR"} | cs |
그럼, 자바에서 아래와 같이 값을 확인할 수가 있답니다^^
1 | String code = (String)param.get("code"); | cs |
'프로그래밍 언어 > java + jsp + jstl' 카테고리의 다른 글
에러 로그없이 톰캣이 시작되는 문제 해결방법(No appenders could be found for logger. Please initialize the log4j system properly.) (1) | 2017.10.06 |
---|---|
[JAVA] 리눅스에서 자바로 SAP 연동시 필요한 libsapjco3.so 파일로 인한 오류 (0) | 2017.09.06 |
[jsp] 파일을 include 했을 때 한글 깨지는 문제 해결 방법 (0) | 2017.07.15 |
[java/jsp] 자바(또는 jsp)에서 따옴표(") 치환하는 방법 (0) | 2017.03.21 |
[java] 자바에서 줄바꿈(\n) 개행문자 치환하는 방법 (2) | 2017.02.09 |
댓글