[Spring]@RequestBody&@ResponseBody宣言

6473 ワード

0.非同期通信



0.1同期


同期通信および同期プログラミングとは、要求の発行にどれだけの時間がかかるかにかかわらず、応答を受信する前に待つ方法を指す.すなわち、送信要求のThreadは、応答が受信される前に「Block」状態になることを意味する.
この方法の利点は,要求と応答値の順序を保証し,要求の処理結果を保証できることである.しかし、応答が遅延されると、送信要求のThreadは待つだけであるという欠点がある.そうすると、本当にThreadを書く必要があるときに、応答待ちで書けないかもしれません.

0.2非同期


非同期通信と非同期プログラミングは同期とは逆に,要求を送信しても応答を待つことはなく,応答を無視する.この場合、Threadは応答を待つことなく、他のことを処理することができます.リクエストを出しても、応答を待たずに他のことをする状態を「Non Block」状態と呼ぶことができます.
応答を待たないため、通信の性能(速度)面では非同期が有利であるが、順序が保証されないため、応答の処理結果を保証する必要があるサービスには適していない.したがって、実行するサービスに応じて同期と非同期を選択する必要があります.

0.3 Ajaxとは?


Ajaxは,非同期JavaScriptとXMLを用いて高速アクションページを作成する開発手法である.
Ajaxは、Webページ全体を再ロードする必要はありません.Webページの一部をリフレッシュするだけです.(非同期)Json、XML、HTML、テキストファイルなど、さまざまな形式のデータを交換することもできます.Ajaxでは、次の操作を実行できます.

  • ページをリフレッシュせずにサーバを要求

  • サーバからデータを受信し、操作を実行
  • 0.4 JSONとは?


    JSON(JavaScript Object Notation)は、JavaScriptオブジェクトの文字構文で構造化データを表す文字ベースの標準フォーマットです.軽量性のため、Webアプリケーションでデータを転送する際に通常使用され、保存時にも使用されます.XMLフォーマットに比べて、必要な構造はより少なく、通常はKey : Valueである.
    {
      "employees": [
        {
          "name": "Suran",
          "lastName": "Kim"
        },
        {
          "name": "Seung",
          "lastName": "Baik"
        }]
      "email": "[email protected]", ...
    }
    前述したように、Key값または文字列は、常に" "(二重引用符)でマークされる必要があります.また、アレイ(Array)は[ ]で表される.
    単一JSONオブジェクトについては、.jsonの拡張子を持つ単純なテキストファイルに保存できます.MIMEタイプはapplication/jsonです.

    1.@ResquestBodyおよび@ResponseBody宣言


    通常、Web上で切り替え(リフレッシュ)を必要とせずに行える動作の多くは非同期通信である.非同期通信を行うには、クライアントでもサーバでも、メッセージ本文にデータを送信する必要があります.このとき、要求と応答に応じてそれぞれ「要求メッセージ」と「応答メッセージ」と呼ばれ、その本文部分を「要求本文」と「応答本文」と呼ぶ.Web上でこのBody部分で最もよく使われるフォーマットはJSON形式です.

    @RequestBody:HTTP BodyでJSONをVOにマッピングする説明

    @RequestMapping(value = "/requestBodyTest.do") 
    public String requestBodyTest(@RequestBody UserVO vo) throws Exception {
    	return "test/login"; 
    }
    HTTP要求Bodyは、JavaオブジェクトとしてConversionを提供する.変換だけでなく、HttpMessageConverterでリクエストヘッダのContent-Typeをチェックし、JSONを変換可能な変換器(Jackson2ObjectMapperBuilder)を選択して使用します.このプロセスでは、要求Bodyに含まれるデータがJavaオブジェクトに変換されます.
    cf)Jackson2ObjcetMapperBuilderはspringブートでJacksonAutoConfigurationクラスによって自動的に設定されるため、ObjectMapperを使用してJSONをjavaオブジェクトに変換することができ、何も設定する必要はありません.

    @ResponseBody:VOオブジェクトをJSONに変換してHTTP Bodyに入れる

    @ResponseBody 
    @RequestMapping(value = "/responseBodyTest.do") 
    public UserVO responseBodyTest() throws Exception { 
      UserVO vo = new UserVO(); 
      vo.setId("테스트"); 
      
      return vo; 
    }
    要求の形式に従って、メッセージ変換器を介して結果値を返します.
    @ResponseBodyでは、JavaオブジェクトをHTTP ResponseBodyに入れて転送できます.

    Link


    https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-%EB%B9%84%EB%8F%99%EA%B8%B0Async%ED%86%B5%EC%8B%A0-%EB%8F%99%EA%B8%B0Sync%ED%86%B5%EC%8B%A0 ,
    https://sudo-minz.tistory.com/21 ,
    https://velog.io/@ym1085/JSON-%EC%82%AC%EC%9A%A9%EB%B2%95 ,
    https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/JSON ,
    https://developer.mozilla.org/ko/docs/Web/Guide/AJAX/Getting_Started ,
    https://truecode-95.tistory.com/113 ,
    https://medium.com/webeveloper/reqeustbody%EC%99%80-responsebody-%EC%96%B8%EC%A0%9C-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C-2efcab364edb# ,