繁体   English   中英

执行Servlet事件的问题

[英]Issues with executing Servlet Events

我已经创建了侦听器类,

import javax.servlet.*;
import javax.servlet.http.*;
import javax.swing.*;

public class ContextListener implements ServletContextListener
{
    public void contextInitialized(ServletContextEvent sce)
    {
        JOptionPane.showMessageDialog(null,"Context Initialized");
    }
    public void contextDestroyed(ServletContextEvent sce)
    {
        JOptionPane.showMessageDialog(null,"Context Destroyed");
    }
}

我的欢迎页面是一个servlet,如下所示:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class WelcomeContextListener extends HttpServlet 
{
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
    {
        response.setContentType("text/html");
        PrintWriter out=response.getWriter();
        out.println("<h1>Hello World</h1>");
    }
}

我在web.xml文件中添加了以下代码,

<listener>
        <listener-class>ContextListener</listener-class>
</listener>

现在,当我运行上述Web应用程序时,会发生以下错误,

部署期间发生错误:加载应用程序时发生异常:java.lang.IllegalStateException:ContainerBase.addChild:开始:org.apache.catalina.LifecycleException:java.awt.HeadlessException。 请参阅server.log以获取更多详细信息。 该模块尚未部署。

我正在使用Netbeans IDE。 在这种情况下有什么建议可以帮助我吗??? 提前致谢。

首先,您不应该在服务器的Web环境中的Servlet上下文中使用JOptionPane ,没人会看到使用System.out.println的消息并遵循日志文件或某些log4j日志类。

然后

<listener-class>ContextListener</listener-class>

应该是整个包装

<listener-class>com.blahsomething.ContextListener</listener-class>

对于java.awt.HeadlessException

将此添加到您的tomcat启动参数

-Djava.awt.headless=true

要在Netbeans IDE上配置服务器,如果我没记错的话,它应该在

Tools -> Servers

在其中,您会找到一个启动选项卡,您可以在其中配置参数。

大多数Servlet容器都以awt / swing无头模式工作。 在这种模式下,许多awt / swing组件不起作用,请参见http://www.oracle.com/technetwork/articles/javase/headless-136834.html

暂无
暂无

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

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