一、B/S 架构:Browser/Server,浏览器/服务器 架构模式
BS架构的特点:客户端只需要浏览器。应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可。好处是易于维护升级:服务器端升级后,客户端无需任何部署就可以使用到新的版本。
BS架构的组成:
静态资源:HTML、CSS、JavaScript、图片等。负责页面展现,资源是一成不变的。
动态资源:Servlet、JSP 等。负责逻辑处理,资源是变化的。
数据库:负责存储数据
HTTP协议:定义通信规则
Web服务器:负责解析 HTTP 协议,解析请求数据,并发送响应数据
二、HTTP-请求/响应数据格式
请求数据分为3部分:
请求行:请求数据的第一行。其中GET、POST表示请求方式,/表示请求资源路径,HTTP/1.1表示协议版本(POST /login HTTP/1.1)。
请求头:第二行开始,格式为key:value形式(Host: ……Chrome/91.0.4472.106)。
请求体: POST请求的最后一部分,存放请求参数(username=……=123456)。
其中,请求体为post请求方式独有,GET请求和 POST请求区别:
一、GET的请求参数在请求行中以url后?……的形势请求,没有请求体。POST请求请求参数在POST独有的请求体中。
二、GET的请求参数大小有限制,POST没有。
常见的HTTP请求头:
响应数据分为3部分:
响应行(状态行):响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码,OK表示状态码描述(HTTP/1.1 200 OK)。
响应头:第二行开始,格式为key:value形式(Server: ……chunked…)。
响应体: 最后一部分。存放响应数据(<html>……</html>)。
常见的响应状态码:
三、Servlet
Servlet 快速入门:
创建 web项目,导入 Servlet依赖坐标
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
定义一个类,实现 Servlet接口,在类上使用@WebServlet 注解,配置该 Servlet的访问路径,并重写接口中所有方法
@WebServlet("/demo1")
public class Demo1Servlet implements Servlet {
public void service(){}
}
启动 Tomcat,浏览器输入URL 访问该Servlet
http://localhost:8080/模块访问地址/demo1
其中,service()方法是由web服务器调用的,当启动服务器并被访问时即调用service方法,如果继承的是Servlet的子类HTTPServlet,则还需要同时重写doGet和doPost方法,缺一则出现异常。
@WebServlet(urlPatterns = "/demo", loadOnStartup = 1),WebServlet中重要的属性有urlPatterns和loadOnStartup,前者可以是多个不同的url来指向该服务器,后者则规定在服务器启动时创建Servlet对象的优先级,负整数为第一次访问时创建,0及以上正整数则越小优先级越高。
Servlet的生命周期中,init()方法为Servlet初始化时运行一次,且接下来别的浏览器再调用也不再执行,同样的有destroy()方法,是在服务器关闭时才执行一次。
Servlet使用xml配置