好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@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的文件,然后游览器进行展示,编写代码如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

@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文件如下

?

1

2

3

4

5

6

7

8

9

10

<!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,后面会慢慢的深入。

总结

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

原文链接:https://blog.csdn.net/m0_51545690/article/details/123068677

查看更多关于使用java模拟简单的tomcat的方法详解的详细内容...

  阅读:12次