用Java包com.sun.net.httpserver下面的类实现一个简单的http服务器demo

java的com.sun.net.httpserver包下的类提供了一个高层级的http服务器API,可以用来构建内嵌的http服务器。支持http和https。这些API提供了一个RFC 2616 (HTTP 1.1)和RFC 2818 (HTTP over TLS)的部分实现。
https://docs.oracle.com/en/java/javase/19/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html
在这里插入图片描述

下面来实现一个简单的demo。

代码示例:

package com.thb;import com.sun.net.httpserver.HttpContext;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class Demo {public static void main(String[] args) throws IOException {// 用端口号8082、backlog数量等于5创建一个HttpServerfinal HttpServer server = HttpServer.create(new InetSocketAddress(8082), 5);// 创建线程池final ExecutorService threads = Executors.newFixedThreadPool(3);// 设置线程池server.setExecutor(threads);// 启动HttpServerserver.start();// 创建一个上下文HttpContext context = server.createContext("/hello");// 设置上下文的HttpHandlercontext.setHandler(new HttpHandler() {// 实现接口的函数public void handle(HttpExchange exchange) throws IOException {// 开始发送响应给客户端exchange.sendResponseHeaders(200, 0);// 取得输出流,用来写入输出内容OutputStream out = exchange.getResponseBody();out.write("welcome! You are success.".getBytes());out.flush();out.close();exchange.close();}});}}

首先查看端口号8082,没有被占用:
在这里插入图片描述

运行上面的程序,再查看端口号8082,已经被占用了,说明http服务器已经启动了:
在这里插入图片描述

在浏览器中输入网址http://localhost:8082/hello,看到了期望的内容,说明http服务器能够正常访问了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/139061.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django 访问静态文件的APP staticfiles

Django 框架默认带的 APP: django.contrib.staticfiles Django文档中也写明了:如何管理静态文件(如图片、JavaScript、CSS) |姜戈 文档 |姜戈 (djangoproject.com)https://docs.djangoproject.com/zh-hans/4.2/howto/static-file…

【C++11新特性】右值引用和移动语义(移动构造,移动赋值)

文章目录 前言一、列表初始化(不同于初始化列表)二、initializer_list三、decltype关键字四、nullptr五、右值引用移动拷贝和移动赋值被编译器识别成将亡值的原因 左值引用和右值引用的场景和价值右值引用的场景move函数 六、关于右值引用的功能和属性问…

PFL-MoE:基于混合专家的个性联邦学习

文章链接:PFL-MoE: Personalized Federated Learning Based on Mixture of Experts 发表会议:APWeb-WAIM 2021(CCF-C) 目录 1.背景介绍联邦学习non-IIDPFL 2.内容摘要关键技术A.PFL-MoEB.PFL-MFC.PFL-MFE 实验结果 3.文章总结 1.…

创新与重塑,佛塑科技打造集团型 CRM 建设标杆

“十四五”时期是我国全面建成小康社会、实现第一个百年奋斗目标之后,乘势而上开启全面建设社会主义现代化国家新征程、向第二个百年奋斗目标进军的第一个五年。 在政府有序推进“十四五”规划的进程中,佛山佛塑科技集团股份有限公司(证券简…

PyTorch 深度学习之循环神经网络(基础篇)Basic RNN(十一)

0.Revision: DNN dense 重义层 全连接 RNN处理带有序列的数据 1. What is RNNs? linear layer 1.1 What is RNN? tanh (-1, 1) 1.2 RNN Cell in PyTorch 1.3 How to use RNNCell *先把维度搞清楚 多了一个序列的维度 2. How to use RNN 2.1 How to use RNN - numLayers…

基于SpringBoot的医疗预约服务管理系统

基于SpringBootVue的医疗预约服务管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登陆界面 管理员界面 医生界面 会员界面 摘要 基于SpringBoot的…

大模型Agent最新论文及源码合集,覆盖构建、应用、评估

人们对于通用人工智能(AGI)的追求可以追溯到1950 年代中期,当时的AI研究者对机器拥有人类思维能力抱有很高的期望,但是随着研究的深入,他们发现想实现这个目标比最初设想的困难许多。到如今,AGI仍然有很长的…

安防视频监控EasyCVR平台修改默认数据为MySQL,但忘记登录密码该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频监控平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录…

机器视觉、图像处理和计算机视觉:概念和区别

机器视觉、图像处理和计算机视觉:概念和区别 机器视觉、图像处理和计算机视觉是相关但有区别的概念。 机器视觉主要应用于工业领域,涉及图像感知、图像处理、控制理论和软硬件的结合,旨在实现高效的运动控制或实时操作。 图像处理是指利用…

QT中使用QVTKOpenGLNativeWidget的简单教程以及案例,利用PCLVisualizer显示点云

先添加一个带有ui的QT应用程序。 一、在ui界面中添加QVTKOpenGLNativeWidget控件 先拖出来一个QOpenGLWidget控件 修改布局如下: 然后将QOpenGLWidget控件提升为QVTKOpenGLNativeWidget控件,步骤如下: 右击QOpenGLWidget窗口,选…

FPGA project : flash_write

本实验重点学习了: flash的页编程指令pp。 在写之前要先进行擦除(全擦除和页擦除); 本实验:先传写指令,然后进入写锁存周期,然后传页编程指令,3个地址; 然后传数据&a…

项目管理之生命周期管理

项目生命周期管理矩阵是项目管理中一个重要的概念,它包括了项目从准备到收尾的各个阶段。项目生命周期管理矩阵以四个主要管理阶段为基础,分别为准备阶段、启动阶段、执行阶段和收尾阶段。这四个阶段在项目管理中有着明确的目标和职责,贯穿了…