@responsebody@requestbody인스턴스

2895 단어 @ResponseBody
register.jsp:
    $("#sub").click(function(){

        var m = {

                "account": $("#_account").val(),

                "passwords": $("#_pass").val(),

                "realname": $("#real_name").val(),

                "phonenumber": $("#phone_number").val(),

                "sex": $("input:checked").val(),

                "mailname": $("#mail_name").val()

            };

        $.ajax({

            type:"POST",

            async : false,

            url:"/demo/user/receive",

            dataType:"json",

            contentType:"application/json; charset=utf-8",

            data:JSON.stringify(m),

            success:function(data){

                alert("return map success!");

                newpage();

            },

            error:function(data){

                alert("  ")

            }

        })

Controller:
    @RequestMapping(value="receive", method=RequestMethod.POST, consumes="application/json")

    public @ResponseBody Map<String, String> receiveData(@RequestBody RegInfo info){

        

        Map<String, String> reg_check = regInfoService.checkRegInfo(info);

        for(Map.Entry<String, String> entry:reg_check.entrySet()){    

             System.out.println(entry.getKey()+"--->"+entry.getValue());    

        }

        

        System.out.println(info);

        System.out.println(info.getRealname());

        return reg_check;

    }

1. 위 코드의 데이터는 String 형식의 데이터가 필요합니다. 여기 m는 json 대상이기 때문에 JSON을 사용해야 합니다.stringify () 를 문자열 형식으로 변환한 데이터는 "m"입니다.
2. @requestbody는 프론트에서 전송된 데이터를 수신하는 데 사용되며, 수신된 데이터는 문자열의 형식이지만, 이 주석은 문자열의 변수 값을 대상 info에 주입하여 info 실체의 속성 이름과 m의 속성이 일치하도록 요구합니다.
3. @responsebody는 백엔드 데이터를 responsebody에 직접 놓고 되돌려줍니다. 여기 @responsebody 주석은 맵의 실례를 json 대상으로 변환하기 때문에 전방 데이터에서 받는 것은 json 대상입니다.
4.consumes는 콘텐츠-type:application/json의 요청만 처리한다고 표시합니다.상대적인produces='application/json'은 처리 요청에만 accept:application/json(즉 반환 형식은 application/json 형식)을 포함하는request를 표시합니다.
주:ajax 중
data:String
기본적으로 String 유형으로 자동 변환됩니다.프로세스 데이터 속성으로 자동 변환 금지;
processData:Boolean
기본적으로true입니다.false를 위해 데이터의 데이터를 요청 문자열로 자동 변환하는 것을 금지합니다.
본인은 여전히 약간의 의문이 있습니다. 데이터가 기본적으로 문자열로 자동으로 변환되는데 왜 JSON을 사용해야 합니까?stringify () 변환;(테스트를 사용하지 않으면 전송 실패)

좋은 웹페이지 즐겨찾기