springmvc注解标签详解



1.@Controller

表明了注解类的服务角色--控制器


从spring3.0起,通过@Controller标注可以将class定义为一个controller类,为使spring找到定义controller的bean,需要在springmvc的配置文件中增加如下


定义:


springmvc注解启动_spring MVC注解开发


两种方式:


a.在springmvc配置文件中定义myController的bean对象


b.在springmvc配置文件中告诉应该去哪里找标记@Controller的controller控制器


2.@RequestMapping

RequestMapping是一个处理请求地址映射的请求,可用于类和方法上,用于类上,表示类中所有的相应请求方法都是以该地址作为路径,如果用于方法出则是,提供提供进一步细分映射信息,相对于类定义出的URL,若类定义出未标明.


方法出用于标记的URL相对web应用的根目录


requestMapping一共有六种属性,下面我们一起来学习


@RequestMapping的属性,一般可以修饰方法也可以修饰类


修饰方法如下


springmvc注解启动_spring_02


springmvc注解启动_springmvc注解启动_03


结果图


springmvc注解启动_spring_04


springmvc注解启动_spring_05


修饰类:


springmvc注解启动_@Controller_06


springmvc注解启动_@RequestMapping_07


结果:


springmvc注解启动_spring MVC注解开发_08


如果相对于绝对路径来说呢?


springmvc注解启动_spring MVC注解开发_09


得到的结果的路径是相同的.


a.value属性


springmvc注解启动_@Controller_10


指请求的实际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属性


springmvc注解启动_springmvc注解启动_11


springmvc注解启动_spring_12


结果也是能跳转到成功页面.


c.params属性


指定request中必须包含某些参数值时,才让该方法处理。


@RequestMapping(params="action=del"),请求参数包含“action=del”,如:http://localhost:8080/book?action=del

springmvc注解启动_springmvc注解启动_13


springmvc注解启动_spring_14



结果也能访问成功页面


springmvc注解启动_springmvc注解启动_15


springmvc注解启动_springmvc注解启动_16


d.header属性


指定request中必须包含某些指定的header值,才能让该方法处理请求。


@RequestMapping(value="/header/id", headers = "Accept=application/json"):表示请求的URL必须为“/header/id 且请求头中必须有“Accept =application/json”参数即可匹配。


springmvc注解启动_@RequestMapping_17


springmvc注解启动_spring MVC注解开发_18


结果:测试无法访问,如果将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获取值,一共有这两种方法


springmvc注解启动_@Controller_19


springmvc注解启动_@Controller_20


springmvc注解启动_spring_21


4.@RequestParam绑定单个请求参数值

@RequestParam用于将请求参数传递给请求方法。


@RequestParam有以下三个参数:


value:


参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入;


required:


是否必须,默认是true,表示请求中一定要有相应的参数,否则将抛出异常;


defaultValue:


默认值,表示如果请求中没有同名参数时的默认值,设置该参数时,自动将required设为false


springmvc注解启动_springmvc注解启动_22


springmvc注解启动_@RequestMapping_23


springmvc注解启动_@Controller_24


springmvc注解启动_spring_25


如果改为TRUE,则这个参数是必须传的


springmvc注解启动_springmvc注解启动_26


5.@RequestHeader绑定请求报头的属性值

请求头包含了若干个属性,服务器可据此获取客户端的信息,通过@RequestHeader即可将请求头中的属性值绑定到处理方法的入参中。


springmvc注解启动_springmvc注解启动_27


springmvc注解启动_@RequestMapping_28


springmvc注解启动_@RequestMapping_29


6.@CookieValue绑定请求中的cookie值

请求头包含了若干个属性,服务器可据此获取客户端的信息,通过@CookieValue即可将请求头中的属性值绑定到处理方法的入参中。


springmvc注解启动_@Controller_30


springmvc注解启动_@RequestMapping_31


springmvc注解启动_@Controller_32


7.使用POJO对象绑定请求参数值

SpringMVC会按请求参数和POJO属性名进行自动匹配,自动为该对象填充属性值,支持级联属性。如:dept.deptId, dept.address.tel等。


springmvc注解启动_@Controller_33


我们在创建一个实体类entity User并实现他的get和set方法以及toString方法


springmvc注解启动_spring MVC注解开发_34


创建表单


springmvc注解启动_@Controller_35


提交成功则转到成功页面,同时查看控制台


springmvc注解启动_@RequestMapping_36


如何我们能够实现级联属性的查询呢?,请继续往下看


创建一个Address实体类


springmvc注解启动_@RequestMapping_37


同时在User中添加,修改表单


springmvc注解启动_@Controller_38


springmvc注解启动_@Controller_39


在这city已经传过来了,乱码问题先不管


8.@ServletApi属性


springmvc注解启动_@RequestMapping_40


springmvc注解启动_spring MVC注解开发_41


springmvc注解启动_spring MVC注解开发_42


总结:以上这些注解的属性在以后需求中都会选择性的遇到.