Spring控制层的注解整理
1、@Controller,代表控制层,等同于实现Controller接⼝
2、@SessionAttributes,将值放⼊session域的⽅法
2.1、通过限制对象名字来实现:
如果下⾯的⽅法在request域中放⼊student1和student2对象,则同时放⼊到session中:
@SessionAttributes(value= {"student1","student2"})
2.2、通过限制对象的类型来实现:
如果在request域中放⼊Student和Address类型的对象,则同时放⼊session中:
@SessionAttributes(types={Student.class,Address.class})
3、@RequestMapping 转发
3.1、限制转发的⽅法和参数:
转发的路径是/welcome,转发⽅式:get,转发必须有参数'name'(name还可以赋值来进⾏约束),"!height":约定不能有height这种属性:@RequestMapping(value="welcome",method=RequestMethod.GET,params= {"name=zs","!height"})
public String welCome() {
return "success";
}
3.2、转发的请求地址可以使⽤通配符,约定消息头的内容:
//value中的值可以使⽤通配符,'?':代表单个字符,'*':代表任意字符,'**'代表任意⽬录,headers:约定消息头的内容
@RequestMapping(value="welcome2",headers= {"Accept-Encoding=gzip,deflate"})
public String welCome2() {
return "success";
}
3.3、约定参数的格式 produces(⽐如⽂件格式、⽂本格式、⼆进制格式):
springmvc的注解有哪些@RequestMapping(value="testRequestHeader",produces="text/html; charset=UTF-8")
public String testRequestHeader(@RequestHeader("Accept-Language") String message) {
System.out.println(message);
return "success";
}
3.4、获得cookie中的值:
@RequestMapping(value="testCookieValue")
public String testCookieValue(@CookieValue("JSESSIONID") String JsessionId) {
System.out.println(JsessionId);
return "success";
}
4、@PathVariable 从url直接接收值:
//当获取到welcome3/zs.jsp,就会获取到'zs'这个值
@RequestMapping(value="welcome3/{name}")
public String welCome3(@PathVariable("name") String name) {
System.out.println(name);
return "success";
}
5、@RequestParam 从request域中接收值:
/** @RequestParam:从request域中传值
* @param required=false:表⽰该值不是必须的,可以不传,否则request中⼀定要有该值
* @param defaultValue:默认值
* @return跳转到views/success.jsp
*/
@RequestMapping(value="chuanzhi")
public String testParam(@RequestParam(value="username",required=false,defaultValue="饶时彦") String name,
@RequestParam("password") String password) {
System.out.println(name+","+password);
return "success";
}
6、@ModelAttribute 模型参数的处理
6.1、先声明⼀个模型的处理⽅法:
@ModelAttribute //在执⾏该类中的任何⼀个⽅法前都会先执⾏@ModelAttribute修饰的⽅法
public void queryStudentById(Map<String,Object> map) {
Student stu = new Student();
stu.setName("zs");
map.put("student", stu);
}
6.2、只要在同⼀个类中引⽤被@ModelAttribute修饰的参数,该参数在使⽤前先被处理⽅法拦截:
/**@ModelAttribute 每次请求前会执⾏@ModelAttribute修饰的⽅法,⾥⾯的map.put("student", stu);
可以将对象放⼊到即将查询的参数中,put的key默认是参数类的⾸字母⼩写如Student--student**/
@RequestMapping(value="testObjectPropertis",produces="text/html;charset=UTF-8")
public String testObjectPropertis(@ModelAttribute Student student) {
System.out.println(student);
//默认是请求转发形式跳转也可以定义转发forward:/views/success.jsp 重定向redirect:/views/success.jsp 注意该⽅式会屏蔽视图解析器的前缀和后缀
return "success";
}
7、@Valid和BindingResult,实现对参数的校验:
7.1、⾸先在参数的类中设置校验条件,参考JSR303
public class Student {
private Integer stuId;
private String stuName;
private Adress adress;
@Past //必须为当前时间之前
@DateTimeFormat(pattern="yyyy-MM-dd") //使⽤注解调整格式
private Date birethday;
}
7.2、校验时BindingResult必须跟在有错误信息的对象参数后⾯,否则⽆法获取错误信息:
@RequestMapping("testDateFormat") //BindingResult必须跟在有错误信息的对象参数后⾯,否则⽆法获取错误信息 @Valid为校验注解,该参数使⽤该类⾥的校验注解public String testDateFormat(@Valid Student stu,BindingResult result,Map<String,Object> map) {
System.out.println(stu);
//当格式匹配出错时,获取错误信息,该⽅法可以抓取异常,避免前端404
ErrorCount()>0) {
for(FieldError FieldErrors()) {
System.out.DefaultMessage());
}
map.put("errors", FieldErrors()); //通过map将错误信息传给request域
}
return "success";
}
8、@ResponseBody:1、告诉springmvc此⽅法的返回值不是view页⾯,⽽是⼀个Json返回值;2、使Ajax⾥⾯可以调⽤Json 对象
@ResponseBody //1、告诉springmvc此⽅法的返回值不是view页⾯,⽽是⼀个Json返回值;2、使Ajax⾥⾯可以调⽤Json对象
@RequestMapping(value="testJson")
public List<Student> testJson() {
Student stu = new Student();
stu.setStuId(1);
stu.setStuName("www");
List<Student> list = new ArrayList<>();
list.add(stu);
return list;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论