服务器端使用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值