溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用java模擬簡(jiǎn)單的tomcat方法

發(fā)布時(shí)間:2022-02-23 16:41:51 來源:億速云 閱讀:148 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“如何使用java模擬簡(jiǎn)單的tomcat方法”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

我們現(xiàn)在已經(jīng)會(huì)使用tomcat了,但tomcat具體的原理還很模糊,下面我們使用java來簡(jiǎn)單模擬一下tomcat,實(shí)現(xiàn)游覽器訪問8888端口,然后得到一個(gè)網(wǎng)頁進(jìn)行展示。注意:這只是簡(jiǎn)單模擬

我們接下來將會(huì)使用java里面的io和網(wǎng)絡(luò)的知識(shí)。首先先簡(jiǎn)單一點(diǎn),游覽器訪問8888端口,然后輸出一句話,編寫代碼如下

@Test
    public void myTomcat() throws IOException {
        // 在 8888 端口進(jìn)行監(jiān)聽
        ServerSocket serverSocket = new ServerSocket(8888);
        //當(dāng)服務(wù)器沒有關(guān)閉的時(shí)候一直等待連接
        while (!serverSocket.isClosed()){
            //得到socket用于通訊
            Socket socket = serverSocket.accept();
            //得到輸出流
            OutputStream outputStream = socket.getOutputStream();
            //寫入數(shù)據(jù)
            outputStream.write("this is myTomcat".getBytes());
            //關(guān)閉輸出流和socket
            outputStream.close();
            socket.close();
        }
        //關(guān)閉服務(wù)器
        serverSocket.close();
    }

我們使用firefox進(jìn)行訪問,訪問的網(wǎng)站為localhost:8888,firefox訪問后的顯示為:

如何使用java模擬簡(jiǎn)單的tomcat方法

可以看見,已經(jīng)成功實(shí)現(xiàn)。注意 ,必須使用firefox,使用geogle和edge都不可以,原因是他們沒有解析tcp協(xié)議的數(shù)據(jù)。

我們?cè)诖位A(chǔ)上進(jìn)一步加深,讓游覽器訪問服務(wù)器時(shí),服務(wù)器返回一個(gè)html的文件,然后游覽器進(jìn)行展示,編寫代碼如下

@Test
    public void myTomcat() throws IOException {
        // 在 8888 端口進(jìn)行監(jiān)聽
        ServerSocket serverSocket = new ServerSocket(8888);
        //當(dāng)服務(wù)器沒有關(guān)閉的時(shí)候一直等待連接
        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) {
                //寫入數(shù)據(jù)
                outputStream.write(bytes, 0, len);
            }
            //關(guān)閉輸出流和socket
            outputStream.close();
            socket.close();
        }
        //關(guān)閉服務(wù)器
        serverSocket.close();
    }

html文件如下

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

運(yùn)行java文件后,游覽器訪問localhost:8888,顯示如下

如何使用java模擬簡(jiǎn)單的tomcat方法

我們可以看見我們已經(jīng)成功了,但是游覽器并沒有把這個(gè)解析為html,這個(gè)問題展示先不說,現(xiàn)在我們已經(jīng)用java實(shí)現(xiàn)了一個(gè)最簡(jiǎn)單tomcat,后面會(huì)慢慢的深入。

“如何使用java模擬簡(jiǎn)單的tomcat方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI