Spring)Jsonデータ通信
13683 ワード
Springを勉強しているうちに、Formを使って送る以外に、JavaScriptからSpringにデータを送る方法も知りたいです.
Httpリクエスト
1.Getリクエスト非Bodyアドレスの形式 キー=値タイプ DBはselect文 を含む.
2.Post、Put、Deleteのリクエストは、 の形式でhttp bodyにデータを送信するデータを変更する場合は を使用します.オンデマンドクエリ文 Postリクエスト:insert Putリクエスト:update Deleteリクエスト:delete ->formタグはGet、Postのみ使用できません
3.解決方法 JavaScript要求ajax+データをjson に統一する
スプリングコントローラのパーティションポリシー
Key=value形式データ getリクエスト:key=valueタイプ POST要求(フォームタグPOST経由): .
1.スプリングコントローラはkey=valueデータを自動的にスライスして変数に入れます. DTO Controller
@RequestBodyの使用
jsonデータの場合、key=valueではないため、Jacksonライブラリの
json形式データ
Controller join.html join.js
Httpリクエスト
1.Getリクエスト
2.Post、Put、Deleteのリクエスト
3.解決方法
スプリングコントローラのパーティションポリシー
Key=value形式データ
(x-www-form-urlencoded)
->キー=値形式1.スプリングコントローラはkey=valueデータを自動的にスライスして変数に入れます.
// ex. {username = dokun , email = [email protected]}
//@GetMapping
@PostMapping
public String home(String username,String email){ // key와 value가 매핑된다
System.out.println(username); // dokun
System.out.println(email); // [email protected]
return "home";
}
2.key=value形式のデータをobject受信に分けることもできます.@Setter // setter가 없으면 object로 파싱이 불가능하다.
@Getter
class User {
private String username;
private String email;
private String age;
}
@PostMapping
public String home(User user){ // User object로 데이터를 받는다.
System.out.println(user.getUsername); // dokun
System.out.println(user.getEmail); // [email protected]
System.out.println(user.getAge); // null -> 값이 없으면 null로 받아진다.
return "home";
}
key=value以外のデータ@RequestBodyの使用
jsonデータの場合、key=valueではないため、Jacksonライブラリの
@RequestBody
構文を使用してjavaオブジェクトに分割されます.json形式データ
{
"username":"dokun",
"email":"[email protected]"
}
PostMapping("/home")
public String home(@RequestBody User user){
System.out.println(user.getUsername); // dokun
System.out.println(user.getEmail); // [email protected]
return "home";
}
formタグを使用してjsonデータを要求する(ajax)<div class="container">
<form>
<div class="form-group">
<label for="username">유저네임</label>
<input type="text" id="username">
</div>
<div class="form-group">
<label for="email">이메일</label>
<input type="email" id="email">
</div>
</form>
<button id="join--submit" class="btn btn-primary">회원가입</button>
</div>
<script src="/js/join.js"></script>
$('#join--submit').on('click', function() {
let data = {
username : $('#username').val(),
password : $('#password').val(),
email : $('#email').val()
};
$.ajax({
type : 'POST',
url : '/user/join',
data : JSON.stringify(data),
contentType : 'application/json; charset=utf-8',
dataType : 'json'
}).done(function(r) {
if (r.statusCode == 200) {
console.log(r);
alert('회원가입 성공');
location.href = '/user/login';
} else {
if (r.msg == '아이디중복') {
console.log(r);
alert('아이디가 중복되었습니다.');
} else {
console.log(r);
alert('회원가입 실패');
}
}
}).fail(function(r) {
var message = JSON.parse(r.responseText);
console.log((message));
alert('서버 오류');
});
});
reference : https://getinthere.tistory.com/Reference
この問題について(Spring)Jsonデータ通信), 我々は、より多くの情報をここで見つけました https://velog.io/@nestour95/Spring-Json-데이터로-통신テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol