Servlet是Server Applet的简称,是用Java编写的是运行在 Web 服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Servlet技术的核心是Servlet接口,定义了Servlet与Servlet容器之间的契约,Servlet容器将Servlet类载入内存,生成Servlet实例并调用它具体的方法,所以它是所有Servlet类必须直接或者间接实现的一个接口。
-
Servlet接口:只负责定义Servlet程序的访问规范;
-
GenericServlet抽象类:实现了Servlet接口,做了很多空实现,并持有一个ServletConfig类的引用,并提供了一些ServletConfig的使用方法;
-
HttpServlet抽象类:实现了service方法,并实现了请求分发处理;
servlet共有三种创建方式,分别是实现Servlet接口、继承GenericServlet抽象类、继承HttpServlet类。创建servlet的前提必须导入servlet-api的jar包。
第一种方式:实现Servlet接口。
1.首先创建一个maven的web项目,并导入servlet-api的坐标
2.在项目中创建一个类并且实现Servlet接口和实现接口中的全部抽象方法
3.找到service方法,在里面添加如下内容,可以通过流的方式在页面上打印Hello Servlet~~~
servletResponse.setContentType("text/html;charset=utf-8");
servletResponse.getWriter().write("Hello Servlet~~~");
4.找到webapp下的web.xml,在里面编写如下内容
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.ma.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
5.把项目部署到Tomcat中就可以运行了
6.运行结果如下,页面成功打印出了Hello Servlet~~~
这就是第一种创建servlet的方式,一定有很多人感觉xml方式来配置起来比较麻烦。我们也可以使用注解的方式来创建,前提是servlet-api的版本必须是3以上即引入的坐标版本号必须在3以上。把原来web.xml中的内容去掉,在类上添加@WebServlet("/hello1"),其中"/hello1"是访问地址。
运行结果如下,注意地址栏已经换成/hello1
第二种方式:继承GenericServlet抽象类。
1.创建一个类继承GenericServlet并实现service方法
在service方法中添加 下面内容
servletResponse.setContentType("text/html;charset=utf-8");
servletResponse.getWriter().write("GenericServlet抽象类方式创建servlet");
2.运行结果
说明:这里使用的是注解方式 ,没有使用xml配置的方式。
第三种方式:继承HttpServlet类。
1.创建一个类继承HttpServlet并重写doGet方法
2.运行结果
说明:这里使用的是注解方式 ,没有使用xml配置的方式。
三种方式比较来说最好是继承HttpServlet来创建servlet。第一种方式要实现所有抽象方法,第二种方式虽然比第一种方式简洁了一些,但相比第三种方式还差些意思。第三种方式是不仅对HttpServletRequest和HttpServletResponse进行了增强,还可以根据自己需求来选择用doGet还是doPost或者是doDelete。
servlet生命周期
Servlet的生命周期就是servlet类对象什么时候创建?什么时候调用对应的方法,什么时候销毁。 自定义对象的生命周期由我们程序员自己手动控制。但是!!!Servlet它不是一个普通的java类。是一个被tomcat服务器调用的。所以Servlet是生命周期是被tomcat服务器去控制的。
-
构造方法:创建servlet的时候调用。默认情况下,第一次访问servlet的时候,会创建servlet对象。此时会有且只会调用1次构造函数,证明了servlet对象是单实例的。
-
init方法:创建完servlet对象之后调用,也只是会调用1次。
-
service方法:提供服务的方法,接收用户的请求,并处理用户的请求,然后响应用户的请求。每次发送请求,都会调用service方法。调用几次,service方法会执行几次。
-
destroy方法:销毁的方法。销毁servlet对象的时候调用。比如我们停止tomcat服务器或者重新部署tomcat服务器,都会销毁servlet对象,只会调用1次。
下面演示一下
可以看到构造和初始化方法只执行了一次
销毁方法要在关闭tomcat时执行
标签:生命周期,方式,Servlet,方法,调用,三种,创建,servlet From: https://blog.csdn.net/m0_65419210/article/details/139305663