本来打算看完整个注解再总结springMVC的注解,不过在学习过程中,还是觉得学习一点记一点,避免忘记。
到目前为止,学习了@Controller(表示该类为控制类,也叫处理类)、@RequestMapping(映射请求)、@PathVariable(把请求中的占位符映射到目标方法的参数中)以及@ReaquetMapping和@PathVariable结合使用的rest风格;
1、@Controller:在这就粘贴网上的一句话,我也没啥好说的,
控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。
2、@RequestMapping:该注解是用来请求映射具体方法的,示例@RequestMapping(value="URL地址",method=“具体请求方法,包括GET、POST、DELETE、PUT”,params={参数列表,比如:"username","age !=10"},表示请求中必须要有username并且age不能等于10,header={"",""}与params类似)
3、@PathVariable:该注解把请求中的占位符映射到目标方法的参数中,例如:
/*
* @PathVariable 可以映射URL中的占位符到目标方法的参数中
* */
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable(value="id") Integer id){
System.out.println("testPathVariable:" + id);
return SUCCESS;
}
后面的占位符名称要与@PathVariable里面的参数一致,如果是单一参数,也可以写成,与参数名一致可以自动映射进去
public String testPathVariable(@PathVariable Integer id){
System.out.println("testPathVariable:" + id);
return SUCCESS;
}
4、Rest风格
/*
* Rest 风格的URL
* 以增删改查为例
*
* 新增:/order POST
* 修改: /order/1 PUT
* 删除:/order/1 DELETE
* 查询:/order/1 GET
*
* 一般都只是发送GET请求以及POST请求,如何发送PUT和DELETE请求呢
* 1、需要配置一个过滤器:在web.xml里面配置一个名为HiddenHttpMethodFilter的过滤器
* 2、发送一个POST请求
* 3、在POST请求中有一个隐藏域,规则为:name="_method",value="PUT/DELETE"
*
* 在springMVC的目标方法中如何获取id值呢?
* 使用@PathVariable注解
*
*
* */
@RequestMapping(value="/testRest/{id}", method=RequestMethod.PUT)
public String testPut(@PathVariable(value="id") Integer id){
System.out.println("testRest Put" + id);
return SUCCESS;
}
@RequestMapping(value="/testRest/{id}", method=RequestMethod.DELETE)
public String testDelete(@PathVariable(value="id") Integer id){
System.out.println("testRest Delete" + id);
return SUCCESS;
}
@RequestMapping(value="/testRest", method=RequestMethod.POST)
public String testRest(){
System.out.println("testRest Post");
return SUCCESS;
}
@RequestMapping(value="/testRest/{id}", method=RequestMethod.GET)
public String testRest(@PathVariable(value="id") Integer id){
System.out.println("testRest GET" + id);
return SUCCESS;
}