博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
配置使用dwr完成收邮件提示
阅读量:5089 次
发布时间:2019-06-13

本文共 4377 字,大约阅读时间需要 14 分钟。

DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在上的JAVA函数,就像它就在浏览器里一样。

其实这些配置也是网上大神们的,只是拿出来整理下,少走弯路。

首先需要导入dwr3.0.jar,

然后在web.xml中加入

dwr-invoker
org.directwebremoting.servlet.DwrServlet
crossDomainSessionSecurity
false
allowScriptTagRemoting
true
activeReverseAjaxEnabled
true
initApplicationScopeCreatorsAtStartup
true
maxWaitAfterWrite
3000
debug
false
logLevel
WARN
dwr-invoker
/dwr/*

在webapps下新建dwr.xml(文件名不能改)
再新建一个MessagePush.java就完成dwr的配置,但是我们需要做收邮件提示得还需要一些改进。
新建 DwrScriptSessionManagerUtil.java
public class DwrScriptSessionManagerUtil extends DwrServlet {     private static final long serialVersionUID = -7504612622407420071L;     public void init()             throws ServletException {         Container container = ServerContextFactory.get().getContainer();         ScriptSessionManager manager = container                 .getBean(ScriptSessionManager.class);         ScriptSessionListener listener = new ScriptSessionListener() {             public void sessionCreated(ScriptSessionEvent ev) {                 HttpSession session = WebContextFactory.get().getSession();                 String userId = ((Employee) session.getAttribute("loginuser")).getId();                 ev.getSession().setAttribute("userId", userId);             }             public void sessionDestroyed(ScriptSessionEvent ev) {              }         };         manager.addScriptSessionListener(listener);     } }
新建MessagePush.java 初始化
public class MessagePush {     public void onPageLoad(String userId) {         ScriptSession scriptSession = WebContextFactory.get().getScriptSession();         scriptSession.setAttribute(userId, userId);         DwrScriptSessionManagerUtil dwrScriptSessionManagerUtil = new DwrScriptSessionManagerUtil();         try {                dwrScriptSessionManagerUtil.init();         } catch (ServletException e) {                e.printStackTrace();         }  }}
最后我们在定义一个服务器发送消息的实体就行了
public class SendMessageAuto {       public void sendMessageAuto(String userid,String message) {           final String userId = userid ;           final String autoMessage = message;           Browser.withAllSessionsFiltered(new ScriptSessionFilter() {                  public boolean match(ScriptSession session) {                         if (session.getAttribute("userId") == null)                                return false;                         else                                return (session.getAttribute("userId")).equals(userId);                  }           }, new Runnable(){                  private ScriptBuffer script = new ScriptBuffer();                  public void run() { 			/* 前台接收的function 名为showMessage, 消息		         	是autoMessage */                        script.appendCall("showMessage", autoMessage);                         Collection
sessions = Browser .getTargetSessions(); for (ScriptSession scriptSession : sessions) { scriptSession.addScript(script); } } }); }}
需要在接收页面上的js
body 需要加入
 
加入js代码
/* dwr初始化 */function onPageLoad(){    var userId = '${loginuser.id}';    MessagePush.onPageLoad(userId);  }/* dwr接收消息 */ function showMessage(autoMessage) {    alertMsg.info(autoMessage);}
客户端响应的是showMessage这个函数,这样我们就可以完成这个功能了。

转载于:https://www.cnblogs.com/qnight/p/7535116.html

你可能感兴趣的文章
百度 主页中在控制台中
查看>>
【noip模拟赛4】找啊找啊找BF 拓扑排序
查看>>
Orange's_1_win7下搭建环境
查看>>
Anaconda使用
查看>>
自适应网页设计理念(Responsive Web Design)
查看>>
老铁,这年头不会点git真不行
查看>>
HDU 1028: Ignatius and the Princess III
查看>>
淘宝实习小结
查看>>
6.1:SportStore:一个真实的应用
查看>>
zookeeper使用场景【转】
查看>>
2014年北京网络赛 Instrusive HDU 5040 题解 优先队列
查看>>
【Jhipster】升级/修改 数据库结构
查看>>
文件上传与下载的前后端处理
查看>>
next_permutation函数
查看>>
【前端开发工具】WijmoJS 2018 v3 正式发布,全面支持Angular7
查看>>
css实现长英文字母自动换行
查看>>
dynamic基元类型与隐式类型的局部变量var
查看>>
获取APK第一次安装在本机的时间
查看>>
MVC是什么?
查看>>
maven安装与常用命令
查看>>