1. @RequestMapping 除了修饰方法, 还可来修饰类

2. 1). 类定义处: 提供初步的请求映射信息。相对于 WEB 应用的根目录

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

常用: 使用 method 属性来指定请求方式

@RequestMapping(value = "/testMethod", method = RequestMethod.POST)

public String testMethod() {

System.out.println("testMethod");

return SUCCESS;

}

了解: 可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式.

@RequestMapping(value = "testParamsAndHeaders", params = { "username",

"age!=10" }, headers = { "Accept-Language=en-US,zh;q=0.8" })

public String testParamsAndHeaders() {

System.out.println("testParamsAndHeaders");

return SUCCESS;

}

@PathVariable 可以来映射 URL 中的占位符到目标方法的参数中.

@RequestMapping("/testPathVariable/{id}")

public String testPathVariable(@PathVariable("id") Integer id) {

System.out.println("testPathVariable: " + id);

return SUCCESS;

}

支持 Ant 风格的 URL:

– ?:匹配文件名中的一个字符

– *:匹配文件名中的任意字符

– **:** 匹配多层路径

@RequestMapping("/testAntPath/*/abc")

public String testAntPath() {

System.out.println("testAntPath");

return SUCCESS;

}

REST:即 Representational State Transfer。(资源)表现层状态转化

HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:

POST 用来新增资源:     /order POST

PUT 用来更新资源:     /order/1 PUT     update?id=1

GET 用来获取资源:     /order/1 GET     get?id=1

DELETE 用来删除资源:   /order/1 DELETE   delete?id=1

HiddenHttpMethodFilter:浏览器 form 表单只支持 GET与 POST 请求,而DELETE、PUT 等 method 并不支持,

Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与DELETE 请求

* 如何发送 PUT 请求和 DELETE 请求呢 ?

1. 需要配置 HiddenHttpMethodFilter

2. 需要发送 POST 请求

3. 需要在发送 POST 请求时携带一个 name="_method" 的隐藏域, 值为DELETE 或 PUT

* 在 SpringMVC 的目标方法中如何得到 id 呢? 使用@PathVariable注解

1.在xml文件中配置HiddenHttpMethodFilter

HiddenHttpMethodFilter

org.springframework.web.filter.HiddenHttpMethodFilter

HiddenHttpMethodFilter

