4.23日,对于第四个war包的相关记录与问题回答
先打开readme.jsp,查看老师所给出第四个war包需要回答的问题,可以看出都是上课时老师有提到的内容,对我们的要求就是先观察页面输出,然后在服务器中进行运行,然后观察console的输出,还需要用插旗观察程序的运行情况
一步一步来,首先先观察源程序代码
源码中给出很多输出,每当你进行 *** 作时,你的网络页面与console都会进行相应的输出,当我运行index.html时,网络页面展示为
我们运行了此html文件,之后点击激活servlet选项,页面显示已经被访问了一次,然后刷新页面,页面提示重新提交表单,确认之后,可以看到servlet被访问两次
刚才展示的是在网页中的展现,在console中,输出结果为
可以看到这边显示中没有对于当时LifeServlet.java文件中的destory()方法进行执行,对于这个 *** 作需要要求我们关闭服务器,然后摧毁实现,但当我进行了此 *** 作,也并无相应输出
我用的server是tomcat,当我在ie上运行servlet程序,关闭ie或者关闭tomcat都不能测试到其destroy()被执行。我在destroy()中设定在日志文件输出执行信息。所以如果destroy()被执行,查看日志文件应该可以发现的
并且我还有这个问题:
如果destroy()只在tomcat关闭时才执行,那不是只要客户端运行servlet,在服务器端都会有实例在运行,所有的实例都只能等到服务器关闭时才会全部执行destroy(),这样的话服务器开的时间越长,其上运行的实例不是越来越多?哪怕客户端早已不再执行该servlet.
在进行搜索后我了解到,之前无法释放问题的解决方案:我是在eclipse javaee版本中尝试的,不要用console中的terminate那个红色按钮,找到服务器server界面,右击stop,就可以看见destory()方法的调用
那么如何按照老师要求,通过插旗来观察程序运行情况呢
插旗其实就是,在程序中,插入变量输出,通过输出结果,了解观察程序运行情况,程序中的“System.out.println(“该Servlet的doGet方法被执行了一次”);”
“System.out.println(“该Servlet的doPost方法被执行了一次”);”
便是插旗法的运用,总的来说第四个war包难度也较为简单
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)