1、@Controller
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,
并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。
@Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。
这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式可以管理:
<!--方式一-->
<bean class="com.cqvie.handler.HelloWorld"/>
<!--方式二-->
< context:component-scan base-package = "com.cqvie" /> <!-- 路径写到controller的上一层 -->
此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。
为了先对Controller 有一个初步的印象,以下先定义一个简单的Controller :
package com.cqvie.handler;
import org.springframework.stereotype.Controller;
@Controller
public class HelloWorld {
@RequestMapping("/helloworld")
public String sayHello() {
System.out.println("Hello World!");
return "success";
}
}
2、@RequestMapping
2.1 value:指定请求的实际url
(1)普通的具体值。
@RequestMapping(value="book")
(2)含某变量的一类值。
@RequestMapping(value="/get/{bookId}") 路径中的bookId可以当变量,@PathVariable注解即提取路径中的变量值。
(3)ant风格
@RequestMapping(value="/get/id?"):可匹配“/get/id1”或“/get/ida”,但不匹配“/get/id”或“/get/idaa”;
@RequestMapping(value="/get/id*"):可匹配“/get/idabc”或“/get/id”,但不匹配“/get/idabc/abc”;
@RequestMapping(value="/get/id/*"):可匹配“/get/id/abc”,但不匹配“/get/idabc”;
@RequestMapping(value="/get/id/**/{id}"):可匹配“/get/id/abc/abc/123”或“/get/id/123”,也就是Ant风格和URI模板变量风格可混用。
(4)含正则表达式的一类值
@RequestMapping(value="/get/{idPre:\\d+}-{idNum:\\d+}"):可以匹配“/get/123-1”,但不能匹配“/get/abc-1”,这样可以设计更加严格的规则。
可以通过@PathVariable 注解提取路径中的变量(idPre,idNum)
(5)或关系
@RequestMapping(value={"/get","/fetch"} )即 /get或/fetch都会映射到该方法上。
2.2 method:指定请求的method类型, GET、POST、PUT、DELETE等
@RequestMapping(value="/get/{bookid}",method=RequestMethod.GET)
@RequestMapping(value="/get/{bookid}",method={RequestMethod.GET,RequestMethod.POST})
2.3 params:指定request中必须包含某些参数值是,才让该方法处理
@RequestMapping(params="action=del"),请求参数包含“action=del”,如:http://localhost:8080/book?action=del
仅处理请求中包含了名为“action”,值为“del”的请求。
2.4 headers:指定request中必须包含某些指定的header值,才能让该方法处理请求
@RequestMapping(value="/header/id", headers = "Accept=application/json")
表示请求的URL必须为“/header/id 且请求头中必须有“Accept =application/json”参数即可匹配。
2.5 consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html
@RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json")
方法仅处理request Content-Type为“application/json”类型的请求。
2.6 produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。
@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")
方法仅处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;
3、@RequestParam绑定单个请求参数值
4、@PathVariable绑定URI模板变量值
5、@ModelAttribute
5.1 @ModelAttribute注释一个方法
5.2 @ModelAttribute注释一个方法的参数
5.3 @ModelAttribute注解的使用场景
6、@SessionAttributes
7、@Responsebody与@RequestBody
8、@Resource和@Autowired
9、@CookieValue
参考一下做笔记