大三ノート(ajaxはjsonオブジェクトをcontrollerに渡し、controllerはjavaオブジェクトにカプセル化してデータベースに格納する)
3222 ワード
まず注釈を見てみましょう
@RequestBody
1,@requestBody注記はcontent-typeがデフォルトのアプリケーション/x-www-form-urlcoded符号化の内容ではないことを処理するためによく使用されます.例えば、アプリケーション/jsonやアプリケーション/xmlなどです.一般的にアプリケーション/jsonタイプを処理するためによく使用されます.
2、
@requestBodyではリクエストボディのJSON文字列を対応するbeanにバインドできます.もちろん、対応する文字列にそれぞれバインドすることもできます.例えば、$.ajax({ url:"/login", type:"POST", data:'{"userName":"admin","pwd","admin123"}', content-type:"application/json charset=utf-8", success:function(data){ alert("request success ! "); } });上のdataはjson文字列であることに注意してください.jsonオブジェクト@requestMapping("/login")public void login(@requestBody String userName,@requestBody String pwd){System.out.println(userName+":"+pwd)}この場合、JSOn文字列の2つの変数の値にそれぞれ2つの文字列が与えられます.しかし、もし私がUserクラスを持っていたら、次のフィールドを持っています:String userName; String pwd; では、上記のパラメータは、@requestBody Userという形式でJSON文字列の値をuserの対応する属性に付与する場合に注意しなければならないのは、JSON文字列のkeyがuserの属性名に対応しなければならないことであり、そうでなければ要求は過去のものではないことである.
3、
いくつかの特殊な場合@requestBodyはcontent-typeタイプがアプリケーション/x-www-form-urlcodedの内容を処理するためにも使用できますが、この方法にすぎません.
あまり一般的ではありませんが、このようなリクエストを処理する場合、@requestBodyは処理結果をMultiValueMapに格納します.この場合、jQuery easyUIのdatagridリクエストデータなど、特殊な場合に使用されるのが一般的です.スモールプロジェクトはPOJOクラスを1つだけ作成する場合にも使用できます.
しかし、実際には、controllerパラメータがオブジェクトの場合、フロントajaxからjsonデータが送られてきます.この場合のcontrollerも@RequestBodyを使用しなくてもいいです.
コードを見てみましょう.
UserController.java
これでもいいです.
もう一つ、mapperのinsert文は、パラメータがエンティティクラスの場合、insert文はすべて書き、insert into table(列名1、列名2....)values(......) このように書くと、列名を省略することはできません.以上です.
@RequestBody
1,@requestBody注記はcontent-typeがデフォルトのアプリケーション/x-www-form-urlcoded符号化の内容ではないことを処理するためによく使用されます.例えば、アプリケーション/jsonやアプリケーション/xmlなどです.一般的にアプリケーション/jsonタイプを処理するためによく使用されます.
2、
@requestBodyではリクエストボディのJSON文字列を対応するbeanにバインドできます.もちろん、対応する文字列にそれぞれバインドすることもできます.例えば、$.ajax({ url:"/login", type:"POST", data:'{"userName":"admin","pwd","admin123"}', content-type:"application/json charset=utf-8", success:function(data){ alert("request success ! "); } });上のdataはjson文字列であることに注意してください.jsonオブジェクト@requestMapping("/login")public void login(@requestBody String userName,@requestBody String pwd){System.out.println(userName+":"+pwd)}この場合、JSOn文字列の2つの変数の値にそれぞれ2つの文字列が与えられます.しかし、もし私がUserクラスを持っていたら、次のフィールドを持っています:String userName; String pwd; では、上記のパラメータは、@requestBody Userという形式でJSON文字列の値をuserの対応する属性に付与する場合に注意しなければならないのは、JSON文字列のkeyがuserの属性名に対応しなければならないことであり、そうでなければ要求は過去のものではないことである.
3、
いくつかの特殊な場合@requestBodyはcontent-typeタイプがアプリケーション/x-www-form-urlcodedの内容を処理するためにも使用できますが、この方法にすぎません.
あまり一般的ではありませんが、このようなリクエストを処理する場合、@requestBodyは処理結果をMultiValueMapに格納します.この場合、jQuery easyUIのdatagridリクエストデータなど、特殊な場合に使用されるのが一般的です.スモールプロジェクトはPOJOクラスを1つだけ作成する場合にも使用できます.
しかし、実際には、controllerパラメータがオブジェクトの場合、フロントajaxからjsonデータが送られてきます.この場合のcontrollerも@RequestBodyを使用しなくてもいいです.
コードを見てみましょう.
UserController.java
@RequestMapping("add")
@ResponseBody
public ResultVo AddStudent(student stu){
System.out.println("add "+stu.getName());
student stu1 = new student();
stu1.setAge(stu.getAge());
stu1.setEmail(stu.getEmail());
stu1.setName(stu.getName());
stu1.setPassword(stu.getPassword());
stu1.setStudent_id(stu.getStudent_id());
stu1.setStage(stu.getStage());
stu1.setSex(stu.getSex());
stu1.setPhone(stu.getPhone());
ResultVo resultVo = service.AddStudent(stu1);
return resultVo;
}
function tijiao(){
var name= $("#name").val();
var age= $("#age").val();
var pwd =$("#password").val();
var sex= $("input[name='sex']:checked").val();
var phone= $("#phone").val();
var email = $("#email").val();
var stage= $("#stage option:selected").val();
var stu={
"student_id" :18999,
"name": name,
"age": age,
"password": pwd,
"sex": sex,
"phone": phone,
"email":email,
"stage": stage
}
alert(stu);
$.ajax({
type:'POST',
url: '/myspringTest/add.do',
data: stu,
dataType:"json",
success: function (data) {
if(data.success){
console.log(data.result);
}
},error:function(data){
console.log(data.result);
}
});
}
これでもいいです.
もう一つ、mapperのinsert文は、パラメータがエンティティクラスの場合、insert文はすべて書き、insert into table(列名1、列名2....)values(......) このように書くと、列名を省略することはできません.以上です.