服务器端使用DeferredResult异步推送技术

  注意1:

  org.springframework.web.context.request.async.DeferredResult;

  是Spring4.0以后的版本才有的,注意Spring版本,然后添加Spring Springmvc的依赖

 <org.springframework-version>4.1.1.RELEASE</org.springframework-version>

注意2:当出现如下异常时:

  Async support must be enabled on a servlet and for all filters involved in async request processing.

  This is done in Java code using the Servlet API or by adding "<async-supported>true</async-supported>"

  to servlet and filter declarations in web.xml.

  处理方式:

  <servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported> //添加这一句
  </servlet>



服务端接口: 

 @RequestMapping("/defer") @ResponseBody public DeferredResult<String> deferred(){ //其他用户通过客户端访问/feder来获取数据 SimpleDateFormat sd = new SimpleDateFormat("YYYY年-MM月-DD日 hh时: mm分 : ss秒"); String date = sd.format(new Date()); System.out.println(date); DeferredResult<String> d = new DeferredResult<String>(); d.setResult("***"+msgs); return d; }
String msgs; @RequestMapping(
"/getmsg") public void getmsg(String msg){ //一个用户何以使用/getmsg?msg=xxxxx,修改msgs的信息 System.out.println("msg is "+msg); msgs = msg; }
<div id="msgFrompPush">
<h3>msg:</h3>
</div>
<script type="text/javascript" src="resources/jquery-2.1.1.min.js"></script>
<script type="text/javascript">


deferred(); function deferred(){ $.get('defer',function(data){ //使用get请求/defer console.log('data : '+data); $("#msgFrompPush").html(data); }); } </script>
原文地址:https://www.cnblogs.com/wwzyy/p/8276910.html