关于一段java服务器程序的问题

时间:2011-05-17 15:39:30

标签: java

我正在尝试理解以下Java代码段,它是作为简单服务器实现的

public class testserver extends AbstractHandler
{
   public void handle(String target,
                   Request baseRequest,
                   HttpServletRequest request,
                   HttpServletResponse response) 
    throws IOException, ServletException
 {
    response.setContentType("movie/html");
    response.setStatus(HttpServletResponse.SC_OK);
    baseRequest.setHandled(true);
    response.getWriter().println("<h1>this is a test</h1>");
 }

public static void main(String[] args) throws Exception
{
    Server server = new Server(1234);
    server.setHandler(new testserver());

    server.start();
    server.join();
}

}

我对这段代码的逻辑感到困惑。具体来说,在“主”功能中,它有

server.setHandler(new testserver());

我知道这是创建一个新服务器。但是这个主要功能包含在testserver本身的类中。所以它起到递归调用自身的作用,它会创建很多testserver。我的理解是否正确?

4 个答案:

答案 0 :(得分:1)

创建类的新实例时,不会调用main方法。系统调用它来启动整个过程。

答案 1 :(得分:0)

没有。 main方法用作java程序的入口点。它被调用一次,在这种情况下,创建了一个testserver实例。实际上,创建实例不会再次调用main方法。

答案 2 :(得分:0)

您需要包含import语句才能使其正确或正确,因此我们确切知道哪个类Server。我希望这是一个Web服务器框架(可能是Jetty嵌入式)的测试工具。

编辑:是的,它的码头。当以此类作为目标启动JVM时,main仅运行一次。它将创建一个Server实例,然后创建一个testserver实例(而不是多个实例)。然后testserver实例将处理请求。

答案 3 :(得分:0)

main方法是JVM调用的类的入口点。致电

new testserver()

通过默认的no-args构造函数创建该类的新实例。 main方法是static(或类级),因此在调用构造函数之前,实际上并没有testserver的实例。