/*

2.在jsp中设置请求的响应

3.在.java中发出请求

①GET请求

@RequestMapping(value="/testRest/{id}", method = RequestMethod.GET)

public String testRest(@PathVariable Integer id){

System.out.println("testRest GET " + id);

return SUCCESS;

}

GET的响应

Test REST GET

②POST请求

@RequestMapping(value="/testRest", method = RequestMethod.POST)

public String testRest(){

System.out.println("testRest POST ");

return SUCCESS;

}

POST的响应

③DELETE请求

@RequestMapping(value="/testRest/{id}", method = RequestMethod.DELETE)

public String testRestDelete(@PathVariable Integer id){

System.out.println("testRest Delete " + id);

return SUCCESS;

}

DELETE的响应

④PUT请求

@RequestMapping(value="/testRest/{id}", method = RequestMethod.PUT)

public String testRestPut(@PathVariable Integer id){

System.out.println("testRest Put " + id);

return SUCCESS;

}

PUT的响应

映射请求参数 & 请求参数

@PathVariable、  @RequestParam、@RequestHeader

@RequestParam可以把请求参数传递给请求方法

– value:参数名

– required:是否必须。默认为 true, 表示请求参数中必须包含对应的参数,若不存在,将抛出异常

– defaultValue:请求参数的默认值

@RequestMapping(value = "/testRequestParam")

public String testRequestParam(

@RequestParam(value="username") String username,

@RequestParam(value="age") Integer age){

System.out.println("testRequestParam username: " + username + "age:" + age);

return SUCCESS;

}

注:这里的age若为int型,则应该如下指定

@RequestParam(value = "age", required = false, defaultValue = "0") int age

响应

test RequestParam

@RequestHeader   了解: 映射请求头信息 用法同 @RequestParam

@RequestMapping("/testRequestHeader")

public String testRequestHeader(

@RequestHeader(value = "Accept-Language") String al) {

System.out.println("testRequestHeader, Accept-Language: " + al);

return SUCCESS;

}

Test RequestHeader

@CookieValue: 映射一个 Cookie 值. 属性同 @RequestParam

@RequestMapping("/testCookieValue")

public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {

System.out.println("testCookieValue: sessionId: " + sessionId);

return SUCCESS;

}

Test CookieValue

** Spring MVC 会按请求参数名和POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性

如:dept.deptId、dept.address.tel 等

username:

password:

email:

age:

sex:

province:

city:

响应   其中Address是User的一个属性

@RequestMapping(value="/testPojo")

public String testPojo(User user){

System.out.println("testPojo User: " + user);

return SUCCESS;

}

可以使用 Serlvet 原生的 API作为目标方法的参数 具体支持以下类型

* HttpServletRequest

* HttpServletResponse

* HttpSession

* java.security.Principal

* Locale

*InputStream

* OutputStream

* Reader

* Writer

@RequestMapping("/testServletAPI")

public void testServletAPI(HttpServletRequest request,

HttpServletResponse response, Writer out) throws IOException {

System.out.println("testServletAPI, " + request + ", " + response);

out.write("hello springmvc");

//return SUCCESS;

}

Test ServletAPI

java ee8 mvc1_JavaEE——SpringMVC(1)--@RequestMapping相关推荐

  1. java源码 - SpringMVC(9)之 其他Resolver

    文章目录 1. LocaleResolver 1.1 继承关系类图 1.2 AcceptHeaderLocaleResolver 1.3 AbstractLocaleResolver 1.4 Abst ...

  2. Java常见面试题 Java面试必看 (一)

    本篇博客是本人收集网上Java相关的资料整理所得,仅供参考. 一.Java基础 1.JDK 和 JRE区别 JDK(Java Development Kit)是针对Java开发员的产品,是整个Java ...

  3. SpringMVC(4)

    SpringMVC(4) 基础实现 创建新项目 Group Id为cn.tedu.spring, Artifact Id为SPRINGMVC-02, Packaging为war, 需要实现:访问htt ...

  4. Java常见面试题(2)

    Java常见面试题(2) 面向对象的三个特征 谈谈你对多态的理解 多态的好处: 什么是Java程序的主类?应用程序和小程序的主类有何不同? 为什么Java里有基本数据类型和引用数据类型 值传递和引用传 ...

  5. Java EE知识储备(二)

    Java EE知识储备(二) 目录: 1.前台线程和后台线程: 2.Spring: 3.加载驱动的方法: 4.线程的wait和notify方法: 5.线程安全问题: 6.抽象类与接口: 7.final ...

  6. AliPay - Java支付宝接口开发(三)

    一.前言 AliPay - Java支付宝接口开发(一) AliPay - Java支付宝接口开发(二) 二.支付宝沙箱环境集成Web项目 1.将支付宝Demo中的相关文件复制到我们的项目中 1.1 ...

  7. Java后端知识汇总(部分)

    Java后端知识汇总(部分) 一. Java基础 二. Redis知识详解 三. 计算机网络 四.Spring知识体系 五.Java虚拟机 六.Java高并发 (同一块知识建议结合着看,便于查漏补缺) ...

  8. java基础面试题(九)

    java基础面试题(九) SpringBoot/SpringCloud 什么是SpringBoot? 在Spring框架这个大家族中,产生了很多衍生框架,比如Spring.Springmvc框架等,S ...

  9. Java常见面试题 Java面试必看 (二)

    Java常见面试题 Java面试必看 (一) 十一.Spring Boot/Spring Cloud 104.什么是 spring boot? Spring Boot 是由 Pivotal 团队提供的 ...

最新文章

  1. springboot flask php,使用Vue,Spring Boot,Flask,Django 完成Vue前后端分离开发(二)
  2. 使用AD9833谐波发送调频广播
  3. JavaScript 设计模式基础(二)
  4. Can't connect to X11 window server using ':1.0' as the value of the DISPLAY variable.
  5. 澳洲森林火灾蔓延数学建模,基于元胞自动机模拟多模式下火灾蔓延(附部分源码)
  6. Python-dataframe合并(merge函数)
  7. java 获取sqlsession_获取Java的MyBatis框架项目中的SqlSession的方法
  8. 儿童的身高标准对照表_2020“儿童身高标准”出炉,10岁身高140,你家娃达标吗...
  9. Go语言反射之值反射
  10. JS对象迭代、事件处理器、表单控件绑定、表单复选框、表单单选按钮
  11. 吴恩达CS 230深度学习课开学了!秋季视频全部上线,课件小抄应有尽有
  12. Hadoop平台简述
  13. Python基本数据类型字符串操作总结
  14. web页面上联系QQ客服功能实现——一行代码搞定
  15. HTML5小白长成记(5) ---img嵌入图片
  16. 【赵渝强老师】阿里云大数据ACP认证之阿里大数据产品体系
  17. 3S基础知识:VC6.0+MapX编程总结
  18. 关于《佛本是道》的一些看法
  19. 《作为意志和表象的世界》_世界作为表象初论_叔本华
  20. python程序异常处理_python中程序的异常处理

热门文章

  1. 贪心策略——活动选择问题
  2. JavaWeb学习笔记-kuangshen
  3. flinksql写入hudi 踩坑实录
  4. MogDB如何配置IPv6?
  5. 面试官竟让我用Redis实现一个消息队列!
  6. Oracle分区技术特性详细解读
  7. 一起玩转LiteOS组件:Pixman
  8. 【华为云技术分享】HDC.Cloud | 为防止交通事故,95后学生运用“黑科技”这样做!
  9. 【鲲鹏来了】鲲鹏迁移过程案例分享
  10. 工业机器人实训耗材_工业机器人实训室