二、springMvc常用注解
1、@Controller
声明控制器
2、@RequestMapping
映射web请求,注解在类上或方法上,
内部有参数,
value,表示路径,如value="path";
produces,表示返回的媒体类型和字符集
如返回json数据,则有
@RequestMapping(value = "/getJson", produces = {"application/json;charset=utf-8"}) @ResponseBody 如返回xml数据,则有 @RequestMapping(value = "/getXml",produces = "application/xml;charset=UTF-8") @ResponseBody如返回文本,则有
@RequestMapping(value = "/getText" ,produces = {"text/plain;charset=utf-8"}) @ResponseBody实例如:
@RequestMapping(value = "/getJson", produces = {"application/json;charset=utf-8"}) @ResponseBody public Student getJson(Student stu) { stu.setName("apple"); return stu; } @RequestMapping(value = "/getXml",produces = "application/xml;charset=UTF-8") @ResponseBody public Student getXml(Student stu){ stu.setName("apple"); return stu; }备注:添加json和xml的maven依赖
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.6.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.6.0</version> </dependency>3、@ResponseBody
将返回值直接给用户,而不是表示逻辑页面
4、@RequestBody
表示请求参数在request请求体中,而不是在url后面
5、@RequestParam
表示接收请求参数
6、@PathVariable
用来接收路径中的参数
7、@RestController
是一个组合注解,是@Controller和@ResponseBody的组合,表示是一个控制器,且直接返回结果
8、@ControllerAdivce
注解在类上,开启对控制器全局配置,
如
@ControllerAdvice public class BaseControllerAdvice {}在类内部方法上,有几下注解进行全局配置:
a)@ExceptionHandler
全局处理控制器内的异常,如
@ExceptionHandler(value = Exception.class) public String exceptionHandler(Exception e, WebRequest request, Model model){ model.addAttribute("errorMsg",e.getMessage()); return "error"; }b)@InitBinder
用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中
@InitBinder public void initBinder(WebDataBinder webDataBinder){ webDataBinder.setDisallowedFields("name"); //忽略name值的绑定,注意是model中,如自定义的Student实例对象 webDataBinder.registerCustomEditor(Date.class,new MyDateEditor()); //定义string到Date的映射 } //自定义Date绑定格式 class MyDateEditor extends PropertyEditorSupport{ @Override public void setAsText(String text) throws IllegalArgumentException { try { Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(text); setValue(date); } catch (ParseException e) { e.printStackTrace(); } } }c)@ModelAttribute
全局绑定键值对到Model中,也就是绑定后,全局controller内的model都有设定的值
@ModelAttribute public void addDate(Model model){ model.addAttribute("nowDate", DateFormatUtils.format(new Date(),"yyyy-MM-dd hh:mm:ss")); } 当然也可以在请求方法内,通过注解@ModelAtttribute获取绑定的值,如: @RequestMapping("/") public String index(@ModelAttribute("nowDate") String nowDate) {}
