javaWeb中的请求与响应究竟是怎么一回事

javaWeb中的请求与响应究竟是怎么一回事

本篇文章通过问题引入,通过回答讲解,互勉!
**

  1. 首先请求是怎么到达的后端?

**
前后端交互是通过HTTP协议,当前端需要向后端传输数据,会构造HTTP请求,浏览器在解析之后缺乏数据会向后端服务器发送请求,我们的Web服务器Tomcat会对接收到的数据进行解析,由业务层service处理调用Dao与数据库交互,再由Controller层返回前端。

  1. Tomcat怎么接收的数据呢?又是怎么返回的呢?

我们在代码中构建controller控制层进行接收请求,返回响应,其实tomcat中是无法识别controller的,那么是怎么就到了controller层呢?

要知道我们的Tomcat是一个servlet容器,因此它是可以识别servlet程序的,而我们再用springboot进行开发web时通常是由springmvc框架完成,那么springmvc又是怎么就能接收请求呢,

  1. 为什么他就能接管web层了呢?

他之所以能接收请求或者称为web层框架,皆因他的核心程序depatchsevlet,也称之为核心控制器,它的主要职责就是接收页面发来的请求,找到合适的controller处理,再返回给浏览器响应。

depatchsevlet的工作原理是接收到页面发来的请求之后会根据请求的路径和http方法遍历mvc上下文中的xxxcontroller控制器找到匹配的controller方法,再由controller方法调用业务层执行逻辑返回封装后的结果交给depatchersevlet,再由其根据响应进行解析视图,渲染等之后返回前端(浏览器)。

现在想必大家已经明白了这一套逻辑,前端请求 由 depatchersevlet 转到 controller 进行处理 返回响应。下面我们讨论下在springboot开发中,这一套逻辑是基于哪些具体的代码实现的。(此处只讨论相关注解)

当我们的web服务器启动后会有主机和端口号指定到我们的这一程序,而每一个程序都有很多的方法(增删改查),因此depatchersevlet会根据不同的请求方式(get,post)和路径指定不同的功能,这一步具体有我们的@requestmapping(“路径”)实现,这样前端通过发起主机+端口+路径这一请求就能找到执行到我们这一方法,而我们的这一方法通常会通过调用业务层执行逻辑再由业务层调用持久层的某个方法(数据访问层)通过sql语句访问(操作)数据库,返回结果给controller层,结果会通过@responcebody进行封装成http响应返回给depatchersevlet。

下面是一些具体代码实现中的常用注解

我们需要为controller层打上@restcontroller注解=@responcebody+@controller,具体的方法也就是@requestmapping下的方法,当传来的参数与形参列表名不一致时可通过 @requestparam(“所传的参数名”),当所传参数较为复杂时会定义实体类传入,或者集合和数组等,返回值太复杂会将返回值封装为对象,比如统一的返回格式的对象,Result类。当请求参数为json格式数据,在形参中要传入@requestbody 注解将json数据映射为对象,当所传路径为"/path/{d}"形参中要使用@pathvariable注解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值