02|第二课:RequestMapping映射及属性
一、历史回顾
(一)、springMVC环境搭建
二、RequestMapping映射及属性
(一)、RequestMapping属性
1、在Controller类的上加RequesMapping注解
例:
在SpringHandler.java类中加上@RequesMapping("springMVCHandler")注解。如下图所示:
在Controller上添加RequesMapping注解那么请求的jsp也需要修改,先找类映射再找方法映射,请求(index.jsp)的代码为:<a href="springMVCHandler/welcome">aaa</a>。如下图所示:
针对请求的修改2、在方法上映射RequesMapping注解
(1)、方式一:在Controller类中方法的注解中间加@RequesMapping("welcome/abc")。那么再请求(jsp)的时候。请求的代码需要修改为:<a href="springMVCHandler/welcome/abc">aaa</a>。如下图所示:
图1 图2注意:
a、映射是去匹配@RequestMapping注解,可以和方法名、类名不一致。
b、跳转方式:默认是请求转发。
c、@RequestMapping默认是value的属性。例:@RequesMapping("springMVC") 和@RequesMapping(value="springMVC")是一样的道理。
(2)、方式二:RequesMapping注解的method属性。method后面的值是枚举类型的,它们分别是:RequestMethod.GET、RequestMethod.DELETE、RequestMethod.POST、RequestMethod.PUT、RequestMethod.HEAD、RequestMethod.OPTIONS、RequestMethod.PATCH、RequestMethod.TRACE,前四个比较常用。这个method代表请求的方式必须是枚举类型中之一,如果method没有指定默认是GET的请求方式。
例:代码:@RequesMapping(value="welcome" method=RequestMethod.POST)。例子中代表请求welcome,请求方式必须是POST。
图1 图2(3)、方式三:RequesMapping注解的params属性。这里如果写成@RequesMapping(value="welcome" method=RequestMethod.POST params={"name1"})这样,参数中必须有name1。
例:代码:@RequesMapping(value="welcome" method=RequestMethod.POST params={"name1"})。例子中代表请求welcome,请求方式必须是POST,参数中必须有name1。
图1 图2(4)、方式四:RequesMapping注解的params属性。这里如果写成@RequesMapping(value="welcome" method=RequestMethod.POST params={"name1=zs"})这样,参数中必须有name1,并且name1的值只能是zs。
例:代码:@RequesMapping(value="welcome" method=RequestMethod.POST params={"name1"})。例子中代表请求welcome,请求方式必须是POST,参数中必须有name1,并且name1的值只能是zs。
图1 图2(5)、方式五:RequesMapping注解的params属性。这里如果写成@RequesMapping(value="welcome" method=RequestMethod.POST params={"name1=zs", "age!=23"})这样,参数中必须有name1,其name1的值只能是zs;然后如果有age属性的话,不能为23,当然这里也可以没有age属性。
例:代码:@RequesMapping(value="welcome" method=RequestMethod.POST params={"name1"})。例子中代表请求welcome,请求方式必须是POST,参数中必须有name1,其name1的值只能是zs;然后如果有age属性的话,不能为23,当然这里也可以没有age属性。(图就不详细截图了,请自行尝试)
图1(6)、方式六:RequesMapping注解的params属性。这里如果写成@RequesMapping(value="welcome" method=RequestMethod.POST params={"name1=zs", "age!=23", "!height"})这样,参数中必须有name1,其name1的值只能是zs;然后如果有age属性的话,不能为23,当然这里也可以没有age属性;在请求的时候不能包含height参数,否则报错。
例:代码:@RequesMapping(value="welcome" method=RequestMethod.POST params={"name1"})。例子中代表请求welcome,请求方式必须是POST,参数中必须有name1,其name1的值只能是zs;然后如果有age属性的话,不能为23,当然这里也可以没有age属性;请求中不能包含height参数,否则报错。
图1(7)、方式七:RequesMapping注解的header属性。
headers :请求头信息,可以约定请求头的信息,请求按照约定发送。header={"Accept=.....", "......"},直接将请求信息,用逗号隔开。
例:代码:@RequesMapping(value="welcome" header={"Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Encoding=gzip,deflate"}),
(二)、RequestMapping映射
1、通配符
?:代表任意一个单字符。
* :代表任意字符(0或多个)
** :代表任意目录
例:代码为@RequestMapping("welcome2/*/test"),请求的路径中“*”代表在请求中可以放任意字符。比如请求:<a href="springMVCHandler/welcome2/asdf/test">aaa</a>。
通配符“*”的方法 针对通配符“*”的请求例:代码为@RequestMapping("welcome3/*/test"),请求的路径中“*”代表在请求中可以放任意目录。比如请求:<a href="springMVCHandler/welcome3/asdf/test">aaa</a>。
通配符“**”的方法 针对通配符“**”的请求例:代码为@RequestMapping("welcome4/a?b/test"),请求的路径中“?”代表在请求中可以放任意一个字符。比如请求:<a href="springMVCHandler/welcome4/a6b/test">aaa</a>。
2、@PathVariable获取动态参数
基于ant,通过@PathVariable获取动态参数。
(1)、以前的传参方式
例:
jsp中的请求代码为: <a href="springMVCHandler/welcome5?name=zs">请求链接</a>。
后台的Action处理请求的代码为:String name = request.getParamer("name")。这样就拿到name的值为zs。
(2)、基于ant方式传值
例:
jsp中的请求代码为: <a href="springMVCHandler/welcome5/zs">请求链接</a>。
后台的Controller处理请求的代码为:
后台处理代码处理的流程,如下图所示:
处理流程在Eclipse中的代码,如下图所示: