SpringMVC--リクエストとレスポンスの処理(実戦3)


この文章はJSONデータに対する処理を述べて、応答の処理について私の第2の文章のリンクアドレスを見ることができます:https://segmentfault.com/a/11...
前期準備
使用環境
  • JDK:1.8
  • Tomcat:9.0.3
  • Spring:5.2.8
  • Maven:3.6.3
  • コンパイラ:IntelliJ IDEA 2019
  • web.xml構成
    
    
         
          
            mvc
            org.springframework.web.servlet.DispatcherServlet
             
                contextConfigLocation
            classpath:ApplicationContext.xml
             
        
         
            mvc
            *.do
         
    

    ApplicationContext.xmlプロファイル(Springコアプロファイル)
    
    
    
        
         
        
         
    

    JSONデータの処理
    ブラウザにてajaxにてJSONデータを送信
    buttonをクリックしてJSONデータを送信
    
    
    
     
     
     cai jin hong
     
     window.onload = function () {
                document.getElementById("button").onclick = function () {
                    //1、    AJAX  
     var xhr = new XMLHttpRequest();
     xhr.open("POST", "test.do", true);
     //             
     xhr.setRequestHeader("Content-type", "application/json;charset=UTF-8");
     //2、           
     xhr.onreadystatechange = function () {
                        if (xhr.readyState == 4 && xhr.status == 200){
                            alert(xhr.responseText);
     }
                    }
                    //3、  JSON  
     xhr.send('{"account":"2020", "password": "123456", "balance":98}');
     }
            }
        
    
    
     
    
    

    サーバはJSONデータを受信する
  • 注意:jackson-core、jackson-databind、jackson-annotationsパッケージ
  • を導入する必要があります.
  • @RequestBody注記を使用して、受信したパラメータがJSON形式であることを示します.送信したJSONオブジェクトのkey名がエンティティオブジェクトの属性名である場合、私たちの方法パラメータがエンティティオブジェクトタイプと書かれている限り、mvcは私たちが要求するタイプ
  • にパッケージされます.
  • コードは次のとおりです:
  • @Controller
    public class UserController {
        //         :     list  
     @RequestMapping("test.do")
        public void testFive(@RequestBody User user){
            System.out.println(user);
     }
    }

    サーバ応答JSONデータ
  • 注意:jackson-core、jackson-databind、jackson-annotationsパッケージ
  • を導入する必要があります.
  • 応答エンティティオブジェクト:@ResponseBody注記を使用して、エンティティオブジェクトに直接戻ります(mvcはJSON形式のデータに変換します)
  • コードは次のとおりです:
  • @Controller
    public class UserController {
        //         :     list  
        @RequestMapping("test.do")
        @ResponseBody
        public User testFive(User user){
            System.out.println(user);
            return user;
        }
    }
  • 応答Map,list,Setの集合にかかわらず同じ使い方
  • Stringに戻り、@ResponseBodyを組み合わせると、転送/リダイレクト
  • ではなくブラウザに直接対応します.