【SpringMVC】06-08:请求和传参

56 阅读1分钟

请求路径

"/user"加在类前,是路径前缀

@RestController
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/test")
    public String test() {
        System.out.println("user test");
        return "{'module':'springmvc'}";
    }

    @RequestMapping("/test2")
    public String test2() {
        System.out.println("user test2");
        return "{'module':'springmvc test2'}";
    }
}

请求Get/Post

1. 参数接收就是增加形参。

2. 中文乱码解决

//com.android.config.ServletContainersInitConfig
//Ctrl+O,getServletFilters
@Override
protected Filter[] getServletFilters() {
    CharacterEncodingFilter filter = new CharacterEncodingFilter();
    filter.setEncoding("UTF-8");
    return new Filter[]{filter};
}

3. 如果请求的名字和接收的名字不同,如:请求使用name,接收使用userName。使用@RequestParam

@RequestMapping("/test2")
public String test2(@RequestParam("name") String userName) {
    System.out.println("user test2");
    return "{'module':'springmvc test2'}";
}

4. 传递实体类(pojo)

4.1 如果传递来的属性名实体类中的属性名一样,则会把属性名自动塞到实体类对象中。

http://localhost:8080/AndroidServe/user/test3?passWord=12345&id=000

passWord=12345
id=000
//实体pojo类
public class User {
    private Integer id;
    private String userName;
    private String passWord;
}
//可以看到这里只使用`user`来做接收参数
@RequestMapping("/test3")
public String test3(User user) {
    System.out.println(user);
    return "{'module':'springmvc test3'}";
}

4.2 实体类中有引用属性,如:User中有Address属性

address.city=
address.prov=
class User {
    ...
    private Address address;
}
@RequestMapping("/test4")
public String test4(User user) { //依然使用User user接
    ...
}

4.3 数组

@RequestMapping("/test5")
public String test5(String[] likes) {
    ...
}
//相同的会自动装进String[] likes

likes=game
likes=music
likes=travel

4.4 集合 @RequestParam

@RequestMapping("/test6")
public String test6(@RequestParam List<String> likes) {
    ...
}
likes=game
likes=music
likes=travel