02|第二课:RequestMapping映射及属性

一、历史回顾

(一)、springMVC环境搭建

二、RequestMapping映射及属性

(一)、RequestMapping属性

1、在Controller类的上加RequesMapping注解

例:

在SpringHandler.java类中加上@RequesMapping("springMVCHandler")注解。如下图所示:

9438859-0943343efa885142.jpg
在Controller上添加RequesMapping注解

那么请求的jsp也需要修改,先找类映射再找方法映射,请求(index.jsp)的代码为:<a href="springMVCHandler/welcome">aaa</a>。如下图所示:

9438859-a0d13b8351a8278f.jpg
针对请求的修改

2、在方法上映射RequesMapping注解

(1)、方式一:在Controller类中方法的注解中间加@RequesMapping("welcome/abc")。那么再请求(jsp)的时候。请求的代码需要修改为:<a href="springMVCHandler/welcome/abc">aaa</a>。如下图所示:

9438859-ac01b56e3a2dd265.jpg
图1
9438859-bcf5f400a59f1e73.jpg
图2

注意:

a、映射是去匹配@RequestMapping注解,可以和方法名、类名不一致。

b、跳转方式:默认是请求转发。

c、@RequestMapping默认是value的属性。例:@RequesMapping("springMVC") 和@RequesMapping(value="springMVC")是一样的道理。

(2)、方式二:RequesMapping注解的method属性。method后面的值是枚举类型的,它们分别是:RequestMethod.GETRequestMethod.DELETERequestMethod.POSTRequestMethod.PUT、RequestMethod.HEAD、RequestMethod.OPTIONS、RequestMethod.PATCH、RequestMethod.TRACE,前四个比较常用。这个method代表请求的方式必须是枚举类型中之一,如果method没有指定默认是GET的请求方式。

例:代码:@RequesMapping(value="welcome" method=RequestMethod.POST)。例子中代表请求welcome,请求方式必须是POST。

9438859-8a83ec9f4d78109a.jpg
图1
9438859-7c6ea4f4453afb0d.jpg
图2

(3)、方式三:RequesMapping注解的params属性。这里如果写成@RequesMapping(value="welcome" method=RequestMethod.POST params={"name1"})这样,参数中必须有name1。

例:代码:@RequesMapping(value="welcome" method=RequestMethod.POST params={"name1"})。例子中代表请求welcome,请求方式必须是POST,参数中必须有name1。

9438859-06fa780af65799b5.jpg
图1
9438859-24d71d2c258d4745.jpg
图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。

9438859-b039d79d36063171.jpg
图1
9438859-6e67ccd134de9cf9.jpg
图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属性。(图就不详细截图了,请自行尝试)

9438859-efe208eb1742fa32.jpg
图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参数,否则报错。

9438859-549f3acba58a0ddc.jpg
图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>。

9438859-fa72b053fd3a44a9.jpg
通配符“*”的方法
9438859-90ebede4d385a14f.jpg
针对通配符“*”的请求

例:代码为@RequestMapping("welcome3/*/test"),请求的路径中“*”代表在请求中可以放任意目录。比如请求:<a href="springMVCHandler/welcome3/asdf/test">aaa</a>。

9438859-747ab7c0431c45b8.jpg
通配符“**”的方法
9438859-3c6bb73366170f41.jpg
针对通配符“**”的请求

例:代码为@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处理请求的代码为:

9438859-793f30320ae68ffe.jpg
后台处理代码

处理的流程,如下图所示:

9438859-b1ab07f94a70f09d.jpg
处理流程

在Eclipse中的代码,如下图所示:

猜你喜欢

转载自blog.csdn.net/weixin_34082789/article/details/87592968
今日推荐