springmvc注解标签详解
1.@Controller
表明了注解类的服务角色--控制器
从spring3.0起,通过@Controller标注可以将class定义为一个controller类,为使spring找到定义controller的bean,需要在springmvc的配置文件中增加如下
定义:
两种方式:
a.在springmvc配置文件中定义myController的bean对象
b.在springmvc配置文件中告诉应该去哪里找标记@Controller的controller控制器
2.@RequestMapping
RequestMapping是一个处理请求地址映射的请求,可用于类和方法上,用于类上,表示类中所有的相应请求方法都是以该地址作为路径,如果用于方法出则是,提供提供进一步细分映射信息,相对于类定义出的URL,若类定义出未标明.
方法出用于标记的URL相对web应用的根目录
requestMapping一共有六种属性,下面我们一起来学习
@RequestMapping的属性,一般可以修饰方法也可以修饰类
修饰方法如下
结果图
修饰类:
结果:
如果相对于绝对路径来说呢?
得到的结果的路径是相同的.
a.value属性
指请求的实际url。
1, 普通具体值。
2, 含某变量的一类值,详见@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”;
注意以上的列子都是正则表达式的匹配
b.method属性
结果也是能跳转到成功页面.
c.params属性
指定request中必须包含某些参数值时,才让该方法处理。
@RequestMapping(params="action=del"),请求参数包含“action=del”,如:http://localhost:8080/book?action=del
结果也能访问成功页面
d.header属性
指定request中必须包含某些指定的header值,才能让该方法处理请求。
@RequestMapping(value="/header/id", headers = "Accept=application/json"):表示请求的URL必须为“/header/id 且请求头中必须有“Accept =application/json”参数即可匹配。
结果:测试无法访问,如果将Accept-Language=en-CN则国内的浏览器可以访问
e.consumes属性
指定处理请求的提交内容类型(Content-Type),例如application/json,
text/html。
f.produces属性
指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。
方法仅处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json。
3.@PathVariable映射URL绑定的占位符
带占位符的URL是spring3.0新增的功能,该功能在SpringMVC中是向REST目标挺进发展过程中具有里程碑的意义。
通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中。
注意在这是通过注解方法获取值得,上面我们还学习了通过原生的HttpServletRequest获取值,一共有这两种方法
4.@RequestParam绑定单个请求参数值
@RequestParam用于将请求参数传递给请求方法。
@RequestParam有以下三个参数:
value:
参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入;
required:
是否必须,默认是true,表示请求中一定要有相应的参数,否则将抛出异常;
defaultValue:
默认值,表示如果请求中没有同名参数时的默认值,设置该参数时,自动将required设为false
如果改为TRUE,则这个参数是必须传的
5.@RequestHeader绑定请求报头的属性值
请求头包含了若干个属性,服务器可据此获取客户端的信息,通过@RequestHeader即可将请求头中的属性值绑定到处理方法的入参中。
6.@CookieValue绑定请求中的cookie值
请求头包含了若干个属性,服务器可据此获取客户端的信息,通过@CookieValue即可将请求头中的属性值绑定到处理方法的入参中。
7.使用POJO对象绑定请求参数值
SpringMVC会按请求参数和POJO属性名进行自动匹配,自动为该对象填充属性值,支持级联属性。如:dept.deptId, dept.address.tel等。
我们在创建一个实体类entity User并实现他的get和set方法以及toString方法
创建表单
提交成功则转到成功页面,同时查看控制台
如何我们能够实现级联属性的查询呢?,请继续往下看
创建一个Address实体类
同时在User中添加,修改表单
在这city已经传过来了,乱码问题先不管
8.@ServletApi属性
总结:以上这些注解的属性在以后需求中都会选择性的遇到.