liblets
999
2015-04-07 15:48:56
7
11235

jsp페이지에서 json으로 넘긴 값을 java에서 받고싶은데...


 

function ServerSave() {
        var action = "";
        var image = document.getElementById("PhotoCanvas").toDataURL("image/png");
        image = image.replace('data:image/png;base64,', '');
        action = "/test.do";
        $.ajax({
            type: 'POST',
            url: action,
            data: '{ "imageData" : "' + image + '", "fileNm" : "' + $("#filename").val() + '" }',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (rst) {
                alert("Success!!");
            },
            error: function (xhr, status, error) {
                alert("Failed!!");
            }
        });
    }

위와 같이 넘기는데 test.java에서 받으려면 어떻게 해야되나요?

0
  • 답변 7

  • visualkhh
    4k
    2015-04-07 16:08:31

    request.겟파라미터,


  • 커비
    2k
    2015-04-07 16:57:19

    	    InputStream is = request.getInputStream();
    	    Reader reader = new InputStreamReader(is);

    이런 형태로 해서 reader부분을 읽어오시면 되겠네요 



  • gem
    526
    2015-04-07 18:46:22

    $.ajax 에서 data 를 모조리 string으로 넘기셔서 그런 것 같습니다.

    data: '{ "imageData" : "' + image + '", "fileNm" : "' + $("#filename").val() + '" }'
    data: { "imageData" : image , "fileNm" : $("#filename").val() }

    1번째 줄을 2번째 줄 형식으로 바꾸셔서 넘기시고

    서버에서 다시 request.getParameter("imageData"), request.getParameter("fileNm") 으로 받아보셔요.

  • liblets
    999
    2015-04-07 19:35:07

    혹시나 해서 개발자 도구에서 캡쳐해서 올려봅니다.

    photo.do를 본문에서는 test.do라고 적었습니다.

  • gem
    526
    2015-04-07 20:19:38

    liblets

    // 어 음 첫번째 스샷에서 content-type이 euc-kr 일텐데 ecu-kr 로 되어있네요. 이게 에러 원인인지는 잘 모르겠구요;;

    imageData 의 경우 너무 긴데 혹시 중간에 작은 따옴표나 큰따옴표 등의 허용 안 되는 특수문자가 들어있나 하는 생각도 들어요. 꼭 서버에 보내셔야 되는 data가 아니면 localStorage나 sessionStorage로 잠시 저장해놓고 쓰는 방법도 있습니다.

  • curioustore
    1k
    2015-04-08 02:10:55
    var  str = '{ "imageData" : "' + image + '", "fileNm" : "' + $("#filename").val() + '" }'
    $.ajax({
                type: 'POST',
                url: action,
                data: { json:JSON.parse(str) }, 
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: function (rst) {
                    alert("Success!!");
                },
                error: function (xhr, status, error) {
                    alert("Failed!!");
                }
            });
    @RequestMapping( ... , produces = {MediaType.APPLICATION_JSON_VALUE})
    @ResponseBody
     ...  ...(@RequestParam("json") String json){
      logger.info(json);
    }
    • 이렇게 해보세요. 스프링기준
  • gem
    526
    2015-04-08 09:34:27

    http://micropilot.tistory.com/m/post/2516

    찾아보니 contentType을 'application/json; charset=utf-8' 가 아니라 'application/x-www-form-urlencoded; charset=utf-8' 이렇게 보내는 것 같습니다. 이걸로 해결이 될지는 잘 모르겠습니다;;;;

  • 로그인을 하시면 답변을 등록할 수 있습니다.