静态资源 / 动态资源
- 静态资源:无需在程序运行时通过代码运行生成的资源,在程序运行之前就写好的资源。例如:html、css、js、img,音频文件和视频文件;
- 动态资源:- 需要在程序运行时通过代码运行生成的资源,在程序运行之前无法确定的数据,运行时动态生成,例如 Servlet、Thymeleaf 等;
Servlet简介
用来接收、处理客户端请求、响应给浏览器的动态资源。在整个 Web 应用中,Servlet 主要负责处理请求、协同调度功能以及响应数据。可以把 Servlet 称为 Web 应用中的控制器 。 
- tomcat 接收到请求后,会将请求报文的信息转换为一个
HttpServletRequest对象,该对象中包含了请求中的所有信息:请求行、请求头、请求体。 - tomcat 同时创建了一个
HttpServletResponse对象,该对象用于承载要响应给客户端的信息,后面,该对象会被转换成响应的报文:响应行、响应头、响应体。 - tomcat 根据请求中的资源路径找到对应的 servlet,将 servlet 实例化,调用
service方法,同时将HttpServletRequest和HttpServletResponse对象传入。
Servlet开发流程
- 创建一个 JavaWeb 项目
- 开发一个 UserServlet
java
public class UserServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 获取请求中的键值对参数 key=value
String username = req.getParameter("username");
if ("atguigu".equals(username)) {
// 通过响应对象响应信息
resp.getWriter().write("NO");
} else {
resp.getWriter().write("YES");
}
}
}
自定义一个类,要继承`HttpServlet`类;
重写`service`方法,该方法主要就是用于处理用户请求的服务方法;
`HttpServletRequest`代表请求对象,是由请求报文经过Tomcat转换而来的,通过该对象可以获取请求中的信息;
`HttpServletResponse`代表响应对象,该对象会被Tomcat转换为响应的报文,通过该对象可以设置响应中的信息;
Servlet对象的生命周期(创建、初始化、处理服务、销毁)是由Tomcat管理的,无需自己`new`;
`HttpServletRequest`、`HttpServletResponse`两个对象也是由Tomcat负责转换,在调用`service`方法时传入给我们用的;
- 在 web.xml 为 UseServlet 配置请求的映射路径:
xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0">
<servlet>
<!--给UserServlet起一个别名,用于关联请求的映射路径-->
<servlet-name>userServlet</servlet-name>
<!--用于高速 Tomcat 要实例化的 Servlet 类-->
<servlet-class>com.atguigu.servlet.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<!--关联别名和映射路径-->
<servlet-name>userServlet</servlet-name>
<!--可以为一个Servlet匹配多个不同的映射路径,但是不同的Servlet不能使用相同的url-pattern-->
<url-pattern>/userServlet</url-pattern>
<!-- <url-pattern>/userServlet2</url-pattern>-->
<!--
/ 表示通配所有资源,不包括jsp文件
/* 表示通配所有资源,包括jsp文件
/a/* 匹配所有以a前缀的映射路径
*.action 匹配所有以action为后缀的映射路径
-->
<!-- <url-pattern>/*</url-pattern>-->
</servlet-mapping>
</web-app>
- 开发一个表单页面
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="userServlet">
请输入用户名:<input type="text" name="username" /> <br>
<input type="submit" value="校验">
</form>
</body>
</html>