注意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>