Java HTTP服务器System.out问题
所以我有一个任务,我必须用选择的编程语言创建一个HTTP服务器。没什么大不了的。我遇到了一个我似乎无法解决的问题。每次我加载主页和服务器响应时,它会打印大约5次。我不明白为什么。好吧,我的意思是: 代码片段:Java HTTP服务器System.out问题,java,http,sockets,system.out,Java,Http,Sockets,System.out,所以我有一个任务,我必须用选择的编程语言创建一个HTTP服务器。没什么大不了的。我遇到了一个我似乎无法解决的问题。每次我加载主页和服务器响应时,它会打印大约5次。我不明白为什么。好吧,我的意思是: 代码片段: while(true){ connectedClient = listenSocket.accept(); inFromClient = new BufferedReader( new InputStreamReader( connectedClient.getInput
while(true){
connectedClient = listenSocket.accept();
inFromClient = new BufferedReader( new InputStreamReader( connectedClient.getInputStream()));
outToClient = new DataOutputStream(connectedClient.getOutputStream());
String requestString = inFromClient.readLine();
String headerLine = requestString;
StringTokenizer tokenizer = new StringTokenizer(headerLine);
String httpMethod = tokenizer.nextToken();
String httpQueryString = tokenizer.nextToken();
requestString = inFromClient.readLine();
if (httpMethod.equals("GET")) {
if (httpQueryString.equals("/Home")) {
// The default home page status code 200
dateHeader();
connectionCloseHeader();
}
//other code not related
}
这是我的日期标题方法:
public static void dateHeader() throws Exception{
DateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z");
Date date = new Date();
System.out.println("Date: " + dateFormat.format(date));
}
我向终端的输出将是5个日期的打印输出。我确保连接等都已关闭,但同样的事情也发生了。有人知道为什么会这样吗?谢谢
编辑
似乎当我使用Chrome时,打印出来的一个没有问题。我在用Opera进行测试,这给了我5份打印件。也许是浏览器的工作方式导致了这个问题。不过我现在就用chrome吧。我不能马上解释五种不同的调用,但是如果你使用一个典型的浏览器访问这个HTTP服务器,你会立即看到两个请求:一个请求资源本身,一个请求favicon.ico。在请求处理程序的某个地方,您应该读入并打印出整个请求。然后,您可以确切地看到所有请求的目的。因此,返回的页面依次引用了一些资源,如图像、CSS、JS等,webbrowser也需要下载这些资源?它现在所做的就是向浏览器输出一条消息。页面现在没有传递任何内容。只是一个简单的向外到客户端的消息。但我似乎已经解决了这个问题。Hrmm我确实在使用浏览器进行连接。我有一个例子,我用同样的东西测试过,它有点复杂,它给了我3-5个不同的ONCE,不同的端口被接受。也许同样的事情正在发生?我不确定。我会尝试使用不同的浏览器。Hrmm我想我找到了原因。我使用Opera连接到服务器,我得到了5个优先级。但是如果我使用chrome,我会得到1。我有关于为什么会发生这种情况的理论,但不确定。你帮我意识到了一些事情,谢谢!