本篇博客我们继续的来聊SpringMVC的东西,下方我们将会聊到js, css这些静态文件的加载配置,以及服务器推送的两种实现方式。当然我们在服务器推送时,会用到jQuery的东西,所以我们先聊一下如何加载静态资源文件,然后我们再聊如何实现服务器推送。
下方给出了两种实现服务器推送的方式,一种是SSE(服务器发送事件(服务端推送事件))另一种是基于Servlet异步处理的推送,下方会给出详细的实现方式,并且给出了两者的区别。
<强>一、静态资源文件映射强>
静态资源文件映射在SpringMVC中的配置也是比较简单的,在我们春天的配置文件里边配置一下即可。下方就是我们在配置静态资源文件时所做的内容。
首先我们在src/main/资源包下方创建了衣蛾资产文件,该文件下就存放着我们工程中所使用所有的静态资源文件。然后我们在春天的配置文件中重写addResourceHandlers()方法,使用该方法来配置“资产”目录。
我们来创建一个jquery_test.jsp文件,该文件中引入了资产文件夹中js文件夹下的jquery.js文件。在jquery_test.jsp中就使用了jQuery的东西。下方就是该文件的所有内容。当然下方页面的功能比较简单,就是点击按钮,往HTML中动态的添加新的节点。具体代码如下所示:
% @ & lt;页面语言=癹ava”contentType=" text/html;charset=utf - 8” pageEncoding=" utf - 8 " %比; & lt; !DOCTYPE html公共”——//W3C html 4.01过渡//EN//DTD”“http://www.w3.org/TR/html4/loose.dtd”的在 & lt; html> & lt; head> & lt;元http-equiv=? type”内容=" text/html;charset=utf - 8”比; & lt;脚本type=" text/javascript " src=" https://www.yisu.com/zixun/assets/js/jquery.js "祝辞& lt;/script> & lt;脚本type=" text/javascript祝辞 $(文档)时函数(){ $(" #点击”).click(函数(){ $(" #测试”).append (“& lt; h3>你好春天MVC”); }); }); & lt;/script> & lt; title> JQuery Demo & lt;/head> & lt; body> & lt;输入类型="按钮" id=钡慊鳌皏alue=" https://www.yisu.com/zixun/JQuery-TEST-Click我”/比; & lt; h3 id=安馐浴弊4? lt;/h3> & lt;/body> & lt;/html>
如果你想学习Java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。
当然要想访问上述页面,还得在春天的配置文件中进行路由的配置。下方代码段就是春天配置文件中静态文件路由的快速配置。
下方就是我们对相应路由的访问结果,如下所示。通过下方示例,我们可以看到jquery.js资源文件可以被正常的访问到。
<强>二、服务器发送事件(服务端推送事件)强>
服务器发送事件简称上交所,使用该技术可以实现服务端像浏览器发送事件,也就是所谓的服务端的推动。本篇博客所聊的服务器推送技术的实现原理是当客户端向服务端发送请求时,服务端会抓住这个请求不放,等有数据更新的时候才返回给客户端。当客户端接收到消息后,再向服务端发送请求,周而复始。
服务端推送以及客户端发送的网络请求都是单向通信,后面的博客我们会介绍一种双向通信技术:WebSocket。本篇我们就先聊聊服务端的推送事件。
首先我们创建一个普通的SpringMVC的控制器,命名为SSEContrller。下方就是SSEController类的具体实现,内容与普通的控制器差不多。只不过相应的方法在路由配置时,将产生属性的文本类型设置成“文本/事件流”即可。
在下方类的push()方法中,每500毫秒就会往客户端发送一个消息。消息的内容是当前时间,如下所示:
创建好上述类后,我们就该创建测试上述控制器的JSP页面了,我们在相应的资源目录中创建一个sse.jsp页面。在sse.jsp页面中,我们将会使用到JavaScript中的EventSource对象来监听来着“/sse”路由的事件消息,当收到上述控制器发起的事件后,会在事件回调中做一些事情。当然,我们做的事情就是在HTML页面中添加新的节点,将事件响应的消息添加到HTML文本只能怪进行显示。