HTTP协议
含义:是TCP、IP协议之上的应用层协议
作用:规定浏览器和服务器数据之间的交互格式
注意:该协议的端口为80,Tomcat是8080
http的特点
1.无状态,无记忆
2.“1.0”版本需要多次请求和响应,1.1一次连接后可以处理多个请求
3.基于请求和响应
4.简单快速,灵活
请求:浏览器访问服务器的过程
响应:服务器响应数据给浏览器
浏览器发送请求(request)的结构极其内容
请求行:请求的方式,地址,协议,版本
请求头:有键值对组成
请求体:浏览器向服务其发送想要什么数据的请求,只有post有请求体,get没有请求体,可以在html文件中设置method=“post”进行规定
请求方发post和get的区别
post | get | |
---|---|---|
地址栏 | 发送的数据不在地址栏显示 | 发送的数据会在地址栏显示 |
大小 | 没有限制 | 不能大于2k |
安全性 | 安全 | 不安全, |
缓存 | 没有使用缓存 | 使用了缓存 |
服务器响应(response)数据的结构和内容
响应行:响应的方式,地址,协议,版本
响应头:有键值对组成,服务器返回给浏览器的
响应体:服务器发送数量给浏览器
常见的状态码及其含义
状态码 | 含义 |
---|---|
200 | 服务器正常响应 |
302 | 页面进行跳转 |
304 | 服务器告诉浏览器使用本地缓存 |
404 | 请求的资源找不到 |
405 | servlet执行doget和dopost方法 |
500 | 通常是java代码出问题 |
servlet(处理请求和响应)
含义:是一种动态的web资源,用于连接服务器
总结:servlet运行在web服务器,由java编写的程序,用于连接后端
servlet的开发方式(资源名称使用/开头)
先要导入javax.api.jar包
将一个类实现Servlet接口,并重写里面的方法
方法1.写web.xml文件
<servlet>
<!--名字一般使用实现类的名字命名-->
<servlet-name>HellowServlet</servlet-name>
<!--tomcat根据servlet的全限定名创建对象-->
<servlet-class>cn.wolfcode._01_hellow.HellowServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HellowServlet</servlet-name>
<!--
给外界提供一个访问当前servlet的资源名称
注意:必须使用/开头
-->
<url-pattern>/hellow</url-pattern>
</servlet-mapping>
使用浏览器对别名进行访问:
方式2:在类名上方添加WebServlet注解,里面要加"/"
注解中的name可以不用,默认使用的类名
Servlet的生命周期[单例,使用的缓存池]
**Servlet创建对象:**tomcat第一次访问时创建,只有一次
**初始化操作(init)😗*只初始化一次
**运行操作(service)😗*可以多次处理请求和响应
**销毁操作(destory)😗*正常关闭服务器时销毁Servlet对象
servelet的请求流程(接口)
**1.请求:**http://localhost:80/life
**2.localhost:**主机
**3.80端口,**tomcat
4.上下文路径:/,表示当前项目名称是空,可以省略,不存在404
5.资源路径:/life,确定唯一的web资源(静态的,动态的),不存在404
6.启动服务器:加载相关的配置文件(注解/xml),资源路径与类的全限定名一致
7.检查当前Sservlet是否创建:使用的缓存
8.根据资源名称找到对应类的全限定名
9.使用反射创建对象
10.创建ServletConfig对象,调用init方法,完成初始化操作
11.创建ServletRequest和ServletRespons对象,调用service方法队请求的客户端做出响应
servelet的请求流程(继承)
1.找到AServlet对象
2.Tomcat调用service中的(ServletRequest servletRequest, ServletResponse servletResponse)
3.AServlet中没有该方法,找父类(HTTPServlet)中的service并执行
4.调用service(HttpServletRequest req,HttpServletReponse resq)方法
5.如果AServlet中没有重写该方法,则执行父类中的方法,此时需要AServlet重写doGet和doPost方法,否则报错405
6.如果AServlet重写了该方法,则执行AServlet中的service方法
Servlet 的继承体系
HttpServlet 继承 GenericServlet
GenericServlet实现Servlet ,ServletConfig
**GenericServlet作用:**用于处理各种协议发出的请求和响应
HttpServlet的作用: 专门用于处理HTTP协议发送的请求和响应
ServletConfig 对象
作用:用于解决Servlet初始化时硬编码问题
使用**servletConfig.getInitParameter(“对象”)**进行解决
有两种方法获取ServletConfig对象
方法1.
方法2.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mEX5SM4E-1684894010722)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230411201242369.png)]
loadOnStartup 属性(取值越小越先加载:1-10)
作用:在启动web服务器的时候就创建对象,减少第一个用户访问时的等待时间
方式1:在web-xml中进行配置,下面1
面进行添加loadOnStartup = 1,里面的注解名需要添加value
细节
1.一个 中写多个
2.一个 对应多个
3.通配符映射"*"
格式 | 说明 |
---|---|
/* ,/目录名/* | 匹配该目录下所有的地址 |
*.扩展名 | 匹配某个扩展名结尾的访问地址 |
注意:中不能叫default和jsp
格式 | 说明 |
---|---|
/* ,/目录名/* | 匹配该目录下所有的地址 |
*.扩展名 | 匹配某个扩展名结尾的访问地址 |