SpringMVC參數傳遞方案

SpringMVC參數傳遞方案
登陸javascript

@PostMapping("/login")
@ResponseBody
public Map login(String username, String password) {
    Map<String, Object> map = new HashMap<>();
    map.put("username", username);
    map.put("password", password);
    return map;
}
function login() {
    let param = {
        "username": "admin",
        "password": "123456"
    };
    $.ajax({
        url: "/login2",
        data: param,
        type: "post",
        dataType: "json",
        success: function(data) {
            $("#username").val(data.username);
            $("#password").val(data.password);
        }
    });
}

登陸html

@PostMapping("/login2")
@ResponseBody
public Map<String, Object> login2(@RequestParam(value = "username", required = false) String username, 
                                  @RequestParam(value = "password", required = false) String password) {
    Map<String, Object> map = new HashMap<>();
    map.put("username", username);
    map.put("password", password);
    return map;
}
function login() {
    let param = {
        "username": "admin",
        "password": "123456"
    };
    $.ajax({
        url: "/login2",
        data: param,
        type: "post",
        dataType: "json",
        success: function(data) {
            $("#username").val(data.username);
            $("#password").val(data.password);
        }
    });
}

註冊java

@PostMapping("/register")
@ResponseBody
public User register(User user) {
    return user;
}
function register() {
    let param = {
        "userName": $("#username").val(),
        "password": $("#password").val()
    };
    $.ajax({
        url: "/register",
        data: param,
        type: "post",
        dataType: "json",
        success: function(data) {
            console.log(data);
        }
    });
}

多參數無實體類參數爲json字符串ajax

@PostMapping("/multiParameter")
@ResponseBody
public Map<String, Object> multiParameter(@RequestBody Map<String, Object> map) {
    return map;
}
function multiParameter() {
    let param = {
        "title": "爪哇筆記",
        "content": "一個有趣的公衆號",
        "author": "小柒2012"
    };
    param = JSON.stringify(param);
    $.ajax({
        url: "/multiParameter",
        data: param,
        type: "post",
        contentType: "application/json",
        dataType: "json",
        success: function(data) {
            console.log(data);
        }
    });
}

多參數無實體類參數爲json對象json

@PostMapping("/multiParameter2")
@ResponseBody
public Map<String, Object> multiParameter2(@RequestParam Map<String, Object> map) {
    return map;
}
function multiParameter2() {
    let param = {
        "title": "爪哇筆記",
        "content": "一個有趣的公衆號",
        "author": "小柒2012"
    };
    $.ajax({
        url: prefix + "/multiParameter2",
        data: param,
        type: "post",
        dataType: "json",
        success: function(data) {
            console.log(data);
        }
    });
}

傳遞數組數組

@PostMapping("/array")
@ResponseBody
public Map<String, Object> array(@RequestParam(value = "ids[]") Integer[] ids) {
    Map<String, Object> map = new HashMap<>();
    map.put("ids", ids);
    return map;
}
function array() {
    let param = {
        "ids": [1, 2, 3]
    };
    $.ajax({
        url: prefix + "/array",
        data: param,
        type: "post",
        dataType: "json",
        success: function(data) {
            console.log(data);
        }
    });
}

傳遞數組服務器

@PostMapping("list")
@ResponseBody
public Map<String, Object> list(@RequestParam(value = "ids[]") List<Integer> ids) {
    Map<String, Object> map = new HashMap<>();
    map.put("ids",ids);
    return map;
}
function array() {
    let param = {
        "ids": [1, 2, 3]
    };
    $.ajax({
        url: prefix + "/array",
        data: param,
        type: "post",
        dataType: "json",
        success: function(data) {
            console.log(data);
        }
    });
}

傳遞集合實體對象restful

@PostMapping("listObject")
@ResponseBody
public List<User> listUser(@RequestBody List<User> list) {
    list.forEach(user->{
        System.out.println(user.getUserName());
    });
    return list;
}
function listObject() {
    let list = [];
    list.push({
        "userName": "小柒2012",
        "phonenumber": "17762288888"
    });
    list.push({
        "userName": "小柒2013",
        "phonenumber": "17762289999"
    });
    $.ajax({
        url: prefix + "/listObject",
        data: JSON.stringify(list),
        type: "post",
        contentType: "application/json",
        dataType: "json",
        success: function(data) {
            console.log(data);
        }
    });
}

傳遞集合實體對象一對多app

@PostMapping("listUserRole")
@ResponseBody
public List<User> listUserRole(@RequestBody List<User> list) {
    list.forEach(user->{
        List<Role> roleList = user.getRoles();
        roleList.forEach(role->{
            System.out.println(role.getRoleName());
        });
    });
    return list;
}
function listUserRole() {
    let roleList = [];
    roleList.push({
        "roleId": "10000",
        "roleName": "管理員"
    });
    roleList.push({
        "roleId": "10001",
        "roleName": "普通用戶"
    });
    let list = [];
    let user = {
        "userId": 1001,
        "loginName": "admin",
        "userName": "小柒2012",
        "phonenumber": "17762288888"
    };
    user.roleList = roleList;
    list.push(user);
    $.ajax({
        url: prefix + "/listUserRole",
        data: JSON.stringify(list),
        type: "post",
        contentType: "application/json",
        dataType: "json",
        success: function(data) {
            console.log(data);
        }
    });
}

restful風格post

@GetMapping("article/{id}")
@ResponseBody
public Map<String,Object> article(@PathVariable("id") String id) {
    System.out.println(id);
    Map<String,Object> map = new HashMap<>();
    map.put("id",id);
    return map;
}
function Restful(id) {
    $.ajax({
        url: prefix + "/article/"+id,
        type: "get",
        dataType: "json",
        success: function(data) {
            console.log(data);
        }
    });
}

注意事項:

  • @RequestBody 註解,必須與 contentType 類型 application/json 配合使用。

  • @RequestParam 註解,必須與 contentType 類型 application/x-www-form-urlencoded 配合使用,其爲默認類型。

  • JSON.stringify() 把對象類型轉換爲字符串類型,通常配合@RequestBody 註解和 contentType 類型 application/json 使用。

contentType: 設置你發送給服務器的格式,有如下三種常見狀況。

  • application/x-www-form-urlencoded: 默認值:提交的數據會按照 key1=val1&key2=val2 這種格式進行轉換。

  • multipart/form-data: 這也是一個常見的 post 數據提交的方式。咱們使用表單上傳文件時,就要讓 form 的 enctype 等於這個值。

  • application/json: 服務端消息主體是序列化後的 json 字符串。

dataType: 告訴服務器,我要想什麼類型的數據,若是沒有指定,那麼會自動推斷是返回xml,json,jsonp,text,script,string,html。

相關文章
相關標籤/搜索