• 测试Servlet生命周期学习笔记


    测试环境:windows xp旗舰版

    软件环境:myclipse8.5+tomcat7.0

    *********************************************************************************

    操作方法:

    1.新建工程;

     

    File——>new——>Java Project——>TestServlet(工程名称)——>Finish.

     

    2.加载servlet-api.jar类包;

     

    TestServlet(右键)——>Build Path——>Configure Build Path——>Library

     

    ——>Add External JAR Selection——>(浏览在tomcat的lib目录下找到servlet-api.jar选中后点击打开)。——> OK

    3.新建名为“TestlLifeCycleServlet”的class类。

     

     4.重写doGet方法:

    5.修改下重写方法的参数,以及方法并自己写一个构造方法:

    6.重写TestlLifeCycleServlet的init(ServletConfig)方法,和重写doGet方法一致:

    7.修改重写的TestlLifeCycleServlet的init(ServletConfig)方法中的参数和方法,

    之后再重写TestlLifeCycleServlet的destroy()方法.

    8.最后完成代码如下:

    import java.io.IOException;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    public class TestlLifeCycleServlet extends HttpServlet {
        
        
        //重写销毁方法
        public void destroy() {
            System.out.println("destroy");
            
        }
    
        //重写初始化方法
        public void init(ServletConfig config) throws ServletException {
            System.out.println("init");
    
        }
    
        //自己构造的方法    
        public TestlLifeCycleServlet(){    
            System.out.println("constructor!");
        }
    
        //重写的doGet方法
        protected void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {
            System.out.println("doGet!");
    
        }
    
    }

    注:现在要通过测试这四种方法的执行顺序,来间接测试Servlet生命周期。

    9.部署servlet:

     

    (1.)复制TestlLifeCycleServlet的class文件到D:Program Filesapache-tomcat-7.0.54webapps estWEB-INFclasses目录下。

    (具体方法见测试Servlet学习笔记博文,这里略去。)

    (2.)配置web.xml文件如下:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
       version="2.5"> 
    <!--第一次的配置--> <servlet> <servlet-name>HW</servlet-name> <servlet-class>HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HW</servlet-name> <url-pattern>/ab</url-pattern> </servlet-mapping>
    <!--这一次的配置--> <servlet> <servlet-name>TestlLifeCycleServlet</servlet-name> <servlet-class>TestlLifeCycleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>TestlLifeCycleServlet</servlet-name> <url-pattern>/TestlLifeCycleServlet</url-pattern> </servlet-mapping> </web-app>

     

    10.tomcat后台如果出现

    Roleading Context withname [/test] is to completed

     

    说明配置成功!

    11.运行后结果如下:

     

    三个方法调用顺序是先调用了自己构造的方法,其次是初始化方法,然后是doGet方法。destroy方法还没有被调用。

     

    12.再次刷新页面,发现只重新调用了doGet方法。

     

    13.书上说,destroy()在webapp退出的时候被调用

    退出时观看后台,结果后台关闭太快,根本来不及看到。

    注意:我的tomcat7.0,在目录D:Program Filesapache-tomcat-7.0.54in下有批处理:

    shutdownup.bat

    14.因此先关闭tomcat服务,输入命令:shutdownup

    然后输入命令:进入调试模式试试。

    开始——>运行——>cmd——>catalina debug.

    输入命令:run

    15.重新访问页面,

    输入命令?查看退出命令是什么。

    退出命令是exit或者quit。

    输入命令:quit。

    不行,直接退出了,根本无法看到。

    还有一种方法,将destroy方法修改成写一个文件记录下。

    这种方法由于时间关系,先不尝试,有时间再尝试。

    **************************************************************************

    15.现在先总结下:

    servlet的生命周期生命全过程:

    1.加载:ClassLoader

    2.实例化:new 新的对象,只调用一次,仅仅new一个对象

    3.初始化:init(ServletConfig)

      注释:该方法只执行一次,第一次初始化时被调用,ServletConfig内保存web.xml配置信息

    4.处理请求: service doGet doPost5.退出服务:destroy()在webapp退出的时候被调用

     

    *************************************************************************

    交流即分享,分享才能进步!

    博文中如有不当之处,欢迎各位前辈指出。

     

     

     

     

     

  • 相关阅读:
    线程池原理和实现
    线程
    ajax、xstream、json
    上传、下载、javamail
    过滤器
    监听器、国际化
    jsp、javabean、el
    jstl、标签
    jsp、cookie、httpsession
    个人觉得比较好用的chrome插件
  • 原文地址:https://www.cnblogs.com/xingyunblog/p/3766857.html
Copyright © 2020-2023  润新知