Servlet概述
- Servlet是Server Applet的合成词, 意思是用Java编写的服务器端的程序, 它运行在web服务器中, web服务器负责Servlet和客户的通信以及调用Servlet方法, Servlet和客户通信采用"请求/响应"的模式。
- Servlet的作用:
接收用户发送的请求,数据;
调用其他的java程序来处理请求;
根据处理结果,服务器将响应返回给客户端。
Servlet创建和使用
- 创建一个类继承javax.servlet.http包下的HttpServlet;
javax.servlet.http包我们可以在Tomcat的目录中找到(apache-tomcat-9.0.43\lib), lib文件夹下有一个jar包(servlet-api.jar),我们将这个包复制到源代码文件目录中的WEB-INF/lib下面, 再通过开发工具集成servlet-api, 这样就可以让类继承HttpServlet了。
-
重写父类中的方法:这里只重写三个方法, 这三个方法与生Servlet的生命周期有关。
package com.ff.javaweb.servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @Author Lotus_dong * @Date 2021-02-26 14:43 * @function 具有servlet功能的类 */ public class Demo1Servlet extends HttpServlet { /** * 无参构造方法 */ public Demo1Servlet() { System.out.println("无参构造方法"); } /* * 初始化 */ @Override public void init(ServletConfig config) throws ServletException { System.out.println("init"); } /* * 提供服务 * HttpServletRequest : 请求中的数据都被服务器封装到HttpServletRequest中 * HttpServletResponse : 向客户端作出响应 */ @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("service"); /*写自己的处理*/ } /* * 销毁 */ @Override public void destroy() { System.out.println("destroy"); } }
-
在web.xml文件中配置Servlet。
(1)什么是web.xml文件?
web.xml文件时web应用的配置文件, 它必须放在web应用目录WEB-INF目录下面; web.xml文件用于对web应用下的web资源进行配置, 服务器在启动时会读取web.xml文件中的内容。
(2)为什么要在web.xml文件中配置Servlet?
由于客户端时通过URL地址(url:统一资源定位系统,是因特网的万维网服务程序上用于指定信息位置的表示方法)访
问web服务器中的资源,所以Servlet程序若是想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在
web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。
(3)了解< servlet>和< servlet-mapping>标签。
<servlet>元素:用于注册Servlet,它包含两个主要的子元素<servlet-name>和<servlet-mapping>。
<servlet-name>:用于设置Servlet的注册名称。
<Servlet-mapping>:用于设置Servlet的完整类名(反射机制)。
<servlet-mapping>元素:映射一个已注册的Servlet的一个对外访问路径,包含两个子元素:<servlet-name>和<url-pattern>。
<servlet-name>:指定Servlet的注册名称。
<url-pattern>:指定Servlet的对外访问路径,配置模式为"/"代表当前web应用的根目录。
(4)在web.xml文件中配置Servlet.
1)配置Servlet, 在服务器中注册Servlet, 由服务器管理所有的Servlet对象。
<servlet>
<!--为servlet对象定义一个名称-->
<servlet-name>demo1</servlet-name>
<!--通过反射机制(根据地址创建对象)创建对象-->
<servlet-class>com.ff.javaweb.servlet.Demo1Servlet</servlet-class>
</servlet>
2)给Servlet映射一个访问地址。
<servlet-mapping>
<!--对应servlet对象的名称-->
<servlet-name>demo1</servlet-name>
<!--为servlet配置供前端访问的地址,可以配置多个地址-->
<url-pattern>/Demo1Servlet</url-pattern>
<url-pattern>/Demo1Servlet1</url-pattern>
</servlet-mapping>
这样我们就可以使用127.0.0.1:8080/Demo1Servlet或127.0.0.1:8080/Demo1Servlet进行访问了。
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">
<!--
xml文件: mark language 可扩展标记语言,作用是用来存储数据
web.xml: 用来存储web项目中的一些配置信息,此文件在服务层启动时被服务器加载读取
-->
<!--配置servlet 在服务器中注册servlet 由服务器管理所有的servlet对象-->
<servlet>
<!--为servlet对象定义一个名称-->
<servlet-name>demo1</servlet-name>
<!--通过反射机制(根据地址创建对象)创建对象-->
<servlet-class>com.ff.javaweb.servlet.Demo1Servlet</servlet-class>
</servlet>
<!--给servlet配置一个访问地址-->
<servlet-mapping>
<!--对应servlet对象的名称-->
<servlet-name>demo1</servlet-name>
<!--为servlet配置供前端访问的地址,可以配置多个地址-->
<url-pattern>/Demo1Servlet</url-pattern>
<url-pattern>/Demo1Servlet1</url-pattern>
</servlet-mapping>
</web-app>
- 运行Servlet程序。