处理器映射

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的更多相关文章

  1. Spring Boot的web开发

    web开发的自动配置类:org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration 自动配置的ViewResolver 视图的 ...

  2. 跟我学Spring Boot(三)Spring Boot 的web开发

    1.Web开发中至关重要的一部分,Web开发的核心内容主要包括内嵌Servlet容器和SpringMVC spring boot  提供了spring-boot-starter-web 为web开发提 ...

  3. Spring Boot的web开发&静态资源配置方式

    Web开发的自动配置类:org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration 1.1. 自动配置的ViewResolve ...

  4. 【Spring Boot】web开发

    ​ springboot在开发web项目的时候具备天然的优势,现在的很多企业级开发都是依托于springboot的. ​ 使用springboot的步骤: ​ 1.创建一个SpringBoot应用,选 ...

  5. Spring Boot 整合 Web 开发

    这一节我们主要学习如何整合 Web 相关技术: Servlet Filter Listener 访问静态资源 文件上传 文件下载 Web三大基本组件分别是:Servlet,Listener,Filte ...

  6. Spring Boot集成MyBatis开发Web项目

    1.Maven构建Spring Boot 创建Maven Web工程,引入spring-boot-starter-parent依赖 <project xmlns="http://mav ...

  7. Spring Boot(一) 初步理解Spring Boot

    一.Spring Boot所解决的问题 Java开发十分笨重:繁多的配置.低下的开发效率.复杂的部署流程以头疼的第三方技术集成. Spring Boot的理念:习惯优于配置——项目中存在大量的配置,此 ...

  8. Spring Boot 企业级应用开发实战 刘伟东-2018年3月第一版

    Spring会自动搜索某些路径下的Java类 并将这些类注册微Bean实例,这样就省去了所有Bean都配置在XML的麻烦 Spring会适当地将显示指定路径下的的类全部注册微Spring Bean . ...

  9. Spring Boot 嵌入式Web容器

    目录 前言 1.起源 2.容器启动流程解析 2.1.获取应用类型 2.2.容器启动流程 3.加载 Web 容器工厂 4.总结 前言         最近在学习Spring Boot相关的课程,过程中以 ...

  10. 【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

    贼烦的是,使用spring boot 创建web项目,然后我再idea下创建的,but 仅仅启动spring boot的启动类,就算整个项目都是好着的,就算是能够进入controller中,也不能成功 ...

随机推荐

  1. jmeter实现sha256算法加密

    方法一:自带函数 参数含义 算法摘要:MD2.MD5.SHA-1.SHA-224.SHA-256.SHA-384.SHA-512 String to be hashed:要计算的字符串: Salt t ...

  2. msf生成后门实战漫游内网

    前言:当我们在渗透当中首先拿到webshell权限,进一步提权渗透,获得内网的主机,假设在这里我们获取了具有双网卡的web服务器,我们的目的是通过这台web服务器,进行内网漫游,获取内网中其他主机的系 ...

  3. XSS Challenge靶场练习

    实验目的 学习xss的基础知识及利用方式. 实验原理 XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写 ...

  4. Smartbi:用Excel制作移动端的九型人格测试

    ​九型人格是一个近年来倍受美国斯坦福大学等国际著名大学MBA学员推崇并成为现今最热门的课程之一,近十几年来已风行欧美学术界及工商界.全球500强企业的管理阶层均有研习九型性格,并以此培训员工,建立团队 ...

  5. Hadoop配置文件汇总

    (一)基本集群配置 共8个配置文件 hadoop-env.sh yarn-env.sh mapred-env.sh core-site.xml hdfs-site.xml yarn-site.xml ...

  6. Oracle数据库巡检

    转至:https://blog.51cto.com/sf1314/2123068 select inst_id,status,count(*) from gv$session group by ins ...

  7. Linux系统最重要的工具——Shell学习笔记

    一.为什么学习Shell脚本语言 1.Shell脚本语言是实现Linux/UNIX系统管理及自动化运维必备的重要工具,Linux/UNIX系统底层及 基础应用软件的核心大都涉及Shell脚本的内容. ...

  8. matplotlib(终章)

    今日内容概要 matplotlib实际案例演示 各种图形的总结 数据清洗(简单) 数据清洗的案例 今日内容详细 matplotlib实际案例演示 # 2.绘制每年电影上映数量曲线图 首先载入模块 im ...

  9. appium报错Message: Cannot set the element to ‘XXXX’. Did you interact with the correct element?

    appium+python+android 在定位到模块输入内容的时候遇到了一个问题 send_keys报错 appium报错Message: Cannot set the element to 'X ...

  10. 服务端&客户端注册进Eureka

    目录 服务端(接口提供方) 创建项目 导入Eureka客户端POM 启动类添加注解 配置YML 暴漏接口 启动服务 集群 配置成功后页面如下 客户端(接口调用方) 修改Yml文件 配置类 启动类添加注 ...