欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

后端Java怎么和前端HTML交互?

老白2年前10瀏覽0評論

謝謝邀請~

這個問題,看似簡單,但是感覺題主又不是那個簡單的意思(可能我想多了)。如果問【前端怎么和后端交互】,我覺得大部分程序員都能回答上來,但如果是【后端怎么(主動)和前端交互】,估計會難倒很多程序員了。

先看一個場景

我之前做過一個小項目,只有一個頁面,展示的是各個分公司當天的業績,就是掙了多少錢。后臺服務是Java,數據庫是Mysql,有一張匯總表,內容大概是北京-100萬,上海-80萬這樣的。

流程很簡單,HTML頁面發起請求到Java,Java訪問數據庫查詢數據,再返回給HTML展示。但是Mysql中的匯總表的數據,是不定期更新的,可能10分鐘,可能20分鐘。

最簡單的做法是什么?

HTML中用JS設置一個定時輪詢(Polling),每隔幾秒去發起一次請求,獲取最新的數據,如果數據沒有變化,頁面也保持變化。

缺點很明顯,前端發起的很多請求都是無效的(因為數據沒有變化),那有沒有辦法當后臺數據發生變化時,Java可以主動通知瀏覽器呢?

WebSocket

向大家介紹一下WebSocket。

WebSocket是一個基于TCP的協議,它可以使前端和服務器的數據交互變得更簡單,前端和服務器只需要完成一次握手,就可以創建持久性的連接,并可以完成雙向的數據傳輸,注意這里的雙向,也就是服務端可以主動通知前端;WebSocket的數據格式輕量,所以性能很高;與http協議也有著良好的兼容性。

回到上面的場景,可以這么改造:

HTML頁面與Java服務端建立WebSocket連接,然后就不再主動發起請求,Java服務端定時查詢數據庫,當數據有變化時,通知前端。

可能有人會問,這不就是把HTML頁面的輪詢,移到Java端了么?

但是想象一下,如果有100個客戶端打開了這個HTML頁面呢?那就意味著100個前端的定時輪詢,變成了1個Java服務端的定時輪詢。

希望我的回答,能夠幫助到你!我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。