国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

servlet和socket

YorkChen / 3183人閱讀

摘要:什么是維基百科上說,全稱,未有中文譯文。其主要功能在于交互式地瀏覽和修改數據,生成動態內容。從維基百科中可以看到,一般使用的是協議。響應內容動態生成,通常取決于客戶端的請求服務器將響應返回給客戶端。

最近在看教程的時候,又看到了servlet這個詞,突然發現我好像并不了解他,只是‘有所耳聞’。所以決定學習一下。

什么是servlet

維基百科上說:

Servlet(Server Applet),全稱Java Servlet,未有中文譯文。是用Java編寫的服務器端程序。其主要功能在于交互式地瀏覽和修改數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,一般情況下,人們將Servlet理解為后者。

簡單來說,Servlet就是個接口,一段程序。

通過上面的介紹,可以看到,中間提到交互式地瀏覽和修改數據,這突然讓我想到了前一段時間學的socket,通過socket,我們也會實現客戶端和服務器的交互效果。

這就讓我有點想知道,servletsocket有沒有什么關系呢?

servlet和socket區別與聯系

在這里,我會從幾方面來簡單分析兩者。

使用協議

socket:使用TCP/IP協議或UDP協議,前者居多。
servlet:從維基百科中可以看到,一般使用的是HTTP協議。

工作模式

socket:由于是使用的TCP協議,所以首先必須要做到的就是建立兩端的連接,建立一條持續連接的通道。
這需要服務器端先建立起一個服務,然后由客戶端去連接服務器端,這樣,就建立好了一條連接,然后就可以進行隨意的通信了,服務器可以發送消息給客戶端,同樣的客戶端也可以發送消息給服務端。

整理一下:

1)服務器端建立服務
2)客戶端連接服務器端
3)相互發送數據

然后我們在看一下servlet的工作模式:

由于servlet大多數是工作在基于http的web服務器下,所以它的模式想必大家也很熟悉了:

1) 客戶端發送請求至服務器端;
2) 服務器將請求信息發送至 Servlet;
3) Servlet 生成響應內容并將其傳給服務器。響應內容動態生成,通常取決于客戶端的請求;
4) 服務器將響應返回給客戶端。

看到這里,更加覺得兩者太像了。沒錯的,由于兩個服務協議的關系,http本來就是對TCP協議的一個封裝和完善,所以其底層的數據傳輸還是使用TCP的那套東西。

對熟悉網絡的朋友來說,兩者只是工作層面不同的兩個相互協作的過程而已。

這樣,有這種類似程度也就不覺得那么稀奇了。

java中的實現

首先是socket,通過之前的學習,socket的使用如下:

// 服務端
SocketService socketService = new SocketService(xxxx);
Socket socket = socketService.accept();

// 客戶端
Socket socket = new Socket("127.0.0.1", xxxx);

主要的就是這三步,也就是說,在具體實現的時候,我們需要對服務器和客戶端兩者都進行操作。

然后在看一下servlet。下面這段代碼就是最近教程學習到的:

@GetMapping("/me")
public Teacher me(HttpServletResponse httpServletResponse) {
    Teacher teacher = new Teacher();
    try {
        teacher = teacherService.me();
    } catch (AuthException e) {
        httpServletResponse.setStatus(HttpStatus.UNAUTHORIZED.value());
    }

    return teacher;
}

這里面我們用到了一個叫做HttpServletResponse的東西,相信我們看到了response這個單詞后,立馬就會想到,是不是還有一個叫做HttpServletRequest的東西,沒錯的。

基于http的通信就是有這樣的特點,在服務器獲取到一個請求之后,就會創建出HttpServletResponseHttpServletRequest這樣兩個對象,然后如果我想向客戶端發送東西的話,就使用HttpServletResponse;如果我們要從客戶端獲取東西的話,就使用HttpServletRequest。

比如我們上面會想客戶端返回一個狀態碼,所以使用了HttpServletResponse。

當然,如果我們還想傳遞其他關于信息也是可以的,比如cookie,header,就像我們手動做了一個http響應一樣。

看到這里,我們會發現,servlet的操作貌似都沒有涉及到客戶端,全部都是在服務器端完成的。是這樣的,servlet在前面也說到了,它是一段服務器端工作的程序。

區別和聯系總結

可能看到這里還是沒有怎么明白socketservlet的區別是什么,其實簡單一點說就是:socket比servlet更基本,servlet基于socket。

因為兩者都是為通信而服務,所以,當我們結合了網絡的知識后,會發現這根我們的網絡中的網絡架構是那么的一樣,他的工作模式和我們所熟知的網絡工作模式又是那么的相似。

servlet容器

貌似提到了servlet,就不得不提到servlet容器了。

從字面上理解,servlet容器就是裝servlet的東西。

首先,servlet容器同樣也是一段程序。從上面對servlet的學習,我們大致知道了servlet是工作在服務器端的,但是現實情況是,很多的服務器都不能直接支持servlet,而我們現在又想用servlet,這時就需要編寫一段程序,加在服務器上,幫我們來處理servlet。這就是我們說的servlet容器。我們接觸過的Tomcat就是一個這樣的容器。

一般的通信是這樣的:

當我們需要使用servlet時,他就是這樣的:

然后在web服務器收到一個http請求之后,就會轉給servlet容器,然后再由容器交給servlet去處理。

總結

通過對servlet的簡單了解,突然發現很多我學過的東西并沒有我想象的那樣沒用,很多時候,我們遇到的事情或是問題,他們可能都是想通的。也許,對目前所學,我們并不能看到它的實際作用,但是說不準哪天,曾經不起眼的所學,就會成為解決問題的關鍵。

相關參考:
https://blog.csdn.net/snarlfu...
https://zh.wikipedia.org/wiki...
https://blog.csdn.net/wabiaoz...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72512.html

相關文章

  • 實現一個簡單的Tomcat

    摘要:實現一個簡單的作用我們的應用會運行在中,那么顯然請求必定是先到達的,對于請求實際上會進行如下的處理提供服務的啟動,必然是服務,支持協議。進行請求的分發一個可以為多個應用提供服務,那么就需要把下發到不同的應用。下面我們就自己來實現這三步。 實現一個簡單的Tomcat 1. Tomcat作用 我們的web應用會運行在Tomcat中,那么顯然請求必定是先到達Tomcat的,Tomcat對于請...

    Zoom 評論0 收藏0
  • 一步一步實現Tomcat之二——實現一個簡單的Servlet容器

    摘要:注本文使用規范是規范中的一個接口,我們可以自己實現這個接口在方法中實現自己的業務邏輯。我們只是實現一個簡單的容器示例,所以和其他方法留待以后實現。運行一下實現首先編寫一個自己的實現類。 前言 經過上一篇文章《一步一步實現Tomcat——實現一個簡單的Web服務器》,我們實現了一個簡單的Web服務器,可以響應瀏覽器請求顯示靜態Html頁面,本文更進一步,實現一個Servlet容器,我們不...

    dayday_up 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<