iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java基于IDEA如何实现http编程
  • 479
分享到

Java基于IDEA如何实现http编程

2023-06-14 19:06:46 479人浏览 八月长安
摘要

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

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

java基本数据类型有哪些

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

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

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

--结束END--

本文标题: Java基于IDEA如何实现http编程

本文链接: https://www.lsjlt.com/news/274370.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作