spring-boot-learning-Web开发-深入理解springMVC
处理器映射
11spring启动阶段就会将@RequestMapping所配置的内容保存到处理器映射HandlerMapping机制中去
22等待请求,通过拦截器拦截请求信息与HandlerMapping进行匹配并找到对应的处理器
33将处理器和按揭器保存到HandlerExecutionChain中,返回给DisopatherServlet。
因此:

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String name() default "";//配置请求映射名称
@AliasFor("path")//通过路径映射
String[] value() default {};
@AliasFor("value")//通过路径映射会path配置项
String[] path() default {};
//限定只响应http请求,如get post head options put trache,默认是所有的响应请求。
RequestMethod[] method() default {};
//存在对应的http参数时才响应
String[] params() default {};
//限定请求头存在对应的参数时才响应
String[] headers() default {};
//限定http请求提交类型 “text/html”
String[] consumes() default {};
//限定返回的内容类型,仅http请求中的Accept类型中包含该指定类型事才返回
String[] produces() default {};
}
注意路径是必配项目

获取控制器参数
无注解获取参数:
要求:参数名称和http参数名称保持一致,默认规则里面参数值可以为null,
@Controller
@RequestMapping("/my")
public class MyController {
@GetMapping("/no/annotation")
@ResponseBody
public Map<String,Object> noAnnotation(Integer intVal,Long longVal,String str){
Map<String,Object> paramsMap = new HashMap<>();
paramsMap.put("intVal",intVal);
paramsMap.put("longVal",longVal);
paramsMap.put("str",str);
return paramsMap;
}
}

通过@RequestParam注解获取参数
/**
* 通过注解@RequestParam
* 目的:指定http请求参数和方法参数的映射关系,处理器按照映射关系得到参数,调用控制器方法
* 注意:默认情况下,@RequestParam标注的参数不能为空,为空会报错
* 可以通过属性required配置为false解决
* @param intVal
* @param longVal
* @param str
* @return
*/
@GetMapping("/annotation")
@ResponseBody
public Map<String,Object> Annotation(
@RequestParam("int_Val") Integer intVal,
@RequestParam("long_Val") Long longVal,
@RequestParam("str_Val") String str){
Map<String,Object> paramsMap = new HashMap<>();
paramsMap.put("intVal",intVal);
paramsMap.put("longVal",longVal);
paramsMap.put("str",str);
return paramsMap;
}
请求为:http://localhost:8867/my/annotation?int_Val=123&long_Val=1&str=str
结果

可以设置允许为空;@RequestParam(value = "str_Val",required = false) String str)

传递数组
/**
* 处理传递简单的值,还可以传递数组
* 支持用逗号分隔的数组参数
* 一旦方法中定义了数组,那么前端就需要依照一定的规则传递给这个方法,每个参数的数组元素需要逗号分隔
* @param intArr
* @param longArr
* @param strArr
* @return
*/
@GetMapping("/requestArray")
@ResponseBody
public Map<String,Object> requestArray(int[] intArr,Long[] longArr,String[] strArr){
Map<String,Object> paramsMap = new HashMap<>();
paramsMap.put("intArr",intArr);
paramsMap.put("longArr",longArr);
paramsMap.put("strArr",strArr);
return paramsMap;
}

传递JSON格式
通过URL传递参数
/**
* 一些网站中,提出了REST风格,这些参数大多数都是通过URL进行传递的,
* 例如:你要获取1号员工的信息,URL:/user/1 其中1代表的就是用户编号
*
* 可以通过处理器映射和注解@PathVariable组合获取URL中的参数。
* 流程:1先通过处理器映射可以定位参数的位置和名称,
* 2使用注解@PathVariable通过名称来获取参数
* @param id
*/
@GetMapping("/{id}")
@ResponseBody
public String getId(@PathVariable("id") Long id){
return id.toString();
}
/**
* 上面使用了@GetMapping指定一个URL,用{参数名称}来标明位置和名称,这里名称是id
* 所以在方法使用@PathVariable的时候配置的字符串为id,和上面URL参数声明对应
*/

