简单的Tomcat实现--1.0 JerryMice的启动类

Posted xsliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的Tomcat实现--1.0 JerryMice的启动类相关的知识,希望对你有一定的参考价值。

# 实现JerryMice的启动类

实现这个需求分为以下几点:

1. 定义本地端口号

2. 在本地端口号上开ServerSocket

3. 通过ServerSocket获取Socket

4. 使用socket获取浏览器客户端的请求

5. 给客户端输出请求的结果

实现代码如下:

 1 import cn.hutool.core.util.NetUtil;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.io.OutputStream;
 6 import java.net.ServerSocket;
 7 import java.net.Socket;
 8 import java.nio.charset.StandardCharsets;
 9 
10 /**
11  * @author :xiaosong
12  * @description:项目的启动类
13  * @date :2020/7/28 20:41
14  */
15 public class Bootstrap {
16     /**
17     定义服务器的端口号
18      */
19     final static int PORT = 10086;
20     public static void main(String[] args){
21         try {
22             if (!NetUtil.isUsableLocalPort(PORT)){
23                 //查看当前定义的端口是否已经被占用,如果NetUtil.isUsableLocalPort方法返回true表示port定义的端口号可用
24                 System.out.println(PORT + "端口已经被占用, 排查关闭本端口的方法请用
https:baidu.com");
25                 return;
26             }
27             // 在port端口上新建serverSocket
28             ServerSocket serverSocket = new ServerSocket(PORT);
29             // 外部使用一个while循环,当处理完一个Socket的链接请求之后,再处理下一个链接请求
30             while (true) {
31                 Socket socket = serverSocket.accept();
32                 // 获取输入流,这个输入流表示的是收到一个浏览器客户端的请求
33                 InputStream inputStream = socket.getInputStream();
34                 //建立1024的缓冲区,请求是有可能超过缓冲区的大小的,所以这种固定缓冲区尺寸的做法是有缺陷的
35                 int bufferSize = 1024;
36                 byte[] buffer = new byte[bufferSize];
37                 //接收浏览器的请求
38                 inputStream.read(buffer);
39                 String requestString = new String(buffer, StandardCharsets.UTF_8);
40                 System.out.println("浏览器的输入信息: 
" + requestString);
41                 // 打开输出流,准备给客户端输出信息
42                 OutputStream outputStream = socket.getOutputStream();
43                 String responseHead = "HTTP/1.1 200 OK
" + "Content-Type:text/html

";
44                 String responseString = "Hello JerryMice";
45                 responseString = responseHead + responseString;
46                 // 以字节数组的形式包装从服务器端给用户端的数据
47                 outputStream.write(responseString.getBytes());
48                 outputStream.flush();
49                 // 关闭socket
50                 socket.close();
51             }
52         }catch (IOException e) {
53             e.printStackTrace();
54         }
55     }
56 }

运行以上代码就可以在浏览器上输入127.0.0.1:10086上查看到输出到网页html上的信息:`Hello JerryMice`

技术图片

 

以上是关于简单的Tomcat实现--1.0 JerryMice的启动类的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务

深入浅出JMS--Spring和ActiveMQ整合的完整实例

深入浅出JMS--Spring和ActiveMQ整合的完整实例

07.使用Tomcat实现在线人数的监听

Tomcat工作原理及简单模拟实现

简单的Tomcat实现--0.0 项目开发初衷