アタシ ポンコツ システムエンジニア

新卒ポンコツSEの成長を描く(予定の)感動のスペクタクル超大作

spring3 でjsonをPOSTで受け取る

学生時代はフレームワークなんて使ったこと無かったんで初めてフレームワークを利用しててんてこマイ舞いドリームなんですよ、ホント。。。
ちゅーこって、、spring3でこの前引っかかったのでメモ

やりたいこととしては

  1. クライアント側からPOSTでajax通信する
  2. JSONでHTMLのformタグのデータをサーバに投げる
  3. そいつをサーバ側で受け取ってあれこれ処理

実行環境

クライアント側

  <form id = "searchform" action = "search" method = "POST">
    <!--テキストボックスとかチェックボタンとか-->
    <button id = "searchbtn" type="submit" name = "searchbtn" onclick = "return check()">投げる</button>
  </form>
function check(){

  //テキストボックスの入力チェックとか
  var jsonString = $('form').serializeArray();
  var formData = JSON.stringify(jsonString);
	$.ajax({
		type: 'POST',
		url: '/prototype/searchUser',
		data: JSON.stringify(jsonString),
		contentType: 'application/json',
		datatype: 'json',
		scriptCharset: 'utf-8'
	}).done(function(data){
                //返ってきたときの処理
	}).fail(function(data){
		//返らなかったときの処理
	});
}

  return false;


サーバ側

        @ResponseBody
	@RequestMapping(value = "/search", method = RequestMethod.POST, produces="application/json; charset=UTF-8")
	public void searchFileInfoJson(@RequestBody String json) throws IOException, ServletException {
          //処理をあれこれ
        }

ポイント

  • サーバ側 jsonでの受け取りは@RequestBody Stringで!

 →自作のクラスを指定してそのパラメータに自動で受け取る方法もあるらしいけどうまくいかなかった
 →まぁStringで飛んでくるからこれなら間違いなく受け取ることはできる。。

これが今の僕にできる精一杯でした。
ご査収ください。