获取格式化参数:
@RequestMapping("/format/form")
public String showFormat(){
System.out.println("from");
return "formatter";
}
@PostMapping("/format/commit")
public Map<String,Object> format(
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date date,
@NumberFormat(pattern = "x,xxx.xx") Double number
){
Map<String,Object> paramsMap = new HashMap<>();
paramsMap.put("date",date);
paramsMap.put("number",number);
return paramsMap;
}
spring-boot-learning-Web开发-深入理解springMVC的更多相关文章
- Spring Boot的web开发
web开发的自动配置类:org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration 自动配置的ViewResolver 视图的 ...
- 跟我学Spring Boot(三)Spring Boot 的web开发
1.Web开发中至关重要的一部分,Web开发的核心内容主要包括内嵌Servlet容器和SpringMVC spring boot 提供了spring-boot-starter-web 为web开发提 ...
- Spring Boot的web开发&静态资源配置方式
Web开发的自动配置类:org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration 1.1. 自动配置的ViewResolve ...
- 【Spring Boot】web开发
springboot在开发web项目的时候具备天然的优势,现在的很多企业级开发都是依托于springboot的. 使用springboot的步骤: 1.创建一个SpringBoot应用,选 ...
- Spring Boot 整合 Web 开发
这一节我们主要学习如何整合 Web 相关技术: Servlet Filter Listener 访问静态资源 文件上传 文件下载 Web三大基本组件分别是:Servlet,Listener,Filte ...
- Spring Boot集成MyBatis开发Web项目
1.Maven构建Spring Boot 创建Maven Web工程,引入spring-boot-starter-parent依赖 <project xmlns="http://mav ...
- Spring Boot(一) 初步理解Spring Boot
一.Spring Boot所解决的问题 Java开发十分笨重:繁多的配置.低下的开发效率.复杂的部署流程以头疼的第三方技术集成. Spring Boot的理念:习惯优于配置——项目中存在大量的配置,此 ...
- Spring Boot 企业级应用开发实战 刘伟东-2018年3月第一版
Spring会自动搜索某些路径下的Java类 并将这些类注册微Bean实例,这样就省去了所有Bean都配置在XML的麻烦 Spring会适当地将显示指定路径下的的类全部注册微Spring Bean . ...
- Spring Boot 嵌入式Web容器
目录 前言 1.起源 2.容器启动流程解析 2.1.获取应用类型 2.2.容器启动流程 3.加载 Web 容器工厂 4.总结 前言 最近在学习Spring Boot相关的课程,过程中以 ...
- 【spring boot】5.spring boot 创建web项目并使用jsp作前台页面
贼烦的是,使用spring boot 创建web项目,然后我再idea下创建的,but 仅仅启动spring boot的启动类,就算整个项目都是好着的,就算是能够进入controller中,也不能成功 ...
随机推荐
- Vue 源码解读(9)—— 编译器 之 优化
前言 上一篇文章 Vue 源码解读(8)-- 编译器 之 解析 详细详解了编译器的第一部分,如何将 html 模版字符串编译成 AST.今天带来编译器的第二部分,优化 AST,也是大家常说的静态标记. ...
- 【CPU】进程管理之五状态模型
本文为第三篇,进程管理之五状态模型,进程在操作系统里边是有多个状态的,本文就是了解进程在操作系统中的多个状态 1.进程的五个状态 创建状态 就绪状态 阻塞状态 执行状态 终止状态 2.进程处于这五种状 ...
- 由浅入深--第一个MyBatis程序
话不多说,马上开始我们的第一个Mybatis程序: 第一个程序,当然要参考MyBatis的官网文档来搞,地址如下:https://mybatis.org/mybatis-3/zh/getting-st ...
- 60天shell脚本计划-3/12-渐入佳境
--作者:飞翔的小胖猪 --创建时间:2021年2月6日 --修改时间:2021年2月10日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可在 ...
- Mono创始人 Miguel de Icaza今天离开微软
2016年,微软突然宣布收购移动工具开发商Xamarin,后者是位于美国加利福尼亚,据称微软收购Xamarin交易价格在4亿到5亿美元之间.因此,微软获得了著名的开源倡导者和开发人员Miguel de ...
- 使提示框居中显示&自定义提示框
ToastActivity.java文件: 1 public class ToastActivity extends AppCompatActivity { 2 private Button mbtn ...
- One-Hot编码(转)
机器学习:数据预处理之独热编码(One-Hot) 前言 ---------------------------------------- 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女 ...
- 分子动力学模拟之SETTLE约束算法
技术背景 在上一篇文章中,我们讨论了在分子动力学里面使用LINCS约束算法及其在具备自动微分能力的Jax框架下的代码实现.约束算法,在分子动力学模拟的过程中时常会使用到,用于固定一些既定的成键关系.例 ...
- Spring入门笔记简要
总览:https://www.processon.com/view/link/605b14ab5653bb2225e6b0c5 一.Spring 1.概述 1.spring框架简介 为简化企业级开 ...
- ElasticSearch集成SpringBoot与常见使用方法
目录 一.导包 二.核对导入的ES版本 修改导入版本 三.写配置类 四.开始测试 索引操作 1.创建索引 2.查看索引是否存在 3.删除索引 文档操作 1.添加文档 2.查看文档是否存在 3.修改文档 ...