• DWR第三篇之逆向Ajax升级


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

    2.在client.jsp开头的地方添加如下代码:

    本示例需要做的是定向推送,那么就需要浏览器进行登录,从而进行定向的推送功能,为了节省时间,这里不做登录模块了,在url后拼接一个参数作为登录标识。

    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/

  • 相关阅读:
    5,pandas高级数据处理
    4,根据美国各州人口,土地面积进行数据分析
    3,Python常用库之三:Matplotlib
    2,Python常用库之二:Pandas
    1,Python常用库之一:Numpy
    18,增量式爬虫
    17,基于scrapy-redis两种形式的分布式爬虫
    http超文本传输协议,get与post区别
    优化css,增加性能
    bootstrap常用知识点总结
  • 原文地址:https://www.cnblogs.com/Oven5217/p/7462011.html
走看看 - 开发者的网上家园