Java 注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种:
注意注解继承只针对class 级别注解有效。
@Autowired:注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
public String queryUserName(@RequestParam(value="userName" ,required =false ) String userName)
原子类型:必须有值,否则抛出异常,如果允许空值请使用包装类代替。
Boolean包装类型类型:默认Boolean.FALSE,其他引用类型默认为null。
@RequestParam(value="username", required=true, defaultValue="zhang") String username)
如果没有传入参数,则默认是"zhangsan".
public String requestparam8(@RequestParam(value="userName") String [] userNames)
或者是:
public String requestparam8(@RequestParam(value="list") List list)
在传递参数的时候如果是url?userName=zhangsan&userName=wangwu时,
在实际roleList参数入参的数据为“zhangsan,wangwu”,即多个数据之间使用“,”分割;
我们应该使用上面两种方式来接收多个请求参数:
@RequestMapping("/testRequestParam")
@Controller
public class TestRequestParam {
private static final String SUCCESS = "success";
@RequestMapping("/user")
public String testParam(@RequestParam(value = "name") String name,
@RequestParam(value = "class", required = false, defaultValue = "haha") String cla,
Integer age) {
System.out.println("name = " + name + " class = " + cla + " age = " + age);
return SUCCESS;
}
/**
* 使用@RequestParam绑定入参,并进行配置
*
* 当请求为:testRequestParam/user?name=xx&age=666时
* 输出结果:name = xx class = haha age = 666
*
* 当请求为:testRequestParam/user?name=xx&age=888&class=heihei时
* 输出结果:name = xx class = heihei age = 888
* */
}
@RequestMapping("/login")
@ResponseBody
public User login(User user){
return user;
}
User字段:userName pwd
那么在前台接收到的数据为:'{"userName":"xxx","pwd":"xxx"}'
效果等同于如下代码:
@RequestMapping("/login")
public void login(User user, HttpServletResponse response){
response.getWriter.write(JSONObject.fromObject(user).toString());
}
@RequestMapping("/login.do")
@ResponseBody
public Object login(@RequestBody User loginUuser, HttpSession session) {
user = userService.checkLogin(loginUser);
session.setAttribute("user", user);
return new JsonResult(user);
}
@Data
@Accessors(fluent = true)
public class User {
private Long id;
private String name;
// 生成的getter和setter方法如下,方法体略
public Long id() {}
public User id(Long id) {}
public String name() {}
public User name(String name) {}
}
@Data
@Accessors(chain = true)
public class User {
private Long id;
private String name;
// 生成的setter方法如下,方法体略
public User setId(Long id) {}
public User setName(String name) {}
}
@Data
@Accessors(prefix = "p")
class User {
private Long pId;
private String pName;
// 生成的getter和setter方法如下,方法体略
public Long getId() {}
public void setId(Long id) {}
public String getName() {}
public void setName(String name) {}
}