Servlet的生命周期及tomcat相关配置

    xiaoxiao2021-12-14  21

    一、servlet生命周期

    生命周期的三个方法:

    public void init(ServletConfig) ; 初始化方法 调用一次publicservice(ServletRequest,ServletResponse) ; 服务方法 调用多次public destroy();  销毁方法 调用一次(停止服务器后或停止应用的时候调用)

     

    import java.io.IOException; import javax.servlet.GenericServlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; //演示servlet的生命周期:单实例多线程 public class ServletDemo1 extends GenericServlet { // 只会调用一次 public ServletDemo1() { System.out.println("构造函数"); } //只会调用一次 @Override public void init(ServletConfig config) throws ServletException { System.out.println("初始化了"); } //处理请求的方法,会调用多次 @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { System.out.println("处理请求"); } //停止服务器后或停止应用的时候 只会调用一次 @Override public void destroy() { System.out.println("我被销毁了"); } }

     

    在地址栏中敲入:http://localhost:8080/项目名/servlet/类名(servlet/类名:可以在xml中设置访问方式url-mapping)

     

    http://localhost:8080/servlet/servlet/Demo

     

    具体过程如下:

    默认情况下,servlet对象在第一次请求的时候调用构造函数创建, 创建之后自动调用带参的init方法,然后调用service方法.

    destroy方法在停止服务器或者停止应用的时候调用。

    整个过程中,构造方法、init方法和destroy方法只会调用一次,而service方法会反复调用。

     

    Servlet第一次访问创建好之后,就一直在服务器的内存里,后面再访问的时候,不会再创建,只会调用service方法,

    即单实例多线程:

    始终只有一个实例,生命周期就是一旦创建好了servlet,只有当应用程序停止时servlet才会死亡

     

    可以通过配置web.xml文件来改变创建servlet的时机.配置如下(就是可以不用客户访问的时候直接就创建,也就是控制servlet里面的创建时间)

    <!--配置Servlet--> <!--servlet标签用来定义一个servlet对象--> <servlet> <servlet-name>myServlet1</servlet-name> <servlet-class>com.hcx.web.servlet.MyServlet1</servlet-class> <!--定义启动的顺序: 如果是0或正数,则servelt在服务器启动的时候就创建了 如果是负数,则在第一次访问的时候才创建 (默认是第一次访问时才被创建) --> <load-on-startup>2</load-on-startup> </servlet>

     

    此时在服务器启动的时候就创建对象并进行初始化了.此Servlet对象在服务器停止或者应用停止时才死亡.

    注意:destroy方法是在servlet被销毁之前执行,一般用于释放资源

     

    二、IDEA与tomcat相关配置

    idea会为每一个tomcat部署的项目单独建立一份配置文件:

    在tomcat启动过程中会打印日志:  

    Using CATALINA_BASE: "C:\Users\HCX\.IntelliJIdea2017.2\system\tomcat\Tomcat_8_5_0_myservlet" Using CATALINA_HOME: "D:\apache\apache-tomcat-8.5.0" Using CATALINA_TMPDIR: "D:\apache\apache-tomcat-8.5.0\temp" Using JRE_HOME: "C:\Program Files\Java\jdk1.8.0_131" Using CLASSPATH: "D:\apache\apache-tomcat-8.5.0\bin\bootstrap.jar;D:\apache\apache-tomcat-8.5.0\bin\tomcat-juli.jar"

    每个项目对于tomcat的配置:

    查看conf:

    对于server.xml中的内容,如端口号,虚拟目录等可以直接在idea中修改,在idea中修改完毕后,相应的文件内容也会发生改变。

    项目的部署:使用的部署方式为单独编写一个xml:Catalina->localhost->xxx.xml:

    tomcat真正访问的是“tomcat部署的项目(即out目录下)”,该项目的目录对应着工作空间的web目录下的所有资源

     

    转载请注明原文地址: https://ju.6miu.com/read-968026.html

    最新回复(0)