1.什么是Servlet
1.Servlet 是JavaEE规范之一。规范就是接口
2.Servlet就是JavaWeb三大组件之一。三大组件:Servlet程序、Filter过滤器、Listener监听器。
3.Servlet是运行在服务器上的一个Java小程序,它可以接受客户端发送过来的请求,并响应数据给客户端。
2.Servlet程序
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--servlet 标签给Tomcat配置servlet程序-->
<servlet>
<!--servlet-name 标签 Servlet程序起一个别名(一般是类名)-->
<servlet-name>HelloServlet</servlet-name>
<!--全类名(全路径加类名)-->
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>HelloHTTPServletTest</servlet-name>
<servlet-class>HelloHTTPServletTest</servlet-class>
</servlet>
<servlet>
<servlet-name>HelloServlet3</servlet-name>
<servlet-class>HelloServlet3</servlet-class>
</servlet>
<!--servlet-mapping 标签给servlet程序配置访问地址-->
<servlet-mapping>
<!--servlet-name 标签告诉服务器当前配置的地址给哪个servlet使用-->
<servlet-name>HelloServlet</servlet-name>
<!--配置访问地址-->
<url-pattern>/hello1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HelloHTTPServletTest</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HelloServlet3</servlet-name>
<url-pattern>/hello3</url-pattern>
</servlet-mapping>
</web-app>
servlet的调用顺序,重写service的doGet() doPost()方法
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* @author Liu Qingfeng
* @create 2021-01-06----13:37
*/
public class HelloServlet implements Servlet {
public HelloServlet() {
System.out.println("1.Servlet 构造器方法");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("2.Servlet init初始化");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/*
* 是专门用来处理请求和响应的
* */
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3.service 方法---->Servlet 被访问了");
HttpServletRequest httpServletRequest = (HttpServletRequest)servletRequest;
String method = httpServletRequest.getMethod();
if ("GET".equals(method)){
doGet();
}else if ("POST".equals(method)){
doPost();
}
}
public void doGet(){
System.out.println("doGET的一系列操作");
}
public void doPost(){
System.out.println("doPOST的一系列操作");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("4. destroy 销毁");
}
}
继承于HttpServlet
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author Liu Qingfeng
* @create 2021-01-06----14:45
*/
public class HelloHTTPServletTest extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Extends HttpServlet 的doGet方法");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Extends HttpServlet 的doPost方法");
}
}
测试:Post和Get
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://localhost:8080/servlet/hello" method="get">
<input type="submit" value="submit">
</form>
</body>
</html>
3.Servlet工作原理:
2.Servlet 的生命周期
1.执行Servlet构造器方法
2.执行init初始化方法
第一二步时在第一次访问的时候创建Servlet程序调用。
3.执行service方法
第三步每次访问都会执行
4.执行destroy销毁方法
程序停止时候才会调用。
3.
3.ServletConfig类
ServletConfig类Servlet程序的配置信息
Servlet程序和ServletConfig对象都是由Tomcat负责创建,我们负责使用。
Servlet程序默认是第一次访问的 时候创建,ServletConfig是每个Servlet程序创建时,就创建一个对象。
ServletConfig类的三大作用
1.可以获取Servlet程序的别名servlet-name的值
2.获取初始化参数init-param.
3.获取ServletContext对象
4.Servlet ext类
1.什么是ServletContext?
1.ServletContext是一个接口,他是表示Servlet上下文对象。
2.一个web工程只有一个ServletContext对象实例(就是不同的Servlet可以调用同一个ServletContext)
3.ServletContext对象是一个域对象
域对象:
域对象是可以像Map一样存取数据的对象,叫做域对象,
这里域指的是存取数据的操作范围,整个web工程
ServletContext类的四个作用
1.获取web.xml中配置的上下文参数context-param
2.获取当前的工作路径,格式:/工程路径
3.获取工程部署后服务器磁盘上的绝对路径
4.像Map一样存取数据
5.请求的Http协议格式
1.GET请求:
1.请求行
a.请求的方式 GET
b.请求的资源路径 【+?+请求参数】
c.请求协议的版本号 HTTP/1.1
2.请求头
key:value 组成 不同的键值对表示不同的含义。
2.post请求
1.请求行
a.请求的方式 POST
b.请求的资源路径 【+?+请求参数】
c.请求协议的版本号 HTTP/1.1
2.请求头
key:value 组成 不同的键值对表示不同的含义。
空行
3.请求体--------发送给服务器的数据
3.常用请求头:
Accept:表示客户端可以接受的数据类型
Accept-Language:表示哭护短可以接受的语言类型
User-Agent:表示客户端浏览器的信息
Host: 表示请求时的服务器的IP和端口号
4.1哪些是GET请求
1、form标签method= get
2、a标签
3、link标签引入css
4、Script标签引入js文件
5、img标签引入图片
6、iframe引入html页面
7、在浏览器地址栏中输入地址后回车
4.2哪些是POST请求
1、form标签 method=post
5.响应内容
6.常用的响应码说明:
200 成功
302 重定向
404 服务器已经收到了,但是数据不存在(请求地址出错)
500 服务器收到请求,服务器内部异常
7.MIME类型说明
MIME是HTTP协议中数据类型。