繁体   English   中英

在Java Servlet中调试init()方法

[英]Debugging the init() method in a Java servlet

据我所知,Tomcat服务器是如何工作的,就是如果您的Web应用程序中有Java servlet,则每当服务器启动时都会调用init()方法。

在这种情况下,如何调试init()方法? 明确地设置断点是行不通的,并且由于某些原因, System.out.println语句也不会在服务器控制台上产生任何输出。

我检查了是否部署了正确的Web应用程序( .war ),并将其正确提取到Tomcat服务器的webapps文件夹中。

在我看来,您的部署描述符Servlet声明load-on-startup值不大于0。如果省略了该元素,则仅在容器认为应处理请求时才初始化Servlet 在此之前,不会调用init方法。

通过提供load-on-startup值,像这样

 <servlet>
    <servlet-name>servlet</servlet-name>
    <servlet-class>com.example.YourServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

您要告诉容器立即初始化Servlet ,因此在启动时(而不是在对该Servlet的第一个请求到达时)调用init方法。

这是不正确的,服务器启动时不会调用init()方法。 它仅被调用一次,并且在同一个init()方法所属的SERVLET的第一次调用期间被调用

由于每个Serlvet都有一个init(),因此当您首次调用servlet时,将为各个servlet调用init()。 即在容器加载servlet并实例化之后,然后调用init()方法。

要么做,

  • 在web.xml中为Servlet启动时加载
  • 给Serlvet打电话(第一次打电话后,您应该在控制台中看到println语句)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM