Have a simple HTTP server

本文介绍如何使用Java 1.6及以上版本内置的HttpServer API快速搭建简易HTTP服务器。通过两个示例展示了如何创建并运行一个监听8000端口的服务器,包括返回简单文本响应及提供文件下载的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.rgagnon.com/javadetails/java-have-a-simple-http-server.html

http://blog.youkuaiyun.com/defonds/article/details/6314723

Since Java 1.6, there's a built-in HTTP server included with the JDK.

The HttpServer provides a simple high-level Http server API, which can be used to build embedded HTTP servers.

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

/*
 * a simple static http server
*/
public class SimpleHttpServer {

  public static void main(String[] args) throws Exception {
    HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
    server.createContext("/test", new MyHandler());
    server.setExecutor(null); // creates a default executor
    server.start();
  }

  static class MyHandler implements HttpHandler {
    public void handle(HttpExchange t) throws IOException {
      String response = "Welcome Real's HowTo test page";
      t.sendResponseHeaders(200, response.length());
      OutputStream os = t.getResponseBody();
      os.write(response.getBytes());
      os.close();
    }
  }
}
Compile and execute. To access the local  server , open a browser at  http://localhost:8000/test .

The next HttpServer provides 2 contexts :

  • http://localhost:8000/info to display an informative message.
  • http://localhost:8000/get to download a specific PDF to the browser.
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.InetSocketAddress;
    
    import com.sun.net.httpserver.HttpExchange;
    import com.sun.net.httpserver.HttpHandler;
    import com.sun.net.httpserver.HttpServer;
    import com.sun.net.httpserver.Headers;
    
    public class SimpleHttpServer {
    
      public static void main(String[] args) throws Exception {
        HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
        server.createContext("/info", new InfoHandler());
        server.createContext("/get", new GetHandler());
        server.setExecutor(null); // creates a default executor
        server.start();
      }
    
      static class InfoHandler implements HttpHandler {
        public void handle(HttpExchange t) throws IOException {
          String response = "Use /get to download a PDF";
          t.sendResponseHeaders(200, response.length());
          OutputStream os = t.getResponseBody();
          os.write(response.getBytes());
          os.close();
        }
      }
    
      static class GetHandler implements HttpHandler {
        public void handle(HttpExchange t) throws IOException {
    
          // add the required response header for a PDF file
          Headers h = t.getResponseHeaders();
          h.add("Content-Type", "application/pdf");
    
          // a PDF (you provide your own!)
          File file = new File ("c:/temp/doc.pdf");
          byte [] bytearray  = new byte [(int)file.length()];
          FileInputStream fis = new FileInputStream(file);
          BufferedInputStream bis = new BufferedInputStream(fis);
          bis.read(bytearray, 0, bytearray.length);
    
          // ok, we are ready to send the response.
          t.sendResponseHeaders(200, file.length());
          OutputStream os = t.getResponseBody();
          os.write(bytearray,0,bytearray.length);
          os.close();
        }
      }
    }


    导入com.sun.net.httpserver可能会报错,用如下方法解决。

    Eclipse 编译错误 Access restriction:The type *** is not accessible due to restriction on... 解决方案

            Eclipse 编译时报错: 
            Access restriction:The type JPEGCodec is not accessible due to restriction on required library C:/Program Files/Java/jre6/lib/rt.jar 
            解决方法: 
            Project -> Properties -> libraries, 
            先 remove 掉 JRE System Library,然后再 Add Library 重新加入。 


### ENSP Server Configuration and Usage #### Overview of ENSP The Enterprise Network Simulation Platform (ENSP) is a powerful tool designed to simulate complex enterprise-level networks, allowing users to design, configure, test, and troubleshoot various networking scenarios without the need for physical devices[^1]. #### Installation Requirements To install and run an ENSP server effectively, ensure that the system meets minimum requirements including sufficient CPU power, memory, storage space, as well as having installed necessary software dependencies such as Java Runtime Environment or specific versions of Python depending on which version of ENSP one intends to deploy. #### Initial Setup Process After downloading and installing ENSP from official sources, launch the application through its executable file. During first-time setup, follow prompts carefully while configuring basic parameters like language settings, installation path selection, etc., until reaching the main interface where further configurations can be made according to project needs. #### Configuring Virtual Devices Within ENSP's graphical user interface, add virtual routers, switches, firewalls, servers, workstations, and other network components by dragging them onto the canvas area provided within the workspace window. Connect these elements using drag-and-drop lines representing different types of connections between nodes based upon desired topology designs. For each added device, specify detailed properties via context menus accessible after selecting individual items placed inside scenes created earlier during scene creation stages; this includes setting IP addresses, subnet masks, default gateways, DNS server information among others relevant attributes required when building realistic simulated environments closely resembling real-world counterparts found across diverse industries ranging from telecommunications service providers down to small businesses operating locally only. #### Running Simulations & Troubleshooting Common Issues Once all hardware pieces have been properly configured along with their interconnections established accordingly, start running simulations directly from menu options available at top bars located near toolbar sections positioned horizontally above drawing areas used previously throughout entire processes described so far hereunder. If any issues arise concerning connectivity problems experienced whilst performing tests over newly constructed models built up till now then consider checking cable link statuses shown visually alongside connection paths drawn manually before proceeding forward towards deeper analysis involving packet capture tools integrated into platforms themselves too if needed eventually though usually simple checks suffice most times around indeed! ```bash # Example command line instruction for starting ENSP simulation ./start_simulation.sh ``` --related questions-- 1. What are some common troubleshooting steps taken when encountering errors in ENSP? 2. How does ENSP compare against alternative network simulation solutions currently present within marketplaces today regarding features offered versus cost efficiency ratios achieved overall? 3. Can you provide examples demonstrating how enterprises leverage ENSP specifically toward enhancing cybersecurity measures implemented internally across organizational structures?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值