后端Java如何与前端HTML交互?
谢谢邀请~
这个问题看起来很简单,但我觉得主题不是那个简单的意思(也许我想得太多了)。如果你问[前端如何与后端交互],我认为大多数程序员都能回答,但如果是[后端(主动)和前端交互],估计会让很多程序员感到困惑。
先看一个场景
我以前做过一个小项目,只有一个页面,显示了每个分公司当天的表现,也就是说,我赚了多少钱。后台服务是Java,数据库是Mysql,有一个大约北京-100万,上海-80万的汇总表。
流程非常简单。HTML页面发起请求Java、Java访问数据库查询数据,然后返回HTML显示。然而,Mysql中的汇总表数据不时更新,可能是10分钟或20分钟。
最简单的 *** 是什么?
*** 在HTML中设置定时轮询(Polling),每隔几秒钟发起一次请求,以获取最新的数据,如果数据没有变化,页面也会不断变化。
缺点是显而易见的。前端发起的许多要求无效(因为数据没有变化)。Java能否在后台数据发生变化时主动通知浏览器?
WebSocket
给大家介绍一下WebSocket。
Websocket是一个基于TCP的协议,它可以使前端和服务器之间的数据交互更容易,前端和服务器可以创建一个持久的连接,并完成双向数据传输,注意这里的双向,即服务器可以主动通知前端;Websocket的数据格式很轻,所以性能很高;与http协议也有很好的兼容性。
回到上面的场景,可以这样改造:
HTML页面与Java服务器建立WebSocket连接,然后不再主动发起请求,Java服务器定期查询数据库,并在数据发生变化时通知前端。
有人可能会问,这不就是把HTML页面的轮询移到Java吗?
但想象一下,如果100个客户端打开了HTML页面呢?这意味着100个前端的定时轮询已经成为Java服务端的定时轮询。
希望我的回答能对你有所帮助!我将继续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到您的关注。