SpringMVC示例|学习笔记

简介: 快速学习SpringMVC示例

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术SpringMVC示例学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15914


SpringMVC示例

 

内容介绍

一、SpringMVC的注解使用方式

二、运行流程

三、三种方法


一、SPringMVC的注解使用方式

1.电子商城中商品可选多个规格组合

首先看一下 SpringMVC 的注解是怎样使用的,这个例子是电子商城中间商品和商品规格的例子,在电子商城中间一个商品是有多个规格的,这种规格是可以组合式来选的

2.商品举例

比如红米的4x手机有颜色,有内存,有寄生存储这三个选项可以选。所以用户当选了三个选项以后就形成了红米4x手机的一个具体规格,这个手机的价格、重量等都和规格有密切的关系的,所以我们在 SpringMVC 上居于这样的一个商品和商品规格实现了一些简单的新增商品查询商品的功能,通过这些功能可以看到 SpringMVC的标签是怎样来使用的。

image.png


二、运行流程

1.如何标识controller

这个例子是在 JAVA1proforma 的3SpringMVC 侧幕底下,侧幕下有一个restherdeom,这个例子我们先不去看它的配置和总体的内容,我们先看SpringMVC 的标签是怎么用来去标识一个 controller。这个例子很简单,我们只做了一个 controller,它在 resthdemo 这个包底下 controller 的包里面,点开这个包里面可以看到它里面有一个 GoodController,点开这个类里有很多标签。先讲在SpringMVC 中的 autowired 以及五个 mapping。

在类前面我们可以看到 restcontroller,这个标签告诉 SpringMVC 容器这个类是一个controller,而且还是一个 restcontroller,意味着顺过来的参数是可以被以 json的方式送过来,而它的返回值可以用json的方式回去,那它的这个每一个方法映射到一个 URL 的 htvp 的操作上面,所以它对于整个类定义了一个根的路径,叫做requestmapping因为在这个类中间既有 get,put,post 所以说他在目的上没有

去指定请求类型,用了@requestmapping 标签

2.goods的用法

value 定义的 goods 说明这个类底下的所有的方法,如果自己不指定绝对路径的话会从 goods 开始往后接就是它的相对路径,其后面有一个 produce 内容是“application/json;charset=UFT-8”这个是在描述说这个方法返回的 response它的 contest 的内容类型的类型是什么,因为现在全是 restful 风格的 api,所以它返回的类型全是 json 的格式,因为 json 是有中文的所以我们需要特被设定它的

charset是utf-8否则中文会出现乱码这是 produce 的作用 

 

三、三种方法

1.post方法

接下来我们看底下的每一个方法首先看到第一个方法 getmapping(“{id}”),这个方法前面是有一个 getmapping,它表示这个方法是一个get的请求上。写的{id}表示它在类的路径的后面加上了一级id,id用花括号表示的说明它是一个变量,所以在它的方法的参数里看到了一个标签 pathvariable,它的作用是从路径上拿到变量,把值赋到参数的 id 里去,比如 goods/5这样的一个资源,这是定了一到在系统中间的id为5的一个商品,其中的5用花括号表示的id会被

映射到 integer id 上面去。

这是第一个方法,第二个方法我们看到的也是 getmapping 映射的是 goods的search。第三个方法是新建一个新的商品,它用的是 post mapping,这里没有post mapping/goods 会使得 create goods的方法被映射到goods上,因为它的新建的商品的内容是在 requestbody上传过来的,所以看它的参数里有一个标签叫做@requestBody,说明后面这个是一个对象,称之为 vo 对象,它是用来接收前端送来的数据的,前端送来的是一个商品对象的信息,这个 vo 的对象在 controller底下一个子包,点开看 vo 的对象,定义了从前端发来的新建商品里头有什么样的属性我们可以看到里头有商品名称、商品描述、商品单位、可取规格、颜色、运行内存、寄生存储还有多少的规格可以选。

根据可选的规格最后组合出来到底有多少的商品,不同规格的具体的产品每个规格的产品用 producevo 去表示,producevo 里描述每一个产品有一个序号,这个序号来自可取规格的组合按照一定规格组成的序号,第二个是规格的描述,在每个规格的促销价和零售价是不一样的还有重量不一样,所以写了一个 producevo 这样一个方法,所以以这个用 prepost 的方法来说前端时会把一个商品的可选规格以及有可选规格所产生的所有可能的规格的组合把他建成了一个这样的对象 goodsvo 和 producevo 的一对多关联的一个对象,然后把它传到方法里头@RequestBody GoodVo goodvo 这个方法里头,那我们的传过来的方式是通过 RequestBody,所以要在方法先加一个 RequestBody,我们能看到上面还有一个注解,叫做ResponseUtill,前面说过 post 的方法如果处理成的话它返回的类型不是200,是201,可以看前面的 get 方法中间不用特别去标出返回的 http 的返回码是什么,不标默认成功都会返回200,对于 post 方法因为 http 的返还码要返回201,所以专门写了一个注解 ResponseUtill,使得这个方法在执行完后返回的 http 的返回码是201,也就是 HttpStatus.CREATED。这是 post 的方法。

