请求Servlet时,部署Servlet的容器要执行哪些步骤
Servlet的生命周期是由servlet的容器来控制的。
分为3个阶段:初始化阶段、运行阶段、销毁阶段。
一、初始化阶段:
a Servlet容器加载servlet类,把它的.Class文件中的数据读到内存中。
b Servlet容器创建servletConfig对象。servletConfig对象包含了servlet的初始化配置信息。此外 servlet容器还会使得servletConfig对象与当前的web应用的servletContext对象关联。
c Servlet容器创建servlet对象。
d Servlet容器调用servlet对象的init(ServletConfig config)方法。
(2)在web.xml文件中为servlet设置了《load-on-startup》元素
《servlet》
《servlet-name》servlet1《/servlet-name》
《servlet-class》servlet.servlet1《/servlet-class》
《load-on-startup》0《/load-on-startup》
《/servlet》
说明:
在servlet的配置当中,《load-on-startup》5《/load-on-startup》的含义是:
标记容器是否在启动的时候就加载这个servlet。
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。
(3) 当web应用被重新启动时,web应用中的所有servlet会在特定的时间被重新初始化。
二、运行阶段
在这个阶段sevlet可以随时响应客户端的请求。当servlet容器接到访问特定的servlet请求时,servlet容器会创建针对与这个请求的servletRequest和servletResponse对象,然后调用service()方法,并把这两个对象当做参数传递给service()方法。Service()方法通过servletRequest对象获得请求信息,并处理该请求,再通过servletResponse对象生成响应结果。
【不管是post还是get方法提交,都会在service中处理,然后,由service来交由相应的doPost或doGet方法处理,如果你重写了service方法,就不会再处理doPost或doGet了,如果重写sevice()方法,可以自己转向doPost()或doGet()方法】
注:当servlet容器把servlet生成的响应结果发送给客户后,servlet容器会销毁servletRequest和sevletResponse对象。
三、销毁阶段
当Web应用被终止时,servlet容器会先调用web应用中所有的servlet对象的destroy()方法,然后在销毁servlet对象。此外容器还会销毁与servlet对象关联的servletConfig对象。
在destroy()方法的实现中,可以释放servlet所占用的资源。如关闭文件输入输出流,关闭与数据库的连接。
注:sevlet的生命周期中,servlet的初始化和销毁只会发生一次,因此init()和destroy()方法只能被servlet容器调用一次,而service()方法取决与servlet被客户端访问的次数。
什么是servlet容器
容器就是你的程序运行时需要的环境,具体如下:
-
Tomcat是Servlet的运行环境,即一个Servlet容器。
-
Servlet容器的作用是负责处理客户请求,当客户请求来到时,Servlet容器获取请求,然后调用某个Servlet,并把Servlet的执行结果返回给客户。
-
Servlet容器的工作过程是:当客户请求某个资源时,Servlet容器使用ServletRequest对象把客户的请求信息封装起来,然后调用java Servlet API中定义的Servlet的一些生命周期方法,完成Servlet的执行,接着把Servlet执行的要返回给客户的结果封装到 ServletResponse对象中,最后Servlet容器把客户的请求发送给客户,完成为客户的一次服务过程。
-
每一个Servlet的类都执行 init()、service()、destory()三个函数的自动调用,在启动时调用一次init()函数用以进行参数的初始化,在服务期间每当接收到对该Servlet的请求时都会调用Service()函数执行该Servlet的服务操作,当容器销毁时调用一次destory()函数。
-
典型的Servlet应用是监听器、过滤器的实现。
拓展资料:
JSP运行原理:当Web服务器上的JSP页面第一次被请求执行时,JSP引擎先将JSP页面文件转译成一个Java文件,即Servlet,Java Servlet是基于服务器端编程的API,用Java Servlet编写的Java程序称为servlet,servlet通过HTML与客户交互。
服务器将前面转译成的Java文件编译成字节码文件,再执行这个字节码文件来响应客户的请求。当这个JSP页面再次被请求时,只要该JSP文件没有被改动,JSP引擎就直接调用已装载的Servlet。
servlet容器是什么
通俗点说,所谓容器,就是放东西的地方。Servlet容器自然就是放Servlet的地方。 J2EE开发,是有分工的。一般的程序员,写得都是应用开发,我们会按照一定的规则,开发我们的系统,比如用Servlet开发,我们就要按照Servlet的规则写代码。 那么我们写的代码要在那里运行呢? 对了,就是在Servlet容器中运行。容器会按照规则加载类,并运行它。 有一部份程序员就是写容器的,如Tomcate就是web容器。tomcat就是一个Servlet容器,换句话说,解释Servlet的东西就这样称呼
servlet引擎和servlet容器区别
其实很简单的,用不着细扣。你可以看下tomcat配置文件思路就清晰了:tomcat_home\conf\server.xml从标签元素组成来理解,所谓servlet容器就是一个大的处理web应用的整体,对应其中的server元素(也就是根元素)下的service元素,容器的名字叫Catalina,处理从客户端发来的请求。
接着service下有Connector元素(确定端口的连接)与Engine元素(也就是引擎,负责做具体处理的,比如管理你所了解的servlet生命周期)
容器相当于小轿车,引擎也就是发动机(干实事的)
Engine下有不同主机即《host》元素来区分,通常一个的话就是localhost
host下有不同应用:即我们通常的Context元素,可为每个应用配置虚拟目录,就是对应每个应用即你的打包war文件
servlet是一个容器类这样说对吗
没必要在这两个概念上死嗑,一般的说法是这样的,servlet容器的主要任务是管理servlet的生命周期。而你说的web容器更准确的说应该叫web服务器,它是来管理和部署web应用的。还有一种服务器叫做应用服务器,它的功能比web服务器要强大的多,因为它可以部署ejb应用,可以实现容器管理的事务,一般的应用服务器有weblogic和websphere等,它们都是商业服务器,功能强大但都是收费的。web容器最典型的就是tomcat了,tomcat是web容器也是servlet容器。
“servlet”指的是什么
1.什么是SERVLET?
Servlet是用Java编写的服务器端程序, 其主要功能在于交互式地浏览和修改数据,生成动态Web内容.
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,我们一般将Servlet理解为后者。
这段话可能听起来有些绕, 但如果大家把Servlet与Spring MVC 的前端控制器 DispatcherServlet
结合起来理解, 应该立马就知道它是做什么的了. Servlet 是Java JDK提供的一个接口, 所有的Servlet都继承于它,
而DispatcherServlet是一个继承了实现了Servlet接口的类的类.
2.知识剖析
Servlet 的生命周期
Servlet 的生命周期分为三个阶段, 分别对应Servlet中的三个接口.
init() 初始化.
service() 处理客户端的请求, 具体业务逻辑. ServletRequest 对象用于获得客户端信息,ServletResponse 对象用于向客户端返回信息(客户端可以理解为浏览器)
destroy() 结束时调用. 这个方法只有在servlet的service方法内的所有线程都退出的时候,或在超时的时候才会被调用。
init() 和 destroy() 都只会在Servlet创建和销毁时调用一次, 而service() 则会在响应不同请求时多次调用.
注意Servlet是一个接口,实现了servlet的类,是不能直接处理请求的.
请求需要通过Servlet容器来发送到Servlet, Servlet是运行在Servlet容器中的.
Servlet容器是Web服务器和servlet进行交互的必不可少的组件。常见Web服务器有Tomcat, jetty, resin, 它们也可以称为应用服务器
3.常见问题
1. Servlet 如何接收才能接收到Servlet容器发来的请求?
2. Servlet 什么时候被初始化?
3. DispatcherServlet 如何处理容器发来的请求?
4.解决方案
1. Servlet 容器通过监听端口(8080)来接收用户发送的请求, 然后通过web.xml中的 Servlet-mapping 配置, 来匹配到请求Heades中的url信息, 将其转发到对应Servlet配置中的Servlet实现类完成请求接收.
2. Servlet 的初始化是由Web.xml 中的 loadOnStartup 配置控制的.
当 loadOnStartup 《 0 或者不写时, 接收到第一次请求的时候实例化.
当 loadOnStartup 》 0 web容器启动的时候做实例化处理,顺序是由小到大,正整数小的先被实例化
当 loadOnStartup = 0 web容器启动的时候做实例化处理,相当于是最大整数,因此web容器启动时,最后被实例化
3. 通过DispatcherServlet 的执行流程来看它时如何处理请求的
希望对您有所帮助!~
什么是servlet
1.什么是SERVLET?
Servlet是用Java编写的服务器端程序, 其主要功能在于交互式地浏览和修改数据,生成动态Web内容.
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,我们一般将Servlet理解为后者。
这段话可能听起来有些绕, 但如果大家把Servlet与Spring MVC 的前端控制器 DispatcherServlet
结合起来理解, 应该立马就知道它是做什么的了. Servlet 是Java JDK提供的一个接口, 所有的Servlet都继承于它,
而DispatcherServlet是一个继承了实现了Servlet接口的类的类.
2.知识剖析
Servlet 的生命周期
Servlet 的生命周期分为三个阶段, 分别对应Servlet中的三个接口.
init() 初始化.
service() 处理客户端的请求, 具体业务逻辑. ServletRequest 对象用于获得客户端信息,ServletResponse 对象用于向客户端返回信息(客户端可以理解为浏览器)
destroy() 结束时调用. 这个方法只有在servlet的service方法内的所有线程都退出的时候,或在超时的时候才会被调用。
init() 和 destroy() 都只会在Servlet创建和销毁时调用一次, 而service() 则会在响应不同请求时多次调用.
注意Servlet是一个接口,实现了servlet的类,是不能直接处理请求的.
请求需要通过Servlet容器来发送到Servlet, Servlet是运行在Servlet容器中的.
Servlet容器是Web服务器和servlet进行交互的必不可少的组件。常见Web服务器有Tomcat, jetty, resin, 它们也可以称为应用服务器
3.常见问题
1. Servlet 如何接收才能接收到Servlet容器发来的请求?
2. Servlet 什么时候被初始化?
3. DispatcherServlet 如何处理容器发来的请求?
4.解决方案
1. Servlet 容器通过监听端口(8080)来接收用户发送的请求, 然后通过web.xml中的 Servlet-mapping 配置, 来匹配到请求Heades中的url信息, 将其转发到对应Servlet配置中的Servlet实现类完成请求接收.
2. Servlet 的初始化是由Web.xml 中的 loadOnStartup 配置控制的.
当 loadOnStartup 《 0 或者不写时, 接收到第一次请求的时候实例化.
当 loadOnStartup 》 0 web容器启动的时候做实例化处理,顺序是由小到大,正整数小的先被实例化
当 loadOnStartup = 0 web容器启动的时候做实例化处理,相当于是最大整数,因此web容器启动时,最后被实例化
3. 通过DispatcherServlet 的执行流程来看它时如何处理请求的
希望对您有所帮助!~
Servlet容器是什么啊我对Servlet还算理解 Servlet容器是什么呢求解
给你个简单点的说法,你知道Java EE吧,它只是个规范,需要各个软件厂商去实现它,
Servlet / JSP就是其中一个最常用的规范,这些实现就是 Servlet/ JSP容器,比如
常用的tomcat,还有weblogic, websphere, JBoss, Glassfish,它们在提供servlet/jsp实现时内部各不相同,但都实现了同一个规范,所以你自己写的servlet/jsp应用程序都能在上面跑。
这些提供了servlet/jsp功能的服务器,就叫做servlet(/jsp)容器。
(或者用桌面程序和web程序来类比,对web程序来说,servlet容器的作用就相当于桌面程序里操作系统的作用,都是提供一些编程基础设施的)