1、RequestMapping
RequestMapping注解类的属性,分别有value,method,consumes,produces,params,headers属性。
(1)value:指定处理请求的路径,value="/login"
(2)method=RequestMethod.post,指定请求的属性。
(3)produces,指定请求中包含返回内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;。
consumes,指定请求Content-Type,consumes={"application/json","text/plain"}
(4)params,可以指定url中的params ={"myparam=myvalue"}
headers,某些指定的header值,才能让该方法处理请求,例如@RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")
(5)@RequestMapping不仅支持标准的URL,还支持Ant风格和带{xxx}占位符的URL,下面的URL都是合法的:
/user/*/login:匹配/user/aaa/login,/user/任意字符/login 等
/user/**/login:匹配/user/login, /user/aaa/bbb/login 等 /user/login??:匹配/user/loginAA, /user/loginbb 等 /user/{userId}:匹配/user/123, /user/234 等 /user/**/{userId}:匹配/user/aaa/bbb/123,/user/aaa/234等 |
2、四大注解
@Component | 是通用标注 |
@Controller | 标注 web 控制器 |
@Service | 标注 Servicec 层的服务 |
@Respository | 标注 DAO 层的数据访问 |
这些注解都是类级别的, 可以不带任何参数,也可以带一个参数,代表bean名字,在进行注入的时候就可以通过名字进行注入了。
3、resource和Autowired
@autowired | ,是spring自带的 | 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false |
按名称加载,@Autowired(flase) @Qualifier("loginService") LoginService service |
@Resource | 是j2ee自带 | @Resource,默认安装名称进行装配, |
3、PathVariable与RequestParam
PathVariable注解 | @RequestMapping注解中使用占位符情况下,需要使用@PathVariable注解指定占位符参数。 |
对应url,/url/{id} RequestMapping(@PathVariable("id") String name) |
RequestParam注解类 | 直接获取url参数给函数参数,当不带参数时,两者名称必须相同。 |
获取请求参数有两种:request.getParameter("name"),另一种是通过@RequestParam直接获得。 @RequestParam("username") String name .表示将请求中username 直接赋值给name。 有三个属性 value,required,defaultValue。 可以通过required=false表示前端参数不一定要传,有可能为空。因此,参数类型尽量不要使用基本类型int,long等,而应该使用具体的对象类Integer、Long、String等 。 |
4、CookieValue与SessionAttributes
前者直接获取cookie参数赋值给修饰的形参,后者修饰类将数据存储到session中。例如
5、Responsebody与RequestHeader
Responsebody,用于将Controller的方法返回的对象,通过适当的HttpMessageConverter(转换器)转换为指定格式后,写入到Response对象的body数据区。
@RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上。相当于,从Request对象中取出请求头中的参数赋值给修饰的形参。
6、将会做一个例子来实践