DWR第三篇之逆向Ajax升级

1. 本示例在第二篇架构基础上添加代码

2. 本示例需要做的是定向推送,那么就需要浏览器进行登录,从而进行定向的推送功能,为了节省时间,这里不做登录模块了,在url后拼接一个参数作为登录标识。在client.jsp开头的地方添加如下代码

1 <%
2     String id = request.getParameter("id");
3     session.setAttribute("id",id);
4 %>

这样,在登录的时候在url后边拼接id=xxx,就可以模拟登录功能,并将登陆信息存在session中。

3. 此外,client.jsp中还要添加如下代码修改原来的地方)

 1 <script type="text/javascript">
 2     window.onload = function() {
 3         //开启逆向Ajax功能
 4         dwr.engine.setActiveReverseAjax(true);
 5         //开启关闭页面提醒服务器功能
 6         dwr.engine.setNotifyServerOnPageUnload(true);
 7         //对当前用户进行注册
 8         CoreServlet.regist();
 9     }
10 </script>

4. 修改index.jsp内容

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3     String path = request.getContextPath();
 4     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9 <head>
10 <base href="<%=basePath%>">
11 
12 <title>dwr_demo</title>
13 <script type='text/javascript' src='dwr/engine.js'></script>
14 <script type='text/javascript' src='dwr/util.js'></script>
15 <script type='text/javascript' src='dwr/interface/CoreServlet.js'></script>
16 </head>
17 
18 <body>
19     <input type="button" value="发送" onclick="sayHello();">
20     <br>
21     <input type="text" id="getHello">
22     <input type="button" value="发送" onclick="getHello();">
23     <input type="text" id="getHelloValue">
24     <br>
25     <input type="text" id="sendMsg">
26     <input type="button" value="推送" onclick="sendMsg();">
27     <br>
28     发送目标:<input type="text" id="target">
29     发送内容<input type="text" id="msg">
30     <input type="button" value="发送" onclick="directionalSendMsg();">
31 </body>
32 <script type="text/javascript">
33     function sayHello() {
34         CoreServlet.sayHello();
35     }
36     function getHello() {
37         var name = dwr.util.getValue("getHello");
38         CoreServlet.getHello(name,function(data) {
39             dwr.util.setValue("getHelloValue",data);
40         });
41     }
42     function sendMsg() {
43         var msg = dwr.util.getValue("sendMsg");
44         CoreServlet.send(msg);
45     }
46     function directionalSendMsg() {
47         var target = dwr.util.getValue("target");
48         var msg = dwr.util.getValue("msg");
49         CoreServlet.directionalSendMsg(target + ":" + msg);
50     }
51 </script>
52 </html>

5.在CoreServlet.java里添加两个方法

 1 /**
 2 * 定向推送消息
 3 */
 4 public void directionalSendMsg(String msg) {
 5     final String[] param = msg.split(":");
 6     Browser.withAllSessionsFiltered(new ScriptSessionFilter() {
 7         @Override
 8         public boolean match(ScriptSession session) {
 9             boolean flag = param[0].equals(session.getAttribute("key"));
10             return flag;
11         }
12     },new Runnable() {
13         @Override
14         public void run() {
15             Util.setValue("msg",param[1]);
16         }
17     });
18 }
19     
20 /**
21  * 用户注册
22  */
23 public void regist() {
24     // 获取当前的scriptSession
25     ScriptSession scriptSession = WebContextFactory.get().getScriptSession();
26     // 获取HttpSession 并获得其中的userId
27     HttpSession session = WebContextFactory.get().getSession();
28     String id = (String) session.getAttribute("id");
29     // 对当前scriptSession的key设置指定的值
30     scriptSession.setAttribute("key",id);
31 }

6.开三个窗口进行测试:

http://localhost:8080/dwr_demo/client.jsp?id=zhangsan http://localhost:8080/dwr_demo/client.jsp?id=lisi http://localhost:8080/dwr_demo/

相关文章

JS原生Ajax操作(XMLHttpRequest) GET请求 POST请求 兼容性问题 利用iframe模拟ajax 实现表单提交的返回...
AJAX 每日更新前端基础,如果觉得不错,点个star吧 &#128515; https://github.com/WindrunnerMax/E...
踩坑Axios提交form表单几种格式 前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSe...
很早就听闻ajax的名声,但是却一直不知道怎么用,今天自己捣鼓了一下,竟然会用了,哈哈哈哈。 为了防止...
需要在服务器上进行哈 jquery的ajax方法: // jquery请求 $.ajax({ url: &quot;./server/slider.js...
Ajax函数封装ajax.js // Get / Post // 参数 get post // 是否异步 // 如何处理响应数据 // URL // var...