我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java基于IDEA如何实现http编程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java基于IDEA如何实现http编程

这篇文章主要介绍了Java基于IDEA如何实现http编程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

java基本数据类型有哪些

Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮点类型,用来表示小数的数据类型。3、字符类型,字符类型的关键字是“char”。4、布尔类型,是表示逻辑值的基本数据类型。

http开发前言之为什么要有应用层

我们已经学过TCP/IP , 已经知道目前数据能从客户端进程经过路径选择跨网络传送到服务器端进程 [ IP+Port ],可是,仅仅把数据从A点传送到B点就完了吗?这就好比,在淘宝上买了一部手机,卖家[ 客户端 ]把手机通过顺丰[ 传送+路径选择 ] 送到买家 [ 服务器 ] 手里就完了吗?当然不是,买家还要使用这款产品,还要在使用之后,给卖家打分评论。所以,我们把数据从A端传送到B端, TCP/IP 解决的是顺丰的功能,而两端还要对数据进行加工处理或者使用,所以我们还需要一层协议,不关心通信细节,关 心应用细节! 这层协议叫做应用层协议。而应用是有不同的场景的,所以应用层协议是有不同种类的,其中经典协议 之一的HTTP就是其中的佼佼者。那么, Http 是解决什么应用场景呢? 早期用户,上网使用浏览器来进行上网,而用浏览器上网阅读信息,最常见的是查看各种网页【其实也 是文件数据,不过是一系列的html 文档,当然还有其他资源如图片, css , js 等】,而要把网页文件信息通过网络传送到客户端,或者把用户数据上传到服务器,就需要Http 协议【当然,http作用不限于此】

1.2再谈 "协议"

那如何理解应用层协议呢?再回到我们刚刚说的买手机的例子,顺丰相当于TCP/IP 的功能,那么买回来的手机都附带了说明书【产品介绍,使用介绍,注意事项等】,而该说明书指导用户该如何使用手机 【虽然我们都不看,但是父母辈有部分是有看说明书的习惯的:)】,此时的说明书可以理解为用户层 协议

1.3HTTP协议

虽然我们说, 应用层协议是我们程序猿自己定的.

但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一.

1.4认识URL

平时我们俗称的 “网址” 其实就是说的 URL

Java基于IDEA如何实现http编程

一、HTTP格式- 编程前最需要掌握的知识点

Java基于IDEA如何实现http编程

HTTP请求

Java基于IDEA如何实现http编程

首行: [方法] + [url] + [版本]
Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度;
HTTP响应

Java基于IDEA如何实现http编程

首行: [版本号] + [状态码] + [状态码解释]
Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在body中.

HTTP常见Header
Content-Type: 数据类型(text/html等) Content-Length: Body的长度
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上; User-Agent: 声明用户的操作系统和浏览器版本信息;
referer: 当前页面是从哪个页面跳转过来的;
location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;
好了,准备知识已经就绪,可以开始编程了

二、IDEA实现HTTP服务端的开发

创建java项目

代码如下(示例):

Java基于IDEA如何实现http编程

Java基于IDEA如何实现http编程

设置端口号

代码如下(示例):

private static final int port = 9004;

创建一个 TCP 服务器

   // 1.创建一个 TCP 服务器            ServerSocket serverSocket = new ServerSocket(port);            System.out.println("服务器已启动~");

等待客户端连接

  // 2.等待客户端连接            Socket socket = serverSocket.accept();

构建读、写对象

