▐ Servlet概述
• Servlet是Server Applet的简称,意思是 用Java编写的服务器端的程序,Servlet被部署在服务器中,而服务器负责管理并调用Servlet.
• Servlet的作用 :
- 接收用户发送的请求
- 调用其他java程序进行处理
- 向前端做出响应
▐ Servlet的创建和使用
• 自己创建一个类,并继承HttpServlet,这样我们的类也就遵守了JavaEE规范
• 重写父类中的方法
• 在web.xml文件中配置Servlet
让类继承HttpServlet,并重写父类方法(也就是前两步)
import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import java.io.IOException; /* 创建Servlet: 1. 自己创建一个类,并继承HttpServlet,这样我们的类也就遵守了JavaEE规范 2. 重写父类中的方法 3. 在web.xml文件中配置Servlet */ public class LoginServlet_back2 extends HttpServlet { @Override public void init() throws ServletException { System.out.println("init"); } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("service"); } @Override public void destroy() { System.out.println("destory"); } }
在web.xml文件中配置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--> <servlet> <servlet-name>login</servlet-name> <!-- 为Servlet对象定义名称--> <!-- 配置Servlet类名,服务器启动时会创建此类的对象,只创建一次--> <servlet-class>webserver.servlet.LoginServlet_back2</servlet-class> </servlet> <!-- 为Servlet配置访问地址--> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/login</url-pattern> <!-- 前端访问地址,必须/开头--> </servlet-mapping> </web-app>
🔖知识补充
xml文件: 也是属于一种标记语言,但与html不同,xml主要用来存储配置数据的
web.xml文件:存储当前项目配置信息,例如配置Servlet,过滤器,监听器...
此文件是服务器启动时由服务器读取,名字和位置不能修改!
▐ Servlet中方法介绍
无参构造: 用来初始化Servlet,可以不写,只被调用一次.
init( ): 也是用来初始化Servlet的,在构造方法执行完毕后执行,只执行一次。
server( ): 多次被执行,是提供服务的.
destory( ): 在服务器关闭时调用.
import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import java.io.IOException; public class LoginServlet_back2 extends HttpServlet { /* 不写也会存在,只被调用一次/一个Servlet类只被创建一个对象 什么时候调用: 1. 第一次向Servlet程序发起请求时 2. 服务器启动时创建,需要在web.xml中配置 */ public LoginServlet_back2() { System.out.println("无参构造方法"); } /* 也是用来初始化Servlet的在构造方法执行完毕后执行,只执行一次 是Servlet规范中必须调用的方法,若不重写默认调用父类的init方法 */ @Override public void init() throws ServletException { System.out.println("init"); } /* 多次被执行,是提供服务的 ServletRequest:前端发送的数据都被包装到此对象中 ServletResponse:表示响应 */ @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("service"); } /* 在服务器关闭时调用 */ @Override public void destroy() { System.out.println("destory"); } }
如果要服务器启动时就创建Servlet,需要在web.xml中配置 </load-on-startup>
<load-on-startup>1</load-on-startup>
▐ Servlet的生命周期
通过对Servlet中方法的介绍,其实我们对它生命周期已然大致了解,那再总结下吧!
实例化:在第一次访问/服务器启动时创建,调用无参构造,只调用一次。(开始)
初始化:在构造方法被执行完后执行,可以不重写,会自动调用父类的 ,同样也只调一次。
服务:多次调用,每次请求都会调用service()
销毁:在服务器关闭时执行,执行一些必要的操作,只被调用一次。