gpt4 book ai didi

java - doGet 调用两次 jetty 服务器

转载 作者:搜寻专家 更新时间:2023-10-31 19:49:23 24 4
gpt4 key购买 nike

我在 Java 应用程序中使用嵌入式 jetty 服务器。但是 doGet() 方法被调用了两次。此外,由于 httpservlet 类的服务方法中的此 (method.equals(METHOD_GET)) 条件,它也被调用。

我尝试同时使用 chrome 和资源管理器发出请求,但结果相同。

谁能看出 doget 被调用两次的原因..

public class HelloServlet extends HttpServlet{
private String greeting="Hello World";
public HelloServlet(){}
public HelloServlet(String greeting)
{
this.greeting=greeting;
System.out.println("started the server" + greeting);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>"+greeting+"</h1>");
response.getWriter().println("session=" + request.getSession(true).getId());
count = count+1;
System.out.println(count);
response.getWriter().println("count=" + count);
response.flushBuffer();
}
}

public class OneServletContext{
public static void main(String[] args) throws Exception
{
Server server = new Server(8080);

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);
System.out.println("about to start the servlets");
context.addServlet(new ServletHolder(new HelloServlet()),"/*");
context.addServlet(new ServletHolder(new HelloServlet("Buongiorno Mondo")),"/it/*");
context.addServlet(new ServletHolder(new HelloServlet("Bonjour le Monde")),"/fr/*");

server.start();
System.out.println("started the servlets");
server.join();
}
}

最佳答案

当你用浏览器请求一个页面时,它也会请求一个图标。例如,对 http://foo.com 的请求还会请求 http://foo.com/favicon.ico .这就是在地址栏中放置小图标以帮助您识别站点的原因。它也是您对 servlet 的第二个请求的来源。尝试将此行添加到您的 servlet:

System.out.println("request URI=" + request.getRequestURI());

关于java - doGet 调用两次 jetty 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6783514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com