概念:运行在服务器端的小程序
- Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则
- 将来我们自定义一个类,实现Servlet接口,复写方法
快速入门
- 创建项目
- 定义一个类,实现Servlet接口
- public class ServletDemo1 implements Servlet
- 实现接口的抽象方法
- 配置Servlet
<servlet> <servlet-name>demo1</servlet-name> <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class> </servlet> <servlet-mapping> <servlet-name>demo1</servlet-name> <url-pattern>/demo1</url-pattern> </servlet-mapping>
执行原理:
- 当服务器接收到客户端浏览器请求后,会解析请求URL路径,获取访问的Servlet的资源路径
- 查找web.xml文件,是否有对应的
标签体内容 - 如果有,则在找到对应的
全类名 - Tomcat会将字节码文件加载进内存,并且创建其对象
- 调用其方法
Servlet中的生命周期:
1 .被创建 执行init方法,只执行一次
- Servlet什么时候被创建
- 默认情况下,第一次被访问到时,Servlet被创建
- 可以配置执行Servlet的创建时机
- 在
标签下配置 - 第一次被访问时,创建
的值设置为负数
- 在服务器启动时,创建
的值设置为0或正数
- 第一次被访问时,创建
- 在
- Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
- 多个用户同时访问时,可能存在线程安全问题
- 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对其修改值
- 提供服务 执行service方法 执行多次
- 每次访问Servlet时,service方法都会被调用一次
- 被销毁 执行destroy方法,只执行一次
- Servlet被销毁时执行。服务器关闭时,Servlet被销毁
- 只有服务器正常关闭时,才会执行destroy方法
- destroy方法在执行时,一般用于释放资源
Servlet3.0
- 好处
- 支持注解配置,不需要web.xml了
- 步骤
1.创建JavaEE项目,选择Servlet3.0的版本以上,可以不创建web.xml
2.定义一个类,实现Servlet接口
3.复写方法
4.在类上使用@WebServlet注解,进行配置
* @WebServlet("资源路径") - Servlet的体系结构
Servlet--接口
|
GenericServlet--抽象类
|
HttpServlet--抽象类- GenericServlet 将servlet接口中其他方法做了默认空实现,只将service()方法作为抽象
- 将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可
- HttpServlet
- GenericServlet 将servlet接口中其他方法做了默认空实现,只将service()方法作为抽象
- Servlet相关配置
1.urlpartten:Servlet访问路径
1.一个Servlet可以定义多个访问路径:@WebServlet({"/d4","/dd4","/ddd4","/demo4"})
2.路径定义规则
1./xxx
2./xxx/xxx
3.*.do *是指通配符
HTTP
- 概念 Hyper Text Transfer Portocol 超文本传输协议
- 传输协议 定义了客户端和服务器端通信时,发送数据的格式
- 特点:
- 基于TCP/IP的高级协议
- 默认端口号:80
- 基于请求/响应模型:一次请求对应一次响应
- 无状态的:每次请求之间互相独立,不能交互数据
- 请求消息数据格式
- 请求行
-
请求方式 请求url 请求协议/版本
-
GET/login.html HTTP/1.1
-
请求方式
- HTTP协议中有7种请求方式 常用的有两种
- GET:
1.请求参数在请求行中,在url后
2.请求的url长度有限制的
3.不太安全 - POST
1.请求参数在请求体中
2.请求的url长度没有限制的
3.相对安全
- GET:
- HTTP协议中有7种请求方式 常用的有两种
-
- 请求头
- 请求头名称:请求头值
- 常见的请求头
- user-Agent 浏览器告诉服务器 我访问你使用的浏览器版本信息
- 可以在服务器端获取该头的信息 解决浏览器的兼容问题
- Referer http://localhost/login.html
- 告诉服务器 我(当前请求)从哪里来?
- 作用:
- 防盗链
- 统计工作
- 作用:
- 告诉服务器 我(当前请求)从哪里来?
- user-Agent 浏览器告诉服务器 我访问你使用的浏览器版本信息
- 请求空行
- 请求体
- 字符串格式:
GET/login.html HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
- 字符串格式:
- 请求行
- 响应消息数据格式