电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java 實現簡單靜態資源Web服務器的示例

瀏覽:49日期:2022-08-21 10:38:11

需求

有時候我們想快速通過http訪問本地的一些資源,但是安裝一些web服務器又很費時和浪費資源,而且也不是長期使用的。

這時候我們可以啟動一個小型的java服務器,快速實現一個http的靜態資源web服務器。

難點

其實沒什么難點,主要是注意請求頭和返回頭的處理。然后將請求的文件以流的方式讀入返回outputstream即可。

代碼

直接上代碼吧~

import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths; public class ResourceWebServer { private static final int SERVER_PORT = 8888; private static final int MAX_CONNECTION_LENGTH = 1; public static void main(String[] args) throws IOException {log('======服務器啟動=====');ResourceWebServer server = new ResourceWebServer();server.startServer(); } public void startServer() throws IOException {ServerSocket serverSocket = new ServerSocket(SERVER_PORT, MAX_CONNECTION_LENGTH, InetAddress.getByName('localhost')); log('======準備接收請求=====');while (true) { Socket socket = serverSocket.accept(); try (InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream()) { String requestUri = getRequestUri(inputStream);log('請求文件:' + requestUri); writeHeaders(outputStream); Path path = Paths.get(getClass().getClassLoader().getResource(requestUri.substring(1)).toURI());Files.copy(path, outputStream); } catch (Exception e) {log('發生錯誤啦!');e.printStackTrace(); }} } private void writeHeaders(OutputStream outputStream) throws IOException {//必須包含返回頭,否則瀏覽器不識別outputStream.write('HTTP/1.1 200 OKrn'.getBytes());//一個rn代表換行添加新的頭,2次rn代表頭結束outputStream.write('Content-Type: text/htmlrnrn'.getBytes()); } private String getRequestUri(InputStream inputStream) throws IOException {StringBuilder stringBuilder = new StringBuilder(2048);byte[] buffer = new byte[2048];int size = inputStream.read(buffer); for (int i = 0; i < size; i++) { stringBuilder.append((char) buffer[i]);} String requestUri = stringBuilder.toString();//此時的uri還包含了請求頭等信息,需要去掉//GET /index.html HTTP/1.1...int index1, index2;index1 = requestUri.indexOf(' ');if (index1 != -1) { index2 = requestUri.indexOf(' ', index1 + 1); if (index2 > index1) {return requestUri.substring(index1 + 1, index2); }}return ''; } private static void log(Object object) {System.out.println(object); }}

接下來,就可以在resource文件下放入靜態資源啦,比如放一個index.html

然后啟動,打開瀏覽器輸入http://localhost:8888/index.html就能看到結果了!

以上就是Java 實現簡單靜態資源Web服務器的示例的詳細內容,更多關于java 實現web服務器的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 昆明挖掘机修理厂_挖掘机翻新再制造-昆明聚力工程机械维修有限公司 | 风信子发稿-专注为企业提供全球新闻稿发布服务 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 中原网视台| 防堵吹扫装置-防堵风压测量装置-电动操作显示器-兴洲仪器 | 全自动定氮仪-半自动凯氏定氮仪厂家-祎鸿仪器 | IP检测-检测您的IP质量| 高速混合机_锂电混合机_VC高效混合机-无锡鑫海干燥粉体设备有限公司 | 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | 大巴租车平台承接包车,通勤班车,巴士租赁业务 - 鸿鸣巴士 | 电动百叶窗,开窗器,电动遮阳百叶,电动开窗机生产厂家-徐州鑫友工控科技发展有限公司 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 上海网站建设-上海网站制作-上海网站设计-上海做网站公司-咏熠软件 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 地脚螺栓_材质_标准-永年县德联地脚螺栓厂家 | 在线PH计-氧化锆分析仪-在线浊度仪-在线溶氧仪- 无锡朝达 | 27PR跨境电商导航 | 专注外贸跨境电商 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 防水套管厂家_刚性防水套管_柔性防水套管_不锈钢防水套管-郑州中泰管道 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 工业硝酸钠,硝酸钠厂家-淄博「文海工贸」| 酵素生产厂家_酵素OEM_酵素加盟_酵素ODM_酵素原料厂家_厦门益力康 | Pos机办理_个人商户免费POS机申请-拉卡拉办理网 | 联系我们老街华纳娱乐公司官网19989979996(客服) | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 步进电机_agv电机_伺服马达-伺服轮毂电机-和利时电机 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 江苏远邦专注皮带秤,高精度皮带秤,电子皮带秤研发生产 | MES系统工业智能终端_生产管理看板/安灯/ESOP/静电监控_讯鹏科技 | 2025福建平潭岛旅游攻略|蓝眼泪,景点,住宿攻略-趣平潭网 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | 农产品溯源系统_农产品质量安全追溯系统_溯源系统 | 二手回收公司_销毁处理公司_设备回收公司-找回收信息网 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 四川职高信息网-初高中、大专、职业技术学校招生信息网 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 |