Servlet(server applet)
*概念:运行在服务端的小程序
*Servlet就是一个接口,定义了java类被浏览器访问到(tomcat识别)的规则
*将来自定义一个类,实现servlet接口,复写方法。
*快速入门:
1. 创建javaEE项目
2. 定义一个类,实现Servlet接口
3. 实现接口中的抽象方法
4. 配置servlet
在web.xml中配置
<!--配置Servlet-->
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>cn.zjh.web.servlet.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
*Servlet生命周期:(5个方法)
1. 被创建 init方法 执行一次(说明Servlet在内存中只存在一个对象)
多个用户同时访问时可能存在线程安全问题
解决:尽量不要在Servlet定义成员变量,即使定义了,也不要对其修改值
*Servlet什么时候被创建
*默认情况下第一次被访问时,被创建
*可以配置执行Servlet的创建时机
在web.xml中配置
1.第一次被访问时创建
*<load-on-startup>值为负数,默认-1
2.在服务器启动时创建
*<load-on-startup>值为0或正数
2. 提供服务 service方法 执行多次
3. 被销毁 destroy方法销毁之前执行 (只有服务器正常关闭时)执行一次
4. Servlet3.0:
好处:
*支持注解配置。可以不用web.xml,只需要在类上使用@webServlet注解,进行配置
*@webServlet("资源路径")
5. Servlet体系结构
Servlet----接口
|
GenericServlet----抽象类
|
HttpServlet----抽象类
*GenericServlet将Servlet接口中的其他方法做了默认空实现,只将service()方法作为抽象
*将来定义service类时,可以继承GenericServlet,实现service方法
*HttpServlet:对http协议的一种封装
6. Servlet相关配置
1. Urlpartten:Servlet访问路径
*一个Servlet可以定义多个访问路径:如 @WebServlet({"/d6","/dd6","/ddd6"})
*路径定义规则
1. /xxx
2. /xxx/xxx
3. *.do
HTTP:
*概念:Hyper Text Transfer Protocol 超文本传输协议
*传输协议:定义了 客户端和服务端通信时,发送数据的格式
*特点:
1. 基于TCP/IP的高级协议
2. 默认端口号是80
3. 基于请求/响应模型的:一次请求对应一次响应
4. 无状态的:每次请求之间相互独立,不能交互数据
*请求消息数据格式
1. 请求行
请求方式 请求url 请求协议/版本
请求方式
HTTP协议有7种请求方式,常用的两种
*GET:请求方式在请求行中,在url后,请求的url长度有限,不太安全
*POST:请求方式在请求体中,url长度没有限制,相对安全
2. 请求头
请求头名称:请求头值
常见的请求头:
1. Host:localhost
2. User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
*可以在服务器端获取该头的信息,解决浏览器的兼容问题
3. Referer :告诉服务器我从哪里来?
*防盗链
*统计工作
3. 请求空行 空行,用于分割POST的请求头和请求体的
4. 请求体(正文)
*封装POST消息的请求参数的