1.用法

SpringMVC使用@RequestMapping注解,为控制器指定可以处理哪些URL请求,并且可以指定处理请求的类型(POST/GET),如果@RequestMapping没有指定请求的方式,那么代表这个方法可以同时处理GET/POST请求。

 @RequestMapping("/helloworld")
public String helloWorld() {
return SUCCESS;
}

URL的地址:http://localhost:8082/helloworld

除此之外,@RequestMapping有两种用法,一是标在类上,二是标在方法上。

① 标记在类上:提供初步的请求映射信息。相对于 WEB 应用的根目录

② 标记在方法上:提供进一步的细分映射信息。相对于标记在类上的 URL。

 @Controller
@RequestMapping("/springmvc")
public class SpringMVCTest {
private static final String SUCCESS = "success";
@RequestMapping("/helloworld")
public String helloWorld() {
return SUCCESS;
}
}

URL的地址:http://localhost:8082/springmvc/helloworld

除此之外我们还可以设置处理请求的类型,GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE;

 @Controller
@RequestMapping("/springmvc")
public class SpringMVCTest {
private static final String SUCCESS = "success";
@RequestMapping(value = "/helloworld", method = RequestMethod.GET)
public String helloWorld() {
return SUCCESS;
}
}

因为有多个属性,所以我们把方法的路由地址设置为value属性值,把请求方式设置为method,但是如果我们以POST方式去请求helloworld这个方法,就会抛出405错误。

我们打开postman,输入要访问的地址:http://localhost:8090/springmvc/helloworld    之后选择POST请求方式进行访问,我们就可以看到报出405。

2.补充用法

@RequestMapping除了能够对请求对url和请求方式进行设置之外,还可以对HTTP请求的内容(请求参数和请求头)进行设置,下面是一个标准HTTP请求的报文格式。

我们可以通过@RequestMapping的params和headers属性进行限制,我们重新来编写一个Controller方法,在@RequestMapping中我们设置了params和header属性,首先来看params属性,它表示的是,接受的请求中,必须包含username参数且age属性不能等于10,headers属性指的是方法处理的请求头中必须含有Accept-Language,且属性相同,这里一定要注意Accept-Language后面跟的是=。

 @RequestMapping(value = "/testParamAndHeaders", params = {"username", "age!=10"}, headers = {"Accept-Language=zh,zh-CN;q=0.9,en;q=0.8"})
public String testParamAndHeaders() {
System.out.println("testParamAndHeaders");
return SUCCESS;
}

我们在index.jsp定义如下代码进行测试:

 <a href="/springmvc/testHeadersAndParams">Test HeadersAndParams</a> <br><br>

①什么参数都不传,结果会报400

②如果只传递了username,是可以正常访问的,后台拿到的age为null所以可以正常访问

③如果传入用户名和年龄为10,也是会报400

④当传入用户名为wzy,年龄为11时,即可正常访问

并且我们通过谷歌的调试工具可以发现,确实发送了指定的请求头。

最新文章

  1. jquery ui 中的插件开发
  2. 第0/24周 SQL Server 性能调优培训引言
  3. android和linux开发环境建立(驱动层)
  4. hdu 4068 福州赛区网络赛H 排列 ***
  5. Android最佳性能实践(三)——高性能编码优化
  6. char a[] = &quot;hello&quot;; char c[] = {&#39;h&#39;,&#39;e&#39;,&#39;l&#39;,&#39;l&#39;,&#39;o&#39;}; int b[] = {1, 2, 3, 4, 5};的长度区别,及内存中空间开辟情况
  7. Golang学习 - strings 包
  8. SpringMVC+easyUI CRUD 添加数据C
  9. 使用Devexpress中的CharControl控件,需要控制AxisY轴的显示范围,需要使用该控件的BoundDataChanged事件
  10. FCKeditor 2.6.6在ASP中的安装及配置方法分享--ZZ转载自网络
  11. WebLogic11g-集群相关概念
  12. emWin酿造机过程演示,含uCOS-III和FreeRTOS两个版本
  13. 【原创】大数据基础之HDFS(1)HDFS新创建文件如何分配Datanode
  14. vim/network/ssh语法
  15. AI之旅(4):初识逻辑回归
  16. 统计cpu相关信息
  17. 《TCP-IP详解卷1》中BGP部分的笔记
  18. Xcode下 gdb 调试命令
  19. kafka--通过python操作topic
  20. Hadoop(分布式系统基础架构)---Hive与HBase区别

热门文章

  1. vue 登录路由判断
  2. 【React自制全家桶】五、React组件的生命周期函数详解
  3. 在Linux上安装Python3.7.1
  4. 2019.12.05【ABAP随笔】 分组循环(LOOP AT Group) / REDUCE
  5. keystone入口manage.py
  6. Git本地初始化并推送到远程仓库
  7. cisco RIP(传闻协议)Routing information protocol
  8. 攻防世界新手区pwn writeup
  9. [转帖]Java 8新特性探究(九)跟OOM:Permgen说再见吧
  10. 【转帖】windows命令行中java和javac、javap使用详解(java编译命令)