Java如何在建立TCP连接后处理HTTP GET请求
因此,在建立我的听力连接并接受连接后:Java如何在建立TCP连接后处理HTTP GET请求,java,http-request,Java,Http Request,因此,在建立我的听力连接并接受连接后: ServerSocket serverSock = new ServerSocket(6789); Socket sock = serverSock.accept(); 当我在浏览器中键入localhost:6789/index.html时,我如何处理这个传入的GET请求并返回index.htmlindex.html位于同一目录中 首先,我想确认index.html确实存在,如果不存在,我将返回一条HTTP404消息。然后我将关闭连接。如果您只需要一个基
ServerSocket serverSock = new ServerSocket(6789);
Socket sock = serverSock.accept();
当我在浏览器中键入localhost:6789/index.html
时,我如何处理这个传入的GET请求并返回index.html
index.html
位于同一目录中
首先,我想确认
index.html
确实存在,如果不存在,我将返回一条HTTP404消息。然后我将关闭连接。如果您只需要一个基于Java的web服务器来为您处理HTTP请求,那么您应该看看它,它会自动返回静态文件,还允许您定义Java代码以提供对特定请求的自定义响应
您应该阅读一些Tomcat快速入门指南,并对Java servlet和JSP有基本的了解
另一种更容易设置和配置的方法是,因此您可能还想看看该方法。处理GET和其他请求实际上非常简单,但您必须了解该方法的规范 首先要做的是获取客户端的
SocketInputStream
,以及要返回的文件路径。HTTP请求的第一行是这样的:GET/index.html HTTP/1.1
。下面是这样做的代码示例:
SocketInputStream sis = sock.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(sis));
String request = br.readLine(); // Now you get GET index.html HTTP/1.1
String[] requestParam = request.split(" ");
String path = requestParam[1];
创建一个新的文件
对象并检查该文件是否存在。如果文件不存在,则向客户端返回404响应。否则,您将读取文件并将其内容发送回客户端:
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
File file = new File(path);
if( !file.exist()){
out.write("HTTP 404") // the file does not exists
}
FileReader fr = new FileReader(file);
BufferedReader bfr = new BufferedReader(fr);
String line;
while((line = bfr.readLine()) != null){
out.write(line);
}
bfr.close();
br.close();
out.close();
以下是完整的代码摘要:
ServerSocket serverSock = new ServerSocket(6789);
Socket sock = serverSock.accept();
InputStream sis = sock.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(sis));
String request = br.readLine(); // Now you get GET index.html HTTP/1.1`
String[] requestParam = request.split(" ");
String path = requestParam[1];
PrintWriter out = new PrintWriter(sock.getOutputStream(), true);
File file = new File(path);
if (!file.exists()) {
out.write("HTTP 404"); // the file does not exists
}
FileReader fr = new FileReader(file);
BufferedReader bfr = new BufferedReader(fr);
String line;
while ((line = bfr.readLine()) != null) {
out.write(line);
}
bfr.close();
br.close();
out.close();
你写这篇文章是为了学习吗?有许多现成的基于Java的web服务器可用于处理HTTP请求。@codebox不,我对Java相当陌生。你能给我举一个适合我需要的例子吗?迪米特里干杯,你能解释为什么只有当我键入
localhost:6789/index.html
而不是localhost:6789/blahblah
时才提供“index.html”吗?哪一行检查这个?编辑:很抱歉,在编辑此评论时,我的internet连接已断开。这是因为blahblah未托管在您的服务器中。请参阅我的完整编辑答案