Java登陆第二十六天——Servlet
静态资源和动态资源
- 静态资源
- 程序运行之前就存在于服务器之中的资源。
例如html、css、js、img、音频文件和视频文件等。
- 动态资源
-
不是指动画,运动的效果。
-
程序运行之前无法确定其数据,通过代码动态的生成数据。
-
程序运行时,通过代码生成的资源。
-
例如Servlet、Thymeleaf(模板引擎)等。
Servlet
Servlet是主要运行在服务端(Tomcat)的一种Java程序,可以动态生成Web网页。
能够处理客户端请求并作出响应的一套技术标准就是Servlet。
Servlet是运行在服务端的,所以Servlet必须运行在Tomcat这样的服务器软件中。
从代码层面上来说,Servlet就是一个接口。
Servlet运行流程
Servlet开发过程
1.开发一个Web
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="get" action="TestServlet">
用户名:<input type="text" name="uname"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
2.编写一个Servlet(注意导包,如果是javax的需要引入Tomcat10的Servlet)
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*
1.从HttpServletRequest(请求报文)中获取参数uname
2.逻辑代码
3.将要响应的数据放入HttpServletResponse(响应报文)
*/
String str = req.getParameter("uname");
boolean flag=true;//设置一个待返回的标记
if (str.equals("abc")){
flag=false;
}
PrintWriter writer = resp.getWriter();//获取打印流
writer.write(flag+"");
}
}
3.编写web.xml映射
<?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">
<!--
1.servlet-name 用于关联映射路径
1.servlet-class 告诉Tomcat要实例化Servlet类的全类名
2.url-pattern URL路径
-->
<servlet>
<servlet-name>Test1</servlet-name>
<servlet-class>com.example.JavaWeb.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test1</servlet-name>
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
</web-app>
当请求方式为POST时,参数在请求报文体中。
如何引入Tomcat10的Servlet?
点击右上角查看项目结构
+号引入依赖
选择lib-servlet-api即可(同时也要删除pom.xml中自带的servlet)