`

Java HttpGetServer HTTP 服务器

    博客分类:
  • Java
 
阅读更多
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.");
		}
	}
}

 

分享到:
评论

相关推荐

    java服务器server.zip

    在这个"server.zip"中,我们可能找到一个实现了HTTP服务器功能的Java程序,例如使用了Jetty、Tomcat或Undertow等开源服务器框架。这些服务器接收来自浏览器的HTTP请求,并根据请求的类型(如GET、POST)执行相应的...

    HttpServer.rar_ HttpServer_HTTPServer_httpserver服务器_http服务器_java

    这里我们关注的是一个名为"HttpServer"的软件包,它可能是一个用Java语言实现的轻量级HTTP服务器。让我们深入探讨一下这个主题。 首先,HTTP服务器的主要任务是处理客户端(如浏览器)通过HTTP协议发送的请求,如...

    java写的http服务器

    通常,服务器会监听一个端口,接收到请求后解析HTTP头,然后根据请求类型(如GET、POST)返回相应的响应,如200(成功)、304(未修改)或404(未找到)状态码。 描述中提到的200、304和404状态码是HTTP响应状态码...

    http.rar_HTTP java_http server java_java http_java web simple

    标题中的“http.rar_HTTP java_http server java_java web simple”表明这是一个关于使用Java实现HTTP服务器和简单Web应用的项目。这个项目可能包含了一个基础的HTTP服务器的源代码,以及可能的一个简单浏览器模拟器...

    android java http server

    在Android平台上,构建一个Java HTTP服务器是一个有趣且实用的技术挑战,尤其对于开发本地服务或测试网络功能的应用程序来说。这个项目可能涉及到以下关键知识点: 1. **Android基础知识**:理解Android应用程序的...

    java--http--web-server.zip_http server java_http服务_java http服务器

    在这个“java--http--web-server.zip”压缩包中,我们找到了一个基于Java实现的HTTP服务器的源代码。这个项目旨在帮助开发者理解如何使用Java来构建一个基础的HTTP服务器,这对于学习网络编程和服务器端开发非常有...

    HttpServer.zip_http servlet server_httpclient_http服务器_java https

    《构建Java HTTP服务器:HttpServlet、HttpClient与HTTPS详解》 在IT行业中,HTTP服务器是互联网应用的核心组件之一,用于接收并响应HTTP请求。本项目"HttpServer.zip"提供了一个独特的实现,它是一个全网唯一的...

    java json_server建议服务器代码

    本主题聚焦于“java json_server建议服务器代码”,提供了一个简单的服务器端程序,旨在帮助开发者快速搭建服务,以支持Android客户端的数据通信。下面将详细讨论相关知识点。 1. **JSON(JavaScript Object ...

    Server_Java服务器传文件_

    这里,我们将详细探讨如何利用Java实现在服务器端上传输文件,并结合提供的"Server1.java"源代码和"侠客行.txt"这个示例文件来解析相关知识点。 1. **Java服务器端开发环境** 在开始编程之前,确保你已经安装了...

    Java HTTP服务器 TJWS源码

    【Java HTTP服务器TJWS源码】是一款基于Java语言实现的轻量级HTTP服务器,它提供了基础的HTTP服务功能,适合学习和理解网络编程以及Java服务器端开发。TJWS,全称为Tiny Java Web Server,因其小巧且易于理解的源码...

    JAVA HTTP 发送 接收 com.sun.net.httpserver包 demo

    在Java中,我们可以使用多种库来实现HTTP通信,其中包括`com.sun.net.httpserver`包,这是一个内置的轻量级HTTP服务器,适用于测试、原型设计以及简单的应用。本示例将详细介绍如何使用`com.sun.net.httpserver`包...

    java实现http服务器实例

    你可以编写一个简单的HTTP客户端,如使用`curl`命令或者编写一个Java程序,向8080端口发送GET请求,以验证服务器是否能正确响应。 总的来说,通过这个实例,你可以学习到Java中创建基本HTTP服务器的步骤,以及如何...

    java实现Webserver

    本节代码实现了一个简单的 HTTP 服务器,展示了 HTTP 协议的基础知识,如处理 GET 请求、读取客户端请求信息、发送回应消息等。 4. Java 输入/输出流基础 在本节代码中,我们使用了 Java 输入/输出流来处理客户端...

    Http1.0ServerModel.rar_java http_web服务器

    这里,我们有一个名为"Http1.0ServerModel"的项目,它使用了Java来实现一个简单的HTTP 1.0服务器模型。这个项目包含三个文件:`ConnectionTread.java`、`WebServer.java`和`www.pudn.com.txt`。下面将详细解释这些...

    简单JAVA WEB服务器

    本项目“简单JAVA WEB服务器”旨在提供一个基础的平台,帮助学习者理解Java Web服务器的工作原理,特别是静态网页服务和JSP(Java Server Pages)的执行,以及Cookie的解析。 1. **多线程技术**:Java Web服务器...

    java实现web server功能

    本资源以"java实现web server功能"为主题,旨在教你如何使用Java编写一个简单的Web服务器,让我们一起深入探讨这个主题。 首先,理解Web服务器的基本工作原理至关重要。Web服务器接收客户端(通常是Web浏览器)发送...

    Java服务器高级编程

    Java服务器高级编程是Java开发领域中的重要主题,涵盖了在服务器端使用Java技术构建高效、可扩展和稳定的网络应用。这份资料可能包含了一系列深入的教程、最佳实践和实战案例,旨在帮助开发者提升在Java服务器端开发...

    java(简易)多线程HTTP服务器

    在这个项目中,我们利用Java的线程池和Socket库来实现这样一个服务器,它支持GET、POST以及单文件上传等基本的HTTP请求。 首先,让我们深入了解线程池的概念。线程池是一种线程使用模式,它通过预先创建一组可重用...

    Java环境服务器部署基本文档

    【Java环境服务器部署】 在Java应用的服务器部署中,首要任务是确保服务器上已经正确安装了Java Development Kit (JDK)。本文档介绍了在CentOS8操作系统上部署JDK的两种方式:免配版和配置版。 对于【免配版】的...

Global site tag (gtag.js) - Google Analytics