Servlet
Servlet基本介绍
Servlet是javaEE规范之一,规范就是接口
javaWeb三大组件:Servlet程序、Filter过滤器、Listener监听器
Servlet是运行在服务器的java程序,可以接收客户端发来的请求,并相应数据给客户端。
Servlet.service()
Servlet接口中service方法是负责处理请求和响应的
<servlet>
<!--servlet-name:程序别名
servlet-class:程序的全类名-->
<servlet-name>hello</servlet-name>
<servlet-class>com.example.Servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<!--servlet-name:程序别名
url-pattern:配置访问地址
http://ip:port/工程路径/访问地址-->
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
配置web.xml文件
Servlet生命周期
Servlet程序生命周期:1. servlet构造器、2. init方法、3. service方法、4. destroy方法
1、2步 第一次访问的时候调用
3步 访问的时候调用
4步 web工程结束的时候调用
请求分发
请求分发:通过HttpServletRequest.getMethod()获取方法判断
分发的请求doxx()负责抛出异常
Servlet继承体系
Interface Servlet<—Class GenericServlet<—Class HttpServlet<—自定义Servlet程序
Interface Servlet:只是负责定义Servlet程序访问规范
Class GenericServlet:实现了Servlet接口,但是基本都是空实现。持有一个ServletConfig的引用,对ServletConfig的使用做了一些方法
Class HttpServlet:抽取实现了service()方法,并实现了分发处理(强转ServletRequest,ServletResponse为HttpServletRequest,HttpServletResponse,通过get方法判断分发处理(其方法全部在抛出错误。)
自定义Servlet: 重写相关方法使其支持相关请求
ServletConfig
是Servlet的配置信息类
Servlet程序和ServletConfig对象都是由Tomcat负责创建
Servlet程序默认被访问的时候创建,ServletConfig是每个Servlet程序创建时创建一个与之对应的ServletConfig对象。
一个ServletConfig对象只属于一个Servlet。
三大作用:
-
可以获取servlet程序的别名servlet-name的值
- 一般是类名
-
获取初始化参数init-param
-
需要在对应得web.xml文件中得对应得servlet中添加如下
-
可以配多个键值对
<init-param> <param-name>key</param-name> <param-value>value</param-value> </init-param>
-
-
获取ServletContext对象
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("获取servletName: " + servletConfig.getServletName());
System.out.println("获取init-parame: " + servletConfig.getInitParameter("name"));
System.out.println("获取servlerContext对象: "+servletConfig.getServletContext());
}
ServletContext
是一个接口,表示Servlet上下文对象
一个web工程,只有一个ServletContext对象实例
ServletContext对象是一个域对象
域对象
是可以像Map一样存取数据的对象,这里的域是指存取数据操作的范围
Map: put() get() remove()
域对象: setAttribute() getAttribute() removeAttribute()
功能作用
- 获取web.xml中配置的上下文参数context-param
- 获取当前工程路径,/工程路径
- 获取工程部署后服务器硬盘上的绝对路径。“/”→工程项目的web文件夹位置。
- 像Map一样存取数据
请求
GET请求
请求头
- 方式 GET
- 请求的资源路径 /a.html
- 请求的协议和版本号 HTTP/1.1
请求行
GET /a.html HTTP/1.1 请求行,下面部分为请求头
Host: localhost:8080告诉服务器请求的ip和端口
Connection: keep-alive 告诉服务器回传数据不要马上关闭,保持一小段时间的链接
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9 告诉服务器客户端可以接受的数据类型
Accept-Encoding: gzip, deflate, br 告诉服务器客户端可以接受的数据编码(压缩)格式
Accept-Language: zh-CN,zh;q=0.9告诉服务器客户端可以接受的语言
Cookie: Idea-9a938345=917f1ad2-d83b-4a72-8a8d-6535e0fe3695
POST请求
请求头
请求行
空行
请求体(包含发送给服务器的数据)
请求行常见:
Accept:表示客户端可以接受的数据类型
Accept-Language: 表示客户端可以接受的语言类型
Referer:表示发起请求的时候,浏览器中的地址(从哪来)
User-Agent:表示浏览器信息
Content-Type:表示数据类型
application/x-www-form-urllencoded
表示提交的数据格式:name=value&,然后对其进行url编码
multipart/form-data
表示以多段的形式提交数据给服务器(流)
Content-Length:发送数据长度
Cache-Control: 表示控制缓存