上一篇文章我们已经学会了如何通过idea快速建立一个spring boot项目,还介绍了spring boot项目的结构,介绍了项目配置文件pom.xml的组成部分,并且撰写了我们spring boot的第一个接口。接下来将会将会介绍使用spring boot开发web应用的相关内容,其主要包括使用spring-boot-starter-web组件来实现web应用开发、url地址映射、参数传递、数据校验规、统一数据返回和统一异常处理等等。
web基础spring boot将传统web开发的mvc、json、validation、tomcat等框架整合,提供了spring-boot-starter-web组件,简化了web应用配置和开发的难度,将开发者从繁杂的配置项中拯救出来,专注于业务逻辑的开发。
正如上一篇文章所提到的,我们只需要在pom.xml文件中的dependencies中添加以下代码就可以引入spring-boot-starter-web。其中的webmvc是web开发的基础框架,json是json数据解析组建,tomcat为自带的容器依赖。
org.springframework.boot spring-boot-starter-web@controller和@restcontrollerspring boot提供了@controller和@restcontroller两种注解来标识此类负责接收和处理http请求,如果请求的是页面和数据,使用@controller注解即可,如何只请求数据,则可以使用哦@restcontroller注解。
@controller@controller主要主要用于页面和数据的返回,如果在@controller类中只返回数据到前台页面,则需要使用@responsebody注解,否则会报错,其代码如下:
@controllerpublic class hellocontroller { @requestmapping(/hello) @responsebody public string hello() { return hello @spring boot!!!; }}@restcontroller@restcontroller注解用于实现数据请求的处理,默认情况下@restcontroller注解会将返回的对象数据转换为json格式,其代码如下:
@restcontroller@requestmapping(/user)public class usercontroller { @requestmapping(/getuser) @responsebody public user getuser() { user u = new user(); u.setname(qstack); u.setage(20); u.setpassword(123456); return u; }}在上述的例子中,定义/user/getuser接口返回json格式的user数据,近几年前端框架越来越强大,前后端分离的restful架构成为主流,spring boot对restful也做了非常完善的支持,使用也特别简单,使用@restcontroller注解自动返回json格式的数据,与此同时可以使用@getmapping和@postmapping等注解实现映射restful接口。
@responsebody@responsebody注解主要用于定义数据的返回格式,作用在方法上,默认使用json序列化成json字符串后返回给客户端,如果是字符串则直接返回。在@controller中有时需要返回数据体,则需要在方法上使用@responsebody。
@requestmapping与url映射注解@requestmapping注解主要负责url的路由映射,它可以添加在controller类或具体的方法上,如果添加在controller类上,则这个controller中所有的路由映射都会加上此映射规则,如果添加在方法上则只对当前方法生效。@requestmapping注解包含很多属性参数来定义http,具体属性参数如下所示,与此相应的spring boot支持url路径匹配、http method匹配、params和header匹配等url映射。
value:请求url的路径,支持url模版、正则表达式method:http请求的方法consumes:允许的媒体类型,如consumes=“application/json”为http的content-typeproduces:相应的媒体类型,如produces=“application/json”为http的accept字段params:请求参数headers:请求头参数url路径匹配精确匹配@requestmapping的value属性用于匹配url映射,value支持简单表达式。示例代码如下,其中@pathvariable注解作用在方法参数中,用于表示参数的值来自于url路径。
@requestmapping(/getuserbyid/{id})public string getuserbyid(@pathvariable(id) long id) { return getuserbyid + id;}如果url中的参数名称与方法中的参数名一致,则可以简化为如下
@requestmapping(/getuserbyid/{id})public string getuserbyid(@pathvariable long id) { return getuserbyid + id;}通配符匹配@requsetmapping支持使用通配符匹配url,用于统一映射某些url规则类似的请求,示例的代码如下
@requestmapping(/getjson/*.json)public string getjson() { return get json data;}在上例中,无论请求/getjson/a.json还是请求/getjson/b.json都会匹配到getjson方法。
method匹配@requestmapping注解提供了method参数指定请求的mathod类型,包括requestmethod.get 、requestmethod.post、requestmethod.delete、requestmethod.put等值,分别对应http请求的method,以下是以get方法为例说明。
@requestmapping(value = /getdata, method = requestmethod.get)public string getdata() { return requestmethod get;}consumes和produces匹配@requestmapping注解提供了consumes和produces参数用于验证http请求的内容类型和返回类型。
consumes表示请求的http头的content-type媒体类型与consumes的值匹配才可以调用方法。produces表示http请求中accept字段匹配成功才可以调用。下面的例子演示了consumes参数的用法。@requestmapping(value = /content, method = requestmethod.post, consumes = application/json)public string consumes(@requestbody map param){ return consumes post content-type=application/json;}params和header匹配@requestmapping注解还提供header参数和params参数映射url请求的能力,spring boot可以从请求参数或http头中提取参数,通过判断参数如params=“action=save”是否通过来实现映射,代码如下
@requestmapping(value = /testparam, params = action=save)public string testparam(@requestbody map param) { return param test;}@requestmapping(value = /testhead, headers = {host=localhost:8080})public string testhead() { return header test;}
谷歌I/O大会十大亮点:绝对不止Android O、Android 8还有VR
altiumdesigner多少钱一套
SOURIAU推出针对浅水域浸没式设备设计的线束和连接器
使用NFC系统无线供电和访问1-Wire网络
小涂智媒,开启物联网新时代
Spring Boot Web相关的基础知识
锂电池进出口数据下降12%
FPC胀缩的重要控制措施
芯塔电子发布自主研发1700V/5Ω SiC MOSFET产品
锐龙3000处理器成本竟不到300块人民币
从应用痛点倒逼研发 AGV机器人以传感器+驱动器的形式双拳出击
以屏换板 宏碁全新Ethos系列多媒体本欣赏
如何用C++创建形状
S6AL211智能照明的四路LED驱动器解决方案
gicv2与gicv3的区别
印度首富身价超股神巴菲特 与Facebook交易后股价大涨已超越马云
用于负高压轨的隔离式低端电流监控器
新iPhone销售不及预期 预约用户较往年骤减
小马智行与速腾聚创合作推自动驾驶和智慧交通规模化应用
基于TL062的低音炮低通滤波器电路