一篇文章带你掌握主流服务层框架——SpringMVC 在之前的文章中我们已经学习了Spring的基本内容,SpringMVC隶属于Spring的一部分内容 但由于SpringMVC完全针对于服务层使用...包含有两个参数 required:是否为必传参数 defaultValue:参数默认值 POJO参数 POJO参数:请求参数名与形参对象属性名相同,定义POJO类型形参即可接收参数 package...,在配置类中开启@EnableWebMvc //2.使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象中作为数据 @RequestMapping("/listParamForJson...,在配置类中开启@EnableWebMvc //2.使用@RequestBody注解将外部传递的json数据映射到形参的实体类对象中,要求属性名称一一对应 @RequestMapping...,在配置类中开启@EnableWebMvc //2.使用@RequestBody注解将外部传递的json数组数据映射到形参的保存实体类对象的集合对象中,要求属性名称一一对应 @RequestMapping
为了尝试为你彻底讲解清楚,本文采用逐层递进的方式: 列出命令行里所有的传参方式 用示例代码演示不同传参方式的效果、优先级 使用IDEA模拟不同的传参方式 因为在开发过程中,我们不可能打出jar包后再调试...IDEA模拟传参功能 java启动Spring Boot应用的命令行共支持5种方式传参,在如此强大的IEDA面前,都是可以模拟的,熟练使用可大大提高开发、调试效率。...用于模拟传参的窗口,长这样: Tips:若你的IDEA版本比较低的话,窗口长得不尽相同,但功能区大同小异 在这个窗口里,咋一看能传递参数的仅有VM options这一个地方可供我们输入。...从输出的结果中可以很清楚的看到,-Dkey=value属性值会进入到系统属性sysProp里和Spring环境中的sysProp属性源里。 ①②③可以在这里输,那④⑤呢?...【最终】结果 name:YourBatman_ENV age:18_ENV 可以很清楚的看到,自定义环境变量属性值会进入到系统属性sysEnv里 和 Spring环境中的sysEnv属性源里。
@Controller:用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping...@Column: 1.当实体的属性与其映射的数据库表的列不同名时需要使用@Column标注说明,该属性通常置于实体的属性声明语句之前,还可与 @Id 标注一起使用。...具体如下: name属性:name属性定义了被标注字段在数据库表中所对应字段的名称 unique属性:unique属性表示该字段是否为唯一标识,默认为false,如果表中有一个字段需要唯一标识,则既可以使用该标记...属性表示在使用”INSERT”语句插入数据时,是否需要插入该字段的值 updateable属性:updateable属性表示在使用”UPDATE”语句插入数据时,是否需要更新该字段的值 insertable...,和@Log4j注解类似 @NoArgsConstructor:注解在类上;为类提供一个无参的构造方法 @AllArgsConstructor:注解在类上;为类提供一个全参的构造方法 @EqualsAndHashCode
@Controller:用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping...@RepositoryRestResource:配合spring-boot-starter-data-rest使用。...,则既可以使用该标记,也可以使用@Table注解中的@UniqueConstraint (3) nullable属性:nullable属性表示该字段是否可以为null值,默认为true (4) insertable...属性:insertable属性表示在使用”INSERT”语句插入数据时,是否需要插入该字段的值 (5) updateable属性:updateable属性表示在使用”UPDATE”语句插入数据时,是否需要更新该字段的值...@Log4j注解类似 @NoArgsConstructor:注解在类上;为类提供一个无参的构造方法 @AllArgsConstructor:注解在类上;为类提供一个全参的构造方法 @EqualsAndHashCode
@Controller:用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping...@RepositoryRestResource:配合spring-boot-starter-data-rest使用。...,则既可以使用该标记,也可以使用@Table注解中的@UniqueConstraint (3) nullable属性:nullable属性表示该字段是否可以为null值,默认为true (4) insertable...属性:insertable属性表示在使用”INSERT”语句插入数据时,是否需要插入该字段的值 (5) updateable属性:updateable属性表示在使用”UPDATE”语句插入数据时,是否需要更新该字段的值...Log4j注解类似 @NoArgsConstructor:注解在类上;为类提供一个无参的构造方法 @AllArgsConstructor:注解在类上;为类提供一个全参的构造方法 @EqualsAndHashCode
使用 @RequestMapping 映射请求 Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求 在控制器的类定义及方法定义处都可标注 类定义:提供初步的请求映射信息...中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable("xxx") 绑定到操作方法的入参中。...绑定请求参数值 在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法 value:参数名 required:是否必须;默认为 true,表示请求参数中必须包含对应的参数,若不存在...Dept.class 的属性添加到会话中 4)@ModelAttribute 方法入参标注该注解后, 入参的对象就会放到数据模型中 @ModelAttribute 在方法定义上使用 @ModelAttribute...在方法的入参前使用 @ModelAttribute 注解: 可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数绑定到对象中,再传入入参 将方法入参对象添加到模型中 示例: ?
1)在控制器的类定义或方法定义处都可标注 @RequestMapping ① 标记在类上:提供初步的请求映射信息。...可以将POST请求转换为标准的 http 方法以达到REST风格 使用步骤 1....,通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中 //@PathVariable 注解可以将请求URL路径中的请求参数,传递到处理请求方法的入参中 // 浏览器的请求为...,可以使用@RequestParam注解实现获取参数值 书写位置:标注在方法的参数中,springMVC默认会将请求参数注入(绑定)到方法形参中(两个参数名一致) 一旦使用该注解,必须为相应参数传参数...在方法体内,开发者可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据 //目标方法的返回类型也可以是一个Map类型参数(也可以是Model,或ModelMap类型)
使用注解的优势: 采用纯java代码,不在需要配置繁杂的xml文件 在配置中也可享受面向对象带来的好处 类型安全对重构可以提供良好的支持 减少复杂配置文件的同时亦能享受到Spring IoC容器提供的功能...@Controller:用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping...,因为其不是一个完整的实体类,但是它所拥有的属性能够映射在其子类对用的数据库表中 @MappedSuperclass 标识的类不能再有@Entity或@Table注解 @Column: 1.当实体的属性与其映射的数据库表的列不同名时需要使用...具体如下: name属性:name属性定义了被标注字段在数据库表中所对应字段的名称 unique属性:unique属性表示该字段是否为唯一标识,默认为false,如果表中有一个字段需要唯一标识,则既可以使用该标记...属性表示在使用”INSERT”语句插入数据时,是否需要插入该字段的值 updateable属性:updateable属性表示在使用”UPDATE”语句插入数据时,是否需要更新该字段的值 insertable
示例代码: @Controller:用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping...@RepositoryRestResourcepublic:配合spring-boot-starter-data-rest使用。...,则既可以使用该标记,也可以使用@Table注解中的@UniqueConstraint 3 nullable属性:nullable属性表示该字段是否可以为null值,默认为true 4 insertable...属性:insertable属性表示在使用”INSERT”语句插入数据时,是否需要插入该字段的值 5 updateable属性:updateable属性表示在使用”UPDATE”语句插入数据时,是否需要更新该字段的值...final类型,可查看源码的注释知道 当你在执行各种持久化方法的时候,实体的状态会随之改变,状态的改变会引发不同的生命周期事件。
@Controller:用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping...@RepositoryRestResourcepublic:配合spring-boot-starter-data-rest使用。...,则既可以使用该标记,也可以使用@Table注解中的@UniqueConstraint 3 nullable属性:nullable属性表示该字段是否可以为null值,默认为true 4 insertable...属性:insertable属性表示在使用”INSERT”语句插入数据时,是否需要插入该字段的值 5 updateable属性:updateable属性表示在使用”UPDATE”语句插入数据时,是否需要更新该字段的值...当你在执行各种持久化方法的时候,实体的状态会随之改变,状态的改变会引发不同的生命周期事件。
@Controller:用于定义控制器类,在 spring 项目中由控制器负责将用户发来的 URL 请求转发到对应的服务接口(service 层),一般这个注解在类中,通常方法需要配合注解 @RequestMapping...@RepositoryRestResourcepublic:配合 spring-boot-starter-data-rest 使用。...当实体的属性与其映射的数据库表的列不同名时需要使用 @Column 标注说明,该属性通常置于实体的属性声明语句之前,还可与 @Id 标注一起使用。 2....,则既可以使用该标记,也可以使用 @Table 注解中的 @UniqueConstraint - nullable 属性:nullable 属性表示该字段是否可以为 null 值,默认为 true -...log 的 log4j 日志对象,和 @Log4j 注解类似 - @NoArgsConstructor:注解在类上;为类提供一个无参的构造方法 - @AllArgsConstructor:注解在类上;为类提供一个全参的构造方法
@RequestMapping 注解 该注解不但可以修饰方法也可以修饰类 修饰类:若该注解修饰类,则为提供初步的请求映射信息,相对 WEB 应用的根目录 修饰方法:提供进一步的细分映射信息,相对类定义处的...@RequestParam 在处理方法中使用 @RequestParam 可以把请求参数传递给请求方法 value 参数名 required 是否必须,默认为 true,不存在将抛出异常 defaultValue...@ModelAttribute 注解,那么在每个操作方法执行前都会执行此方法,可以在此方法中依据 id 是否为更新操作,若是更新操作,则依据 id 获取 User 对象, 那么目标页面更改的就是从数据库中获取到的对象...若使用了 @ModelAttribute 来修饰,则 key 为 @ModelAttribue 注解的 value 属性值 在 implicitModel 中查找 key 对应的对象,若存在,则作为入参传入...,因找不到对应的映射的处理器而报错 解决:在 SpringMVC 的配置文件中配置 default-servlet-handler 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler
@RequestMapping("/helloMvc") //定义当前请求控制器中,可以处理请求的映射url字符串,前面的 / 可写 可不写 public String helloSpringMvc...即:将控制器组件(加了@Controller注解)加入到容器中,并自动解析加入的请求控制器,可以得到请求处理url和请求处理方法的映射; 2、客户端浏览器,发送请求:http://localhost:8080...; 一旦指定了请求方式,就只能使用指定的请求方式,才可以映射处理,不指定,自动适配(所有方式都可以); method 属性可以指定多个请求方式; 3.2.1 method = RequestMethod.GET...:参数占位符注解 @PathVariable: 写法:只能携带请求处理方法的形参中,自动将RequestMapping中指定的url使用的占位符绑定参数值, 即:请求地址映射为: /url/{参数名}...,目标请求为:/url/参数值,自动将参数值绑定到指定参数名上; 要求1:@RequestMapping("指定参数名")注解请求url中,指定的占位符参数名,必须跟当前请求方法形参中@PathVariable
请求映射路径 为了防止请求路径设置重复,可以给不同模块设置不同的请求路径前缀 名称:@RequestMapping 类型:方法注解 类注解 位置:SpringMVC控制器方法定义上方...参数种类 普通参数 url地址传参,地址参数名与形参变量名相同,定义形参即可接收参数。...位置:SpringMVC控制器方法形参定义前面 作用:将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次 @RequestBody与@RequestParam 区别: @...; return "/page.jsp"; }; 在方法中返回的字符串默认会被当做响应的页面文件的名称 2....上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范 描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:users、books、accounts
提供了不同的映射器实现不同的映射方式 HandlerMapping会把找到映射返回给前端控制器 Handler 后端控制器 在DispatcherServlet的控制下Handler对具体的用户请求进行处理...@RequestParam 形参的类型与绑定的类型不一致时,可以使用@RequestParam进行匹配 value:请求参数名字 required:是否必须,默认是true,表示请求中一定要有相应的参数...内部已经定义了很多的转换器,比如可以直接使用int类型来接收字符串 日期类型与字符串比较特殊,字符串的日期格式,有很多种.可以自己来定义是哪种格式的转换 可以在springmvc处理器适配器上自定义转换器...form标签 简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容 作用 第一是它会自动的绑定来自Model中的一个属性值到当前...在模型当中添加对应的校验规则 在处理器方法的入参标记@valid注解即可 错误信息页面回显 使用原始表单错误信息写到Model中 使用form标签 <fm:error path=
Heap Non-Heap 当然,第一个明显的问题是我们是否需要在堆上运行我们的微服务应用程序的空间。答案是否定的,我们没有。现在,我们来简要介绍一下在 Java 8 中如何进行内存管理过程。...我们可以将JVM内存分为两个不同的部分:堆(Heap)、 非堆(Non-Heap)。如上图所示,我们的微服务器的大小为大小(〜600MB)。...Metaspace : 它替代了 PermGem(Java 7中是JVM堆的一部分)。在 Metaspace 中,通过应用程序加载所有类和方法。...可以想像,当我们的应用程序 Non-Heap 大于 Heap 时,我们可以结束这种情况。首先,让我们用下面的参数来运行我们的服务发现。...低配置的内存用量 我也尝试使用不同的 Web 容器运行 Eureka 应用程序。您可以通过在 pom.xml 文件中包含以下的依赖关系轻松更改 Web 容器。
--- 二、Rest请求映射 2.1> 概述 请求路径,采用@RequestMapping 或 @XxxMapping Rest风格支持(使用HTTP请求方式动词来表示对资源的操作) 核心Filter...:HiddenHttpMethodFilter 用法:表单method=POST, 隐藏域 _method=PUT/DELETE Rest原理(表单提交要使用Rest的时候,因为表单提交只支持GET和POST...请求进来,挨个尝试所有的HandlerMapping看是否有请求信息 如果有,就找到这个请求对应的Handler 如果没有,就找下一个HandlerMapping 如果我们需要一些自定义的映射处理,我们也可以自己给容器中放入...下图中parameters表示方法所有的入参声明(即:参数所在的位置,使用的注解是什么,入参类型是什么,等等)。...如下图所示,由于providedArgs是空的数组,所以都会返回null 红框代码用来判断当前入参是否可以被解析。会在外层循环中,将所有的Controller的入参都进行一次遍历的校验。
1存在的问题 ? ①问题一 映射器、适配器、处理器,视图解析器,一堆的信息需要配置。 ②问题二 看到new关键字,就可以使用spring优化,具体在文章第三节中有详细说明。...②处理器类 @Controller:这个注解即相当于将这个处理器类存放到了spring容器中。 @RequestMapping("/show"):在每个方法上使用这个注解就可以接受一个请求。...方法名我们可以自定义,有多个请求就可以创建多个对应的方法。 我大胆地猜测一下,该注解的底层实现也是使用的反射,当然目前就不做深入研究了。...其中:"/show"就对应着访问路径,当然在浏览器访问时要在路径后面加上.do。 二、不同风格的映射路径 一共有好几种,依次说明。...其中关于注解@PathVariable和其很类似,这个在rest风格映射路径中说明。
@Autowired可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参。...车险项目:HttpClientSetting类 @Profile:注解在方法类上在不同情况下选择实例化不同的Bean特定环境下生效!!!!!...一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略 @Column:通过@Column注解设置,包含的设置如下 name:数据库表字段名 unique:是否唯一...nullable:是否可以为空 Length:长度 inserttable:是否可以插入 updateable:是否可以更新 columnDefinition: 定义建表时创建此列的DDL...Spring Boot的核心功能 (1)独立运行的Spring项目 Spring Boot可以以jar包的形式进行独立的运行,使用:java -jar xx.jar 就可以成功的运行项目,或者在应用项目的主程序中运行
领取专属 10元无门槛券
手把手带您无忧上云