servlet技术
1.什么是servlet
-
Servlet是javaEE规范之一。规范就是接口
-
javaweb三大组件:Servlet程序、Filter过滤器、Listener监听器。
-
Servlet是运行在服务器上的一个java小程序,
-
作用:接受客户端请求,响应数据给客户端
2.手动实现Servlet程序
- 编写一个类实现servlet接口
- 实现service方法,处理请求,响应数据
- 到web.xml配置和
3.servlet访问原理
4.Servlet的生命周期
- 执行Servlet构造器方法
- 执行init初始化方法
- 执行service方法
- 执行destroy销毁方法
第一二步是第一次访问,第三步每次访问都会调用,第四步在web工程停止的时候调用。
5.GET POST,请求的分发处理
if("GET".equals(method)){
doget();
}else if("POST".equals(method)){
dopost();
}
}
public void doget(){
System.out.println("getgetget");
}
public void dopost(){
System.out.println("postpost");
}
6. 通过继承HttpServlet实现Servlet程序
一般在实际项目开发中,用这个方法
- 编写一个类去继承HttpServlet类
- 根据业务需要重写doGet或者doPost方法
- 到web.xml中的配置Servlet程序的访问地址
7.Servlet类的继承体系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lKSw2hTU-1622793551733)(C:\Users\11462\AppData\Roaming\Typora\typora-user-images\image-20210512200710002.png)]
8.ServletConfig类使用介绍
init(ServletConfig servletConfig) ,ServletConfig一般是在init中。
- servletConfig.getServletName(),获取程序别名
- 获取初始化参数
首先需要在xml做好初始化参数的配置,然后调用servletConfig.getInitParameter(“parm-name”)
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.servlet.HelloServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/test</param-value>
</init-param>
</servlet>
System.out.println("初始化参数username:"+servletConfig.getInitParameter("username"));
System.out.println("url:"+servletConfig.getInitParameter("url"));
-
获取servletcontext对象,servletConfig.getServletContext()
输出信息:org.apache.catalina.core.ApplicationContextFacade@7453b2eb
- ServletConfig是Servlet程序的配置信息类
servlet程序和servletconfig对象都是由Tomcat负责创建,我们负责使用。
servlet程序默认是第一次访问的时候创建,servletconfig是meigeservlet程序创建是,就创建一个对应的servletconfig,传给init方法。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uga7cy3R-1622793551734)(C:\Users\11462\AppData\Roaming\Typora\typora-user-images\image-20210512232340036.png)]
9.ServletContext:接口
- ServletContext是一个接口,它表示Servlet上下文对象
- 一个web工程,只有一个ServletContext单例对象实例。
- servletcontext对象是一个域对象
- sevletcontext是在web工程部署启动的时候创建,在web工程停止的时候销毁
域对象,是可以像Map一样存取数据的对象,域治可以存取数据的操作范围,整个web工程
存数据 取数据 删除数据
Map put() get() remove()
域对象 setAttribute() getAttribute() removeAttribute()
ServletContext类的四个作用
- 获取web.xml配置的上下文参数
- 获取当前工程路径
- 获取绝对路径
- 像map一样存取数据
4.Http协议
a)什么是协议
协议是指双方或多方相互约定好,共同遵守的规则。
http协议是指,客户端和服务器之间通信时,发送的数据,需要遵守的规则。
HTTP协议中的数据叫做报文
b)请求的HTTP协议格式
请求:客户端给服务器发送数据
响应:服务器给客户端回传数据
请求又分为GET请求,和POST请求
i.get请求
-
请求行
- 请求的方式 get
- 请求的资源路径【+?+请求参数】
- 请求的协议的版本号 http、1.1
-
请求头
- key:value 组成 不同的键值对,表示不同的含义。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5iHU8iRQ-1622793551735)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210514153417226.png)]
ii.POST请求
-
请求行
- 请求的方式 POST
- 请求的资源路径【+?+请求参数】
- 请求的协议的版本号 http、1.1
-
请求头
- key:value 组成 不同的键值对,表示不同的含义。
空行
-
请求体==>>发送给服务器的数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6hntpWJP-1622793551736)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210514154908486.png)]
iii.常用请求头的说明
Accept: 表示客户端可以接受的数据类型
Accept-Langue:表示客户端可以接收的语言类型
User-Agent: 表示客户端浏览器的信息
Host: 表示请求时的服务器ip和端口号
iv.哪些是get请求,哪些是post请求
GET:
- method = get
- a标签
- link标签引入css
- Script标签引入js文件
- img标签引入图片
- iframe引入html页面
- 在浏览器地址栏中输入地址后敲回车
POST:
- form 标签 method=post
响应的HTTP协议格式
-
响应行
- 响应的协议和版本号
- 响应状态码
- 响应状态描述符
-
响应头
响应头表示服务器的信息
-
响应体,回传给客户端的数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yI6AqEjp-1622793551737)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210514190718049.png)]
d)常用的响应码说明
200 表示请求成功
302 表示请求重定向
404 服务器已经收到了,但是请求地址不存在
500 服务器已经收到请求,但是服务器内部代码错误
e)MIME类型说明
MIME是HTTP协议中数据类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X4BcwlTv-1622793551738)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210514192536437.png)]