在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。
@RestController public class helloController { @RequestMapping("/hello") public String hello(){ System.out.println("Hello World"); return "Hello World"; } }
其实呢,是我们在浏览器发起请求,请求了我们的后端web服务器(也就是内置的Tomcat)。而我们在开发web程序时呢,定义了一个控制器类Controller,请求会被部署在Tomcat中的Controller接收,然后Controller再给浏览器一个响应,响应一个字符串 “Hello World”。 而在请求响应的过程中是遵循HTTP协议的。
但是呢,这里要告诉大家的时,其实在Tomcat这类Web服务器中,是不识别我们自己定义的Controller的。但是我们前面讲到过Tomcat是一个Servlet容器,是支持Serlvet规范的,所以呢,在tomcat中是可以识别 Servlet程序的。 那我们所编写的XxxController 是如何处理请求的,又与Servlet之间有什么联系呢?
其实呢,在SpringBoot进行web程序开发时,它内置了一个核心的Servlet程序 DispatcherServlet,称之为 核心控制器。 DispatcherServlet 负责接收页面发送的请求,然后根据执行的规则,将请求再转发给后面的请求处理器Controller,请求处理器处理完请求之后,最终再由DispatcherServlet给浏览器响应数据。
那将来浏览器发送请求,会携带请求数据,包括:请求行、请求头;请求到达tomcat之后,tomcat会负责解析这些请求数据,然后呢将解析后的请求数据会传递给Servlet程序的HttpServletRequest对象,那也就意味着 HttpServletRequest 对象就可以获取到请求数据。 而Tomcat,还给Servlet程序传递了一个参数 HttpServletResponse,通过这个对象,我们就可以给浏览器设置响应数据 。
那上述所描述的这种浏览器/服务器的架构模式呢,我们称之为:BS架构。
• BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。
那今天呢,我们的课程内容主要就围绕着:请求、响应进行。 今天课程内容,主要包含三个部分:
请求
响应
分层解耦
自己理解
我们之前写的程序tomcat是不识别的 也不运行
虽然tomcat是不识别我们所编写的controller程序,但是他实现jaavee的规范技术servlet 因为tomcat也称为servlet容器
而我们基于springboot开发的 web入门程序当中 springboot底层给我们提供了一个非常
核心的Servlet程序 DispatcherServlet,称之为 核心控制器(前端控制器) 。
DispatcherServlet就可以被tomcat识别的servlet程序
DispatcherServlet 负责接收页面发送的请求,然后根据执行的规则,将请求再转发给后面的请求处理器Controller,请求处理器处理完请求之后,最终再由DispatcherServlet给浏览器响应数据。
那我们如何在Servlet程序中获取请求数据
浏览器发送请求,会携带请求数据,包括:请求行、请求头;
请求到达tomcat之后,tomcat会负责解析这些请求数据,
然后呢将解析后的请求数据会传递给Servlet程序的HttpServletRequest对象,(将将解析后的请求数据封装到HttpServletRequest对象)
那也就意味着 HttpServletRequest 对象就可以获取到请求数据
然后HttpServletRequest在对请求进行处理 处理完毕之后 Tomcat服务器根据HTTP协议响应数据的格式给浏览器响应数据
那Tomcat怎么知道要浏览器响应哪些数据
在Servlet程序中 我们可以借助HttpServletResponse来设置响应数
Tomcat,还给Servlet程序传递了一个参数 HttpServletResponse,通过这个对象,我们就可以给浏览器设置响应数据 。
然后tomcat就会根据我们在HttpServletResponse对象所设置的响应信息来响应数据给浏览器
HttpServletRequest对象:请求对象 用来请求数据
HttpServletResponse对象:响应对象 设置响应数据
CS架构
BS架构 :通过浏览器网址就可以访问
CS架构:要单独安装客户端