package com.httpget.test;
import java.io.*;
import java.net.*;
public class HttpGetServer {
// 服务器根目录,post.html, upload.html都放在该位置
public static String WEB_ROOT = "c:/root";
// 端口
private int port;
// 用户请求的文件的url
private String requestPath;
public HttpGetServer(String root, int port) {
WEB_ROOT = root;
this.port = port;
requestPath = null;
}
public final static boolean DEBUG = true;//调试用
private static int BUFFER_SIZE = 8096;//缓冲区大小
public void saveToFile(String destUrl, String fileName) throws IOException {
FileOutputStream fos = null;
BufferedInputStream bis = null;
HttpURLConnection httpUrl = null;
URL url = null;
byte[] buf = new byte[BUFFER_SIZE];
int size = 0;
// 建立链接
url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
// 连接指定的资源
httpUrl.connect();
// 获取网络输入流
bis = new BufferedInputStream(httpUrl.getInputStream());
// 建立文件
fos = new FileOutputStream(fileName);
if (this.DEBUG)
System.out.println("正在获取链接[" + destUrl + "]的内容...\n将其保存为文件["
+ fileName + "]");
// 保存文件
while ((size = bis.read(buf)) != -1)
fos.write(buf, 0, size);
fos.close();
bis.close();
httpUrl.disconnect();
}
// 处理GET请求
private void doGet(BufferedReader reader, OutputStream out) throws Exception {
if(this.requestPath.substring(1).indexOf("?")!=-1){
String serverUrl = this.requestPath.substring(this.requestPath.indexOf("?")+1);
System.out.println(serverUrl);
saveToFile(serverUrl,System.getProperty("user.home")+"//Termb.dll");
System.out.println(new File(System.getProperty("user.home")+"//Termb.dll").exists());
}
if (new File(WEB_ROOT + this.requestPath).exists()) {
//从服务器根目录下找到用户请求的文件并发送回浏览器
InputStream fileIn = new FileInputStream(WEB_ROOT + this.requestPath);
byte[] buf = new byte[fileIn.available()];
fileIn.read(buf);
out.write(buf);
out.close();
fileIn.close();
reader.close();
System.out.println("request complete.");
}
}
public void service() throws Exception {
ServerSocket serverSocket = new ServerSocket(this.port, 1, InetAddress
.getByName("localhost"));
System.out.println("server is ok.");
// 开启serverSocket等待用户请求到来,然后根据请求的类别作处理
while (true) {
Socket socket = serverSocket.accept();
System.out.println("new request coming.");
BufferedReader reader = new BufferedReader(new InputStreamReader(
socket.getInputStream(), "UTF-8"));
String line = reader.readLine();
String method = line.substring(0, 4).trim();
OutputStream out = socket.getOutputStream();
this.requestPath = line.split(" ")[1];
System.out.println(method);
this.doGet(reader, out);
socket.close();
System.out.println("socket closed.");
}
}
}
分享到:
相关推荐
在这个"server.zip"中,我们可能找到一个实现了HTTP服务器功能的Java程序,例如使用了Jetty、Tomcat或Undertow等开源服务器框架。这些服务器接收来自浏览器的HTTP请求,并根据请求的类型(如GET、POST)执行相应的...
这里我们关注的是一个名为"HttpServer"的软件包,它可能是一个用Java语言实现的轻量级HTTP服务器。让我们深入探讨一下这个主题。 首先,HTTP服务器的主要任务是处理客户端(如浏览器)通过HTTP协议发送的请求,如...
通常,服务器会监听一个端口,接收到请求后解析HTTP头,然后根据请求类型(如GET、POST)返回相应的响应,如200(成功)、304(未修改)或404(未找到)状态码。 描述中提到的200、304和404状态码是HTTP响应状态码...
标题中的“http.rar_HTTP java_http server java_java web simple”表明这是一个关于使用Java实现HTTP服务器和简单Web应用的项目。这个项目可能包含了一个基础的HTTP服务器的源代码,以及可能的一个简单浏览器模拟器...
在Android平台上,构建一个Java HTTP服务器是一个有趣且实用的技术挑战,尤其对于开发本地服务或测试网络功能的应用程序来说。这个项目可能涉及到以下关键知识点: 1. **Android基础知识**:理解Android应用程序的...
在这个“java--http--web-server.zip”压缩包中,我们找到了一个基于Java实现的HTTP服务器的源代码。这个项目旨在帮助开发者理解如何使用Java来构建一个基础的HTTP服务器,这对于学习网络编程和服务器端开发非常有...
《构建Java HTTP服务器:HttpServlet、HttpClient与HTTPS详解》 在IT行业中,HTTP服务器是互联网应用的核心组件之一,用于接收并响应HTTP请求。本项目"HttpServer.zip"提供了一个独特的实现,它是一个全网唯一的...
本主题聚焦于“java json_server建议服务器代码”,提供了一个简单的服务器端程序,旨在帮助开发者快速搭建服务,以支持Android客户端的数据通信。下面将详细讨论相关知识点。 1. **JSON(JavaScript Object ...
这里,我们将详细探讨如何利用Java实现在服务器端上传输文件,并结合提供的"Server1.java"源代码和"侠客行.txt"这个示例文件来解析相关知识点。 1. **Java服务器端开发环境** 在开始编程之前,确保你已经安装了...
【Java HTTP服务器TJWS源码】是一款基于Java语言实现的轻量级HTTP服务器,它提供了基础的HTTP服务功能,适合学习和理解网络编程以及Java服务器端开发。TJWS,全称为Tiny Java Web Server,因其小巧且易于理解的源码...
在Java中,我们可以使用多种库来实现HTTP通信,其中包括`com.sun.net.httpserver`包,这是一个内置的轻量级HTTP服务器,适用于测试、原型设计以及简单的应用。本示例将详细介绍如何使用`com.sun.net.httpserver`包...
你可以编写一个简单的HTTP客户端,如使用`curl`命令或者编写一个Java程序,向8080端口发送GET请求,以验证服务器是否能正确响应。 总的来说,通过这个实例,你可以学习到Java中创建基本HTTP服务器的步骤,以及如何...
本节代码实现了一个简单的 HTTP 服务器,展示了 HTTP 协议的基础知识,如处理 GET 请求、读取客户端请求信息、发送回应消息等。 4. Java 输入/输出流基础 在本节代码中,我们使用了 Java 输入/输出流来处理客户端...
这里,我们有一个名为"Http1.0ServerModel"的项目,它使用了Java来实现一个简单的HTTP 1.0服务器模型。这个项目包含三个文件:`ConnectionTread.java`、`WebServer.java`和`www.pudn.com.txt`。下面将详细解释这些...
本项目“简单JAVA WEB服务器”旨在提供一个基础的平台,帮助学习者理解Java Web服务器的工作原理,特别是静态网页服务和JSP(Java Server Pages)的执行,以及Cookie的解析。 1. **多线程技术**:Java Web服务器...
本资源以"java实现web server功能"为主题,旨在教你如何使用Java编写一个简单的Web服务器,让我们一起深入探讨这个主题。 首先,理解Web服务器的基本工作原理至关重要。Web服务器接收客户端(通常是Web浏览器)发送...
Java服务器高级编程是Java开发领域中的重要主题,涵盖了在服务器端使用Java技术构建高效、可扩展和稳定的网络应用。这份资料可能包含了一系列深入的教程、最佳实践和实战案例,旨在帮助开发者提升在Java服务器端开发...
在这个项目中,我们利用Java的线程池和Socket库来实现这样一个服务器,它支持GET、POST以及单文件上传等基本的HTTP请求。 首先,让我们深入了解线程池的概念。线程池是一种线程使用模式,它通过预先创建一组可重用...
【Java环境服务器部署】 在Java应用的服务器部署中,首要任务是确保服务器上已经正确安装了Java Development Kit (JDK)。本文档介绍了在CentOS8操作系统上部署JDK的两种方式:免配版和配置版。 对于【免配版】的...