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

网友投稿 253 2022-08-26


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

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

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

@Test

public void http://myTomcat() throws IOException {

// 在 8888 端口进行监听

ServerSocket serverSocket = new ServerSocket(8888);

//当服务器没有关闭的时候一直等待连接

while (!serverSocket.isClosed()){

//得到socket用于通讯

Socket socket = serverSocketyIQVgIq.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文件如下

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

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

总结

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python eval 函数 将字符串 转为 有效的表达式(python基础教程)
下一篇:Python 可变参数 *args **kwargs 的再了解(python编程)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~