try (BufferedReader reader = new BufferedReader(                    new InputStreamReader(socket.getInputStream()));                 BufferedWriter writer = new BufferedWriter(                         new OutputStreamWriter(socket.getOutputStream()))            ) {                // 得到客户端信息                // 得到首行信息                String firstLine = reader.readLine();                String[] firstLineArr = firstLine.split(" ");                // 方法类型                String method = firstLineArr[0];                // uri                String uri = firstLineArr[1];                // http 版本号                String httpVersion = firstLineArr[2];                System.out.println(String.format("首行信息 -> 方法类型:%s,URI:%s,HTTP版本号:%s",                        method, uri, httpVersion));                // 5.构建返回内容                String content = "";                if (uri.contains("404")) {                    content = "<h2>没有找到此页面</h2>"; //此处可以编写HTML                } else if (uri.contains("200")) {                    content = "<h2>你好,世界</h2>";                }

内容输出

 while (true) {                    // 6.内容输出                    // 输出首行信息                    if(httpVersion!=null) {                        writer.write(String.format("%s 200 ok", httpVersion) + "\n");                        // 输出 head                        writer.write("Content-Type: text/html;charset=utf-8\n");                        writer.write("Content-Length: " + content.getBytes().length + "\n");                        // 输出空行                        writer.write("\n");                        writer.write(content);                        writer.flush();                    }

完整代码:

import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class Http {            // 端口号        private static final int port = 9004;        public static void main(String[] args) throws IOException {            // 1.创建一个 TCP 服务器            ServerSocket serverSocket = new ServerSocket(port);            System.out.println("服务器已启动~");            // 2.等待客户端连接            Socket socket = serverSocket.accept();            // 3.构建读、写对象            try (BufferedReader reader = new BufferedReader(                    new InputStreamReader(socket.getInputStream()));                 BufferedWriter writer = new BufferedWriter(                         new OutputStreamWriter(socket.getOutputStream()))            ) {                // 4.得到客户端信息                // 得到首行信息                String firstLine = reader.readLine();                String[] firstLineArr = firstLine.split(" ");                // 方法类型                String method = firstLineArr[0];                // uri                String uri = firstLineArr[1];                // http 版本号                String httpVersion = firstLineArr[2];                System.out.println(String.format("首行信息 -> 方法类型:%s,URI:%s,HTTP版本号:%s",                        method, uri, httpVersion));                // 5.构建返回内容                String content = "";                if (uri.contains("404")) {                    content = "<h2>没有找到此页面</h2>";                } else if (uri.contains("200")) {                    content = "<h2>你好,世界</h2>";                }                while (true) {                    // 6.内容输出                    // 输出首行信息                    if(httpVersion!=null) {                        writer.write(String.format("%s 200 ok", httpVersion) + "\n");                        // 输出 head                        writer.write("Content-Type: text/html;charset=utf-8\n");                        writer.write("Content-Length: " + content.getBytes().length + "\n");                        // 输出空行                        writer.write("\n");                        writer.write(content);                        writer.flush();                    }                }            }        }    }

三、程序运行测试

Java基于IDEA如何实现http编程

Java基于IDEA如何实现http编程

Java基于IDEA如何实现http编程

感谢你能够认真阅读完这篇文章,希望小编分享的“Java基于IDEA如何实现http编程”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java基于IDEA如何实现http编程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java基于IDEA如何实现http编程

这篇文章主要介绍了Java基于IDEA如何实现http编程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用
2023-06-14

基于Java实现Socket编程的方法

这篇文章主要介绍“基于Java实现Socket编程的方法”,在日常操作中,相信很多人在基于Java实现Socket编程的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于Java实现Socket编程的方法
2023-06-29

Java基于quasar如何实现协程池

这篇文章主要介绍了Java基于quasar如何实现协程池,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。业务场景:golang与swoole都拥抱了协程,在同任务并发数量下,协程可比线程多几倍。所以最近在查询java时了解
2023-07-02

Java基于TCP如何实现简单聊天程序

本篇内容介绍了“Java基于TCP如何实现简单聊天程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、如何实现TCP通信要实现TCP通信需
2023-06-29

Java如何实现基于数组的表

这篇文章将为大家详细讲解有关Java如何实现基于数组的表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。没看过 其他语言版的数据结构,但觉得java的实现方法很巧妙--用类和对象来实现.基于数组的表,思想很
2023-06-03

java基于NIO如何实现群聊模式

这篇文章将为大家详细讲解有关java基于NIO如何实现群聊模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下Clientpackage com.qst.chat;import java.io.
2023-06-21

Java基于NIO如何实现群聊系统

这篇文章主要为大家展示了“Java基于NIO如何实现群聊系统”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java基于NIO如何实现群聊系统”这篇文章吧。具体内容如下实例要求:1.编写一个 NI
2023-06-21

Java实现基于UDP协议的网络通信UDP编程

在Java中使用UDP编程,仍然需要使用Socket,因为应用程序在使用UDP时必须指定网络接口(IP地址)和端口号。注意:UDP端口和TCP端口虽然都使用0~65535,但他们是两套独立的端口,即一个应用程序用TCP占用了端口1234,不影响另一个应用程序用UDP占用端口1234
2023-05-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录