我正在尝试理解以下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。我的理解是否正确?
答案 0 :(得分:1)
创建类的新实例时,不会调用main
方法。系统调用它来启动整个过程。
答案 1 :(得分:0)
没有。 main
方法用作java程序的入口点。它被调用一次,在这种情况下,创建了一个testserver实例。实际上,创建实例不会再次调用main方法。
答案 2 :(得分:0)
您需要包含import
语句才能使其正确或正确,因此我们确切知道哪个类Server
。我希望这是一个Web服务器框架(可能是Jetty嵌入式)的测试工具。
main
仅运行一次。它将创建一个Server
实例,然后创建一个testserver
实例(而不是多个实例)。然后testserver
实例将处理请求。
答案 3 :(得分:0)
main
方法是JVM调用的类的入口点。致电
new testserver()
通过默认的no-args构造函数创建该类的新实例。 main方法是static(或类级),因此在调用构造函数之前,实际上并没有testserver的实例。