@PostMapping(“")

aResponseStatus(HttpStatus.CREATED)

public Object createGood(@Validated @RequestBody GoodsVogoodsVo){

Goods new_goods=goodsService.createGoods(goodsVo); return ResponseUtil.ok(new_goods);

}

@ApiOperation(value="修改商品",

produces="application/json")

@ApiImplicitParams({

})

@ApiResponses({

@ApiResponse(code=8,message =“成功"),})

2.Put方法

再看一个 Put 方法,它是用来修改对象的,从路径里头用 putmapping 再把 id 放在里头把路径里头的值放在第一个参数(@pathvarable integer id)里去,可以看到@pathvarable没有去写它的值,这时候认为参数的名称和 post 里头变量的名称是一致的。同样put要修改对象的属性@RequestBody 里的所以同样用一个

goodsvo 来接前端送过来的需要修改的对象的属性,这是 put 的方法

@PutMapping("{id}")

public Object modiGood(@PathVariable Integer idRequestBody GoodsVo goodsVo){

goodsService.modifyGoods(id,goodsVo);

return ResponseUtil.ok();

}

@ApiOperation(value="删除商品",

produces="application/ison")

@ApiImplicitParams({

@ApiImplicitParam(paramType ="path",dataType ="Integer",name = "id",value ="商品对象id",required = true)

})

@ApiResponses({

})

3.delete方法

Delete的方法,它是用来删除一个商品的,同样id是写在路径里的我们把它映射到参数里去@pathvarable 这样一个变量,实现一个 delete 的请求怎么映射到 delete的 goods 里去。

这是在 springMVC 中的几个主要的标签,实现了我们从对于一个 url 的请求通过hardlemapping

来看这个标签把它对应到 controller 的方法上。

@DeleteMapping("{id}")

public Object delGoods(@PathVariable("id") Integer id) {

goodsService.delGoods(id);

return ResponseUti.ok();

相关文章
|
XML JSON Java
SpringBoot 实战:在 RequestBody 中优雅的使用枚举参数
本文先上实战,说一下如何实现。在 优雅的使用枚举参数 代码的基础上,我们继续实现。如果想要获取源码,可以关注公号「看山的小屋」,回复 spring 即可。
1202 0
SpringBoot 实战:在 RequestBody 中优雅的使用枚举参数
|
2月前
|
JavaScript 数据安全/隐私保护
SpringMVC入门到实战------4、SpringMVC获取请求参数(六种方式详细说明)
这篇文章介绍了在Vue中如何使用过滤器来隐藏手机号和邮箱等字符串的中间部分内容,以提高隐私保护。文章展示了实现效果,并提供了实现过程的代码示例,包括HTML部分的绑定、data部分的数据定义和script部分的过滤器定义。文章还解释了过滤器的概念、语法和使用方式,并提供了一个外部链接供读者获取更加详细的过滤器知识。
SpringMVC入门到实战------4、SpringMVC获取请求参数(六种方式详细说明)
|
11月前
|
XML 存储 JSON
SpringMVC之综合示例讲解(用示例来带你学习SpringMVC)
SpringMVC之综合示例讲解(用示例来带你学习SpringMVC)
69 0
【SpringMVC 从 0 开始】SpringMVC RESTFul 实战案例 - 实现列表功能
【SpringMVC 从 0 开始】SpringMVC RESTFul 实战案例 - 实现列表功能
【SpringMVC 从 0 开始】SpringMVC RESTFul 实战案例 - 实现列表功能
|
JavaScript 前端开发 网络架构
【SpringMVC 从 0 开始】SpringMVC RESTFul 实战案例 - 实现删除功能
【SpringMVC 从 0 开始】SpringMVC RESTFul 实战案例 - 实现删除功能
【SpringMVC 从 0 开始】SpringMVC RESTFul 实战案例 - 实现删除功能
|
JSON 前端开发 Java
SpringBoot2.x系列教程22--整合SpringMVC之处理请求参数的绑定(四)ConfigurableWebBindingInitializer
前言 在上一章节中,壹哥 给大家讲解了WebBindingInitializer的作用,并实现了全局的参数类型转换。接下来在本章节中,我会继续带领大家学习一个新的API,那就是ConfigurableWebBindingInitializer,这个的用法要比之前的WebDataBinder更简化一下。所以我们可以利用ConfigurableWebBindingInitializer来替换WebDataBinder实现相同的功能,毕竟有简单的谁也不想用太复杂的。 一. ConfigurableWebBindingInitializer简介 1. 概述 在Spring MVC中可以使用WebBin
240 0
|
前端开发 Java 数据库连接
SpringMVC之简单的增删改查示例(SSM整合)
SpringMVC之简单的增删改查示例(SSM整合)
SpringMVC之简单的增删改查示例(SSM整合)
|
XML 设计模式 开发框架
两个入门案例带你入门SpringMVC 注解版&&XML版
概述 Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet。 由于 Spring MVC 本身就是 Spring 框架的一部分,所有与 Spring 框架是无缝集成。是当今业界最主流的 Web 开发框架。
112 0
两个入门案例带你入门SpringMVC 注解版&&XML版