我创建了侦听器类,
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。有什么建议可以帮助我摆脱这种情况??? 提前谢谢。
答案 0 :(得分:0)
首先,你不应该在Servlet上下文中使用JOptionPane
记住你在服务器的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上配置服务器,如果我没记错,它应该在
上Tools -> Servers
在其中你会找到一个Startup选项卡,你可以在那里配置参数。
答案 1 :(得分:0)
大多数servlet容器在awt / swing无头模式下工作。在此模式下,许多awt / swing组件不起作用,请参阅http://www.oracle.com/technetwork/articles/javase/headless-136834.html。