0

我创建了监听器类,

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: start: org.apache.catalina.LifecycleException: java.awt.HeadlessException。有关详细信息,请参阅 server.log。该模块尚未部署。

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

4

2 回答 2

0

首先,您不应该JOptionPane在 Servlet 上下文中使用,请记住您在服务器的 Web 环境中,没有人会看到消息使用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 上配置服务器,如果我没记错的话,它应该是 on

Tools -> Servers

在它里面你会找到一个启动选项卡,在那里你可以配置参数。

于 2013-10-30T04:37:47.657 回答
0

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

于 2013-10-30T04:38:48.517 回答