广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用java模拟简单的tomcat的方法详解
  • 862
分享到

使用java模拟简单的tomcat的方法详解

2024-04-02 19:04:59 862人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

我们现在已经会使用Tomcat了,但tomcat具体的原理还很模糊,下面我们使用java来简单模拟一下tomcat,实现游览器访问8888端口,然后得到一个网页进行展示。注意:这只是

我们现在已经会使用Tomcat了,但tomcat具体的原理还很模糊,下面我们使用java来简单模拟一下tomcat,实现游览器访问8888端口,然后得到一个网页进行展示。注意:这只是简单模拟

我们接下来将会使用java里面的io网络的知识。首先先简单一点,游览器访问8888端口,然后输出一句话,编写代码如下

@Test
    public void myTomcat() throws IOException {
        // 在 8888 端口进行监听
        ServerSocket serverSocket = new ServerSocket(8888);
        //当服务器没有关闭的时候一直等待连接
        while (!serverSocket.isClosed()){
            //得到socket用于通讯
            Socket socket = serverSocket.accept();
            //得到输出流
            OutputStream outputStream = socket.getOutputStream();
            //写入数据
            outputStream.write("this is myTomcat".getBytes());
            //关闭输出流和socket
            outputStream.close();
            socket.close();
        }
        //关闭服务器
        serverSocket.close();
    }

我们使用firefox进行访问,访问的网站为localhost:8888,firefox访问后的显示为:

可以看见,已经成功实现。注意 ,必须使用firefox,使用geogle和edge都不可以,原因是他们没有解析tcp协议的数据。

我们在次基础上进一步加深,让游览器访问服务器时,服务器返回一个html的文件,然后游览器进行展示,编写代码如下

@Test
    public void myTomcat() throws IOException {
        // 在 8888 端口进行监听
        ServerSocket serverSocket = new ServerSocket(8888);
        //当服务器没有关闭的时候一直等待连接
        while (!serverSocket.isClosed()) {
            //得到socket用于通讯
            Socket socket = serverSocket.accept();
            //得到输出流
            OutputStream outputStream = socket.getOutputStream();
            //得到输入流
            BufferedInputStream bufferedInputStream = new BufferedInputStream(
                    new FileInputStream("src/hello.html"));
            int len = 0;
            byte[] bytes = new byte[1024];
            while ((len = bufferedInputStream.read(bytes)) != -1) {
                //写入数据
                outputStream.write(bytes, 0, len);
            }
            //关闭输出流和socket
            outputStream.close();
            socket.close();
        }
        //关闭服务器
        serverSocket.close();
    }

html文件如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
    <h1>this is myTomcat</h1>
</body>
</html>

运行java文件后,游览器访问localhost:8888,显示如下

我们可以看见我们已经成功了,但是游览器并没有把这个解析为html,这个问题展示先不说,现在我们已经用java实现了一个最简单tomcat,后面会慢慢的深入。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!  

--结束END--

本文标题: 使用java模拟简单的tomcat的方法详解

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

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

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

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

