栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC-RequestMapping

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC-RequestMapping

目录

1@RequestMapping

2.value属性

3.params属性

4.headers属性

5.method属性

6.RestFul 风格

结语


1@RequestMapping

介绍:@RequestMapping注解用于映射url到控制器类或一个特定的处理程序方法。可用于类或方法上。

-类定义处:提供初步的请求映射信息。相对于WEB应用的根目录
-方法处:提供进一步的细分映射,相对于类定义处的URL。若类定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录.


DispatcherServlet截获请求,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。
 

2.value属性

介绍:表示映射到前这个请求方法的访问地址。

(1)只注解在方法上

/ 表示到http://ip:port/工程名/ 映射到代码的WebContent目录

/blog 就表示到http://ip:port/工程名/blog

@Controller
public class BlogController {
 @RequestMapping("/blog")
 public String hello(Model model){
 model.addAttribute("msg","Hello,SpringMVCAnnotation!");
 return "hello";
 }
}

浏览器:

(2)同时注解类与方法

@Controller
@RequestMapping("/mycontroller")
public class BlogController {
 @RequestMapping("/blog")
 public String hello(Model model){
 model.addAttribute("msg","Hello,SpringMVCAnnotation!");
 return "hello";
 }
}

浏览器:

3.params属性

(1)params="yixin"表示请求地址必须带有yixin参数

(参数可以选择赋值或不赋值,但一定要有这个参数)

@Controller
public class BlogController {
 @RequestMapping(value="/blog",params = "yixin")
 public String hello(Model model){
 model.addAttribute("msg","Hello,SpringMVCAnnotation!");
 return "hello";
 }
}

浏览器:

(2)params="name=yixin"表示请求参数中必须要有name,而且值还必须是yixin

@Controller
public class BlogController {
 @RequestMapping(value="/blog",params = "name=yixin")
 public String hello(Model model){
 model.addAttribute("msg","Hello,SpringMVCAnnotation!");
 return "hello";
 }
}


浏览器:
 



(3)params="name!=yixin"表示
1、请求参数中不能有name参数。
2、有name参数,但值不能等于yixin
 

@Controller
public class BlogController {
 @RequestMapping(value="/blog",params = "name!=yixin")
 public String hello(Model model){
 model.addAttribute("msg","Hello,SpringMVCAnnotation!");
 return "hello";
 }
}


浏览器:


第一种情况,不包含name参数:
 



第二种情况,包含name参数,但值不为yixin:
 



(4)params="!name"表示请求地址不能带有name参数
 

@Controller
public class BlogController {
 @RequestMapping(value="/blog",params = "!name")
 public String hello(Model model){
 model.addAttribute("msg","Hello,SpringMVCAnnotation!");
 return "hello";
 }
}


浏览器:
 



(5)params= {"name!=yixin","password=123"} params可以有多个值,每个值之间是&&关系
 

@Controller
public class BlogController {
 @RequestMapping(value="/blog",params = {"name!=yixin","password=123"})
 public String hello(Model model){
 model.addAttribute("msg","Hello,SpringMVCAnnotation!");
 return "hello";
 }
}

浏览器:

4.headers属性

介绍:限定请求头中的内容

headers = "User-Agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) " +
 "Chrome/58.0.3029.110 Safari/537.36"

* 表示限定浏览器必须是谷歌浏览器,而且版本还是Chrome/58.0.3029.110

@Controller
public class BlogController {
 @RequestMapping(value="/blog",headers = "User-Agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")
 public String hello(Model model){
 model.addAttribute("msg","Hello,SpringMVCAnnotation!");
 return "hello";
 }
}

5.method属性

介绍:使用method属性指定请求类型

用于约束请求的类型,可以收窄请求范围。指定请求谓词的类型如GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE等

浏览器默认是使用GET请求的。故以下POST会报错

@Controller
public class BlogController {
 @RequestMapping(value="/blog",method = RequestMethod.POST)
 public String hello(Model model){
 model.addAttribute("msg","Hello,SpringMVCAnnotation!");
 return "hello";
 }
}
浏览器:


我们修改为GET:
@Controller
public class BlogController {
 @RequestMapping(value="/blog",method = RequestMethod.GET)
 public String hello(Model model){
 model.addAttribute("msg","Hello,SpringMVCAnnotation!");
 return "hello";
 }
}
浏览器:



这样就正常了。



6.RestFul 风格

介绍:Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

@PathVariable 注解,让方法参数的值对应绑定到一个URI模板变量上

@Controller
public class BlogController {
 @RequestMapping(value="/blog/{p1}/{p2}")
 public String hello(@PathVariable int p1,@PathVariable int p2, Model model){
 int result=p1+p2;
 model.addAttribute("msg","p1+p2="+result);
 return "hello";
 }
}


浏览器:




使用路径变量的好处?

  • 使路径变得更加简洁;

  • 获得参数更加方便,框架会自动进行类型转换。

  • 通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法,如这里访问是的路径是/blog/1/a,则路径与方法不匹配,那么会出错。





结语
 

以上就是一心同学对@RequestMapping的讲解,通过这个注解可以让我们更加方便地确定请求所对应的处理方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658309.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号