SpringMVC学习中,了解一些基本常用注解是必不可少的。本文主要对该些注解进行总结。
在总结注解之前,先小结一下SpringMVC接收请求到响应的流程:
@Controller:该注解使用在类上,指明该类是一个handler(或Controller)。关于一个handler(Controller)的开发,除了可以通过注解标识,也可以实现Controller接口
// 通过注解开发handler
@Controller
public class bookController {}
// 通过实现Controller接口开发handler
public class bookController implements Controller{
.......
.......
}
@RequestMapping:处理请求地址映射的注解
value,method,consumes,produces,params,headers:
URL映射:定义Controller方法对应的url,进行处理器映射使用。如:@RequestMapping("/test")
@RequestMapping("/queryBook")
public ModelAndView queryItems(HttpServletRequest request,bookQueryVo bQueryVo) throws Exception {
List list = bService.findBooksList(bQueryVo);
// 返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("bookList", list);
modelAndView.setViewName("book/a");
return modelAndView;
}
窄化请求映射:说直接点,就是在原先直接通过某个url访问某一个Controller方法时,该url前面再加上一个路径,便于区分。
如:上诉的URL映射代码中的@RequestMapping("/queryBook"),访问路径是.../queryBook.action,那么如果进行了窄化:该访问路径可能就变成.../test/queryBook,那么在其他的Controller中给某个方法一个url,我依旧可以给queryBook,此时只要窄化的部分保证不一样即可。
@Controller
@RequestMapping("/books")
public class bookController {
@Autowired
private bookService bService;
// 商品信息修改页面的展示
@RequestMapping(value="/editBook",method= {RequestMethod.POST,RequestMethod.GET})
public ModelAndView editBook(@RequestParam(value="id",required=true)Integer book_id) throws Exception {
// 调用service根据商品id查询商品信息
bookCustom bCustom=bService.findBookById(book_id);
ModelAndView modelAndView = new ModelAndView();
/*Listlist=new ArrayList<>();
list.add(bCustom);*/
modelAndView.addObject("bookCustom", bCustom);
modelAndView.setViewName("book/editBook");
return modelAndView;
}
}
如上所示,在bookController前面加上了@RequestMapping的注解,此时访问editBook方法时,不在是.../editBook.action,而是.../books/editBook.action
限制http请求方法:如下:
@RequestMapping(value="/editBook",method= {RequestMethod.POST})
该注解规定了请求的方式只能为post请求,如果前端请求使用了restful风格,那么其get,put,delete请求等将被限制,并报错如下所示:
@requestParam:主要用于在SpringMVC后台控制层获取参数,类似name=request.getParameter("name")。有三个常用参数:defaultValue:表示默认值,required:设置boolean值表示是否为必须,value:用来将前端jsp页面中的传入参数与SpringMVC控制层接收参数名做映射:如jsp中,接收参数名为bookId,那么对于这样的参数即可使用@requestParam(value=“id”)booId进行映射既可成功接收。
@ModelAttribute:用于数据回显,springMvc默认回显pojo数据,以pojo的类名首字母小写作为key,存入request,如类名为TestBook,request中就可以取到key为testBook的pojo属性值直接进行回显。
@Validated表示需要校验,BindingResult bindingResult表示对校验后的错误信息进行接收。
@RequestBody:将请求中的json串转化为对象。这里要多说一句,如果请求中的数据不是json格式,是key-value格式,那么不需要使用该注解。
@ResponseBody:将对象转成json输出。下面是@RequestBody和@ResponseBody两个注解的使用:
@PathVariable:用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数。
@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。
@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。
以上就是SpringMVC常用到的一些注解,当然还有一大部分注解这里没有提及,请读者自行查阅官方API使用。
注:以上文章仅是个人学习过程总结,若有不当之处,望不吝赐教