下载Word文档
猜你喜欢
  • 使用java模拟简单的tomcat的方法详解
    我们现在已经会使用tomcat了,但tomcat具体的原理还很模糊,下面我们使用java来简单模拟一下tomcat,实现游览器访问8888端口,然后得到一个网页进行展示。注意:这只是...
    99+
    2022-11-13
  • 如何使用java模拟简单的tomcat方法
    本篇内容介绍了“如何使用java模拟简单的tomcat方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们现在已经会使用tomcat了,但...
    99+
    2023-06-29
  • 模拟简单Java线程池的方法详解
    目录一、 前言二、线程池是什么?三、线程池构造方法ThreadPoolExecutor的构造方法的参数都是啥意思?四、模拟实现一个线程池总结一、 前言 为了实现并发编程,于是就引入了...
    99+
    2022-11-13
  • 详解Navicat简单使用方法
    Navicat是一款用于数据库管理的工具,支持多种数据库系统,如MySQL、Oracle、SQL Server等。下面是Navicat的简单使用方法:1. 下载和安装Navicat:首先,从Navicat官方网站下载适用于你的操作系统的...
    99+
    2023-08-09
    Navicat
  • docker-compose简单使用方法详解
    目录Compose介绍一、前置条件二、使用方法三、测试Compose介绍 Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,...
    99+
    2022-11-13
    docker compose使用 docker compose
  • JavaScript模拟实现简单的MVC的示例详解
    目录场景核心思想initControllerViewModelMVC是一种常见的软件架构模式,将一个应用程序分为三个核心的部分:模型(Model)、视图(View)和控制器(Cont...
    99+
    2023-05-15
    JavaScript实现MVC JavaScript MVC
  • 详解Java中Quartz的简单使用
    目录简单示例usingJobData非并发执行Scheduler 每次执行,都会根据JobDetail创建一个新的Job实例,这样就可以规避并发访问的问题(jobDetail的实例也...
    99+
    2023-05-15
    Java Quartz使用 Java Quartz
  • java中反射和注解的简单使用方法
    目录什么反射?Java反射机制提供的功能反射相关的主要APIClass 类获取Class 类的实例( 四种方法)哪些类型可以有Class 对象?演示Class类的常用方法有了Clas...
    99+
    2022-11-12
  • Javaweb使用Maven工具与Tomcat的方法详解
    目录一、Maven工具1,关于maven2、安装maven3,使用maven4,认识pom.xml5,目录文件完善6,导入数据库的依赖二、Tomcat1,Tomcat 是什么2,下载...
    99+
    2022-11-13
  • 简单了解Java方法的定义和使用实现
    目录什么是方法?方法的定义2021.6.2 方法的重载(重要笔试可能遇到)命令行传参2021.6.3可变参数(也叫不定项参数)递归(重要,不推荐使用)2021.6.5什么是数组数组声...
    99+
    2022-11-12
  • C++模拟实现string的方法详解
    目录1.string 成员变量2.构造函数3.拷贝构造、赋值重载和析构函数1.拷贝构造2.赋值重载3.析构函数4.访问成员变量5.遍历1.下标+【】2.迭代器(iterator)3....
    99+
    2022-11-13
    C++实现string C++ string
  • registerForActivityResult()方法的简单理解和使用
    最近学到了registerForActivityResult,简单理解一下: 1、使用registerForActivityResult为获取到的结果注册结果回调,但其本身不会启动intent跳转 2...
    99+
    2023-09-05
    android java android studio
  • Java工厂模式之简单工厂,工厂方法,抽象工厂模式详解
    目录1、简单工厂模式1.定义2.代码案例3.适用场景4.优缺点2、工厂方法模式1.定义2.代码案例3.适用场景4.优缺点3、抽象工厂模式1.定义2.代码案例3.适用场景4.优缺点4、...
    99+
    2022-11-13
  • Android 实现夜间模式的快速简单方法实例详解
    ChangeMode 项目地址:ChangeMode Implementation of night mode for Android. 用最简单的方式实现夜间模式,支持Lis...
    99+
    2022-06-06
    方法 Android
  • TabLayout+ViewPager2的简单使用详解
    本文实例为大家分享了TabLayout+ViewPager2简单使用的实现代码,供大家参考,具体内容如下 学习之前我们先看一下显示的效果 这里显示的底部导航栏,如果想实现的顶部导航...
    99+
    2022-11-13
  • Vuejs的简单使用方法
    这篇文章主要介绍“Vuejs的简单使用方法”,在日常操作中,相信很多人在Vuejs的简单使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vuejs的简单使用方法”的疑惑...
    99+
    2022-10-19
  • 详解React中Fragment的简单使用
    目录react 中的 Fragment标签渲染Fragment 标签Fragment 标签和 <></> 区别react 中的 ...
    99+
    2022-11-13
    React Fragment使用 React Fragment
  • Java中的==使用方法详解
    目录Java中的==2 字符串常量池3 总结Java中的== Java中的==表示的是什么呢?有时候很令人费解。比如,以下例子输出是什么? // 例一 String st...
    99+
    2022-11-12
  • Qt Designer的简单使用方法
    在前面两节的例子中,主界面窗口的尺寸和标签控件显示的矩形区域等,都是用 C++ 代码编写的。窗口和控件的尺寸都是预估的,控件如果多起来,那就不好估计每个控件合适的位置和大小了。 用 ...
    99+
    2022-11-12
  • Android简单使用PopupWindow的方法
    本文实例为大家分享了Android简单使用PopupWindow的的具体代码,供大家参考,具体内容如下 思路 1.在res下面创建一个menu文件夹,并新建一个xml文件作为Poup...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作