DWR使用:
1.文字提示功能实现。
说明:使用java.util.ResouceBundle来读取properties文件中的内容,properties文件可以放在读取类的相同目录下。
ResourceBundle在读取properties文件时使用ISO8859-1编码,需要进行编码转换。
book.java
package com.dwr.test;
import java.util.ResourceBundle;
import java.util.Locale;
public class book {
private ResourceBundle resource;
public book(){
resource = ResourceBundle.getBundle("com.dwr.test.book");
}
public String getDescription(String strKey){
return ISO2GB(resource.getString(strKey));
}
public static String ISO2GB(String src) {
if (src != null) {
try {
return new String(src.getBytes("ISO-8859-1"), "GBK");
}
catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
return null;
}
}
}
book.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<script type='text/javascript' src='dwr/interface/Book.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script language='javascript'>
function getBookData(Obj) {
Book.getDescription(Obj.id,setBookData);
}
function setBookData(description) {
DWRUtil.setValue('info', description);
}
function clearData() {
DWRUtil.setValue('info', '');
}
</script>
<title>個人著/譯作</title>
</head>
<body>
<div id="ajax" onmouseover="getBookData(this);" onmouseout="clearData();">
<a href="http://www.gotop.com.tw/waweb2004/home/home.aspx?pg=HM010X&bn=AXP011800">
<small><img style="border: 0px solid ; width: 80px; height: 110px; float: left;" alt="Ajax in action 中文版" title="Ajax in action 中文版" src="http://www.gotop.com.tw/Waweb2004/WawebImages/BookL/XP011800.jpg" hspace="10" vspace="2">
</small>
</a>
</div>
<div id="spring" onmouseover="getBookData(this);" onmouseout="clearData();">
<a href="http://www.gotop.com.tw/waweb2004/home/home.aspx?pg=HM010X&bn=ACL021000">
<small><img style="border: 0px solid ; width: 80px; height: 110px; float: left;" alt="Spring 技術手冊" title="Spring 技術手冊" src="http://www.gotop.com.tw/Waweb2004/WawebImages/BookL/CL021000.jpg" hspace="10" vspace="2">
</small></a>
</div>
<div id="java" onmouseover="getBookData(this);" onmouseout="clearData();">
<a href="http://www.gotop.com.tw/waweb2004/home/home.aspx?pg=HM010X&bn=ACL020931">
<small><img style="border: 0px solid ; width: 80px; height: 110px; float: left;" alt="Java 學習筆記" title="Java 學習筆記" src="http://www.gotop.com.tw/Waweb2004/WawebImages/BookL/CL020931.jpg" hspace="10" vspace="2">
</small></a>
</div>
<br><br><br><br><br><br>
<div id="info"></div>
</body>
</html>
book.properties
java=Java 學習筆記的介紹…BlaBla...
spring=Spring 技術手冊的介紹…BlaBla...
ajax=Ajax in action 中文版的介紹…BlaBla...
dwr.xml中加入
<create creator="new" javascript="Book">
<param name="class" value="com.dwr.test.book"/>
</create>
2.简单聊天室功能
chat.html
<html>
<head>
<script type='text/javascript' src='dwr/interface/Chat.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script language="javascript">
function sendMessage()
{
var text1 = DWRUtil.getValue("text");
DWRUtil.setValue("text", "");
Chat.addMessage(gotMessages, text1);
}
function gotMessages(messages)
{
var chatlog = "";
for (var data in messages)
{
chatlog = "<div>" + messages[data].text +"</div>" + chatlog;
}
DWRUtil.setValue("chatlog", chatlog);
refresh();
}
//自动刷新
function refresh(){
setTimeout("queryMessage()", 2000);
}
function queryMessage() {
Chat.getMessages(gotMessages);
}
//CRRL+ENTER发送消息功能的实现
function replayTopic(){
if(document.all.text.value==null || document.all.text.value=="")
{
alert("不能发送空消息! ");
document.all.text.focus();
return false;
}
return true;
}
function ctlent(eventObj) {
if(eventObj.ctrlKey && eventObj.keyCode == 13) {
if(replayTopic()) {
sendMessage();
}
}
}
</script>
<body onload="refresh();">
<p>Messages:</p>
<div id="chatlog"></div>
<p>
Your Message:
<input id="text" type="text" onKeyDown="ctlent(event)"/>
<input type="button" value="Send" onclick="sendMessage()"/>
</p>
</body>
</html>
chat.java
package com.dwr.test;
import java.util.List;
import java.util.LinkedList;
public class Chat
{
static LinkedList messages =new LinkedList();
public List addMessage(String text)
{
if (text != null &&
text.trim().length() > 0)
{
messages.addFirst(new Message(text));
while (messages.size() > 10)
{
messages.removeLast();
}
}
return messages;
}
public List getMessages()
{
return messages;
}
}
Message.java
package com.dwr.test;
public class Message
{
public Message(String newtext)
{
text = newtext;
if (text.length() > 256)
{
text = text.substring(0, 256);
}
text = text.replace('<', '[');
text = text.replace('&', '_');
}
public long getId()
{
return id;
}
public String getText()
{
return text;
}
long id = System.currentTimeMillis();
String text;
}
dwr.xml中加入
<create creator="new" javascript="Chat">
<param name="class" value="com.dwr.test.Chat"/>
</create>
<convert converter="bean" match="com.dwr.test.Message"/>
分享到:
相关推荐
本教程通过一个简单的聊天室应用,深入探讨DWR的核心功能和使用方法。** ### 1. DWR基本原理 DWR通过在服务器端部署一个Servlet,这个Servlet处理来自客户端的AJAX请求,并将结果以JSON或XML格式返回。在客户端,...
在本项目"jsp DWR框架推模式实现的聊天室"中,我们将探讨如何利用DWR的推送(Push)模式来构建一个实时的在线聊天应用。** 首先,我们需要了解DWR的基本工作原理。DWR通过在浏览器和服务器之间建立一个持久连接,...
Java+dwr框架实现聊天室是使用Java语言和dwr框架实现的服务器推技术,实现了实时通信的聊天室功能。下面将详细介绍该技术的实现过程和相关知识点。 一、dwr 框架简介 dwr(Direct Web Remoting)是一种基于Ajax...
综上所述,这个项目涵盖了DWR的基本应用,以及如何利用它实现实时通信,增强用户交互,包括聊天室、级联选择和搜索提示功能。这些知识点不仅涉及到技术实现,也强调了用户体验的设计。通过这样的实践,开发者可以更...
**DWR(Direct Web Remoting)技术详解及聊天室实现** DWR,全称为Direct Web Remoting,是一种在Web应用程序中实现服务器端与客户端之间直接交互的技术。它允许JavaScript在浏览器端直接调用Java方法,提供了类似...
总结:通过使用DWR的Comet推送功能,我们可以创建一个高效的、无需刷新的多人聊天室。这种技术克服了传统Ajax轮询的缺点,实现了真正意义上的实时通信,但同时也需要注意服务器资源的管理和优化,以确保系统的稳定性...
Spring框架和Direct Web Remoting (DWR) 是构建Web应用程序的强大组合,尤其适用于实现动态、实时的交互功能,如无刷新聊天室。这个项目展示了如何利用这两个技术来创建一个无需刷新页面就能进行实时通信的聊天应用...
Spring提供稳定的服务层支持,而DWR则负责实现高效的客户端和服务器通信,尤其是Server Push特性,使得聊天功能更加实时和流畅。通过合理的架构设计和安全控制,这样的聊天系统能够为用户提供优秀的交互体验。
总结,通过DWR实现Google自动提示功能,不仅涉及到了DWR框架的使用,还涵盖了AJAX通信、JavaScript与Java的交互、前端事件监听和数据处理等多个知识点。理解和实践这一实例,有助于提升你在Web开发中的综合技能。
本项目“一个Ajax和DWR框架的最简单2个应用--简易聊天室”旨在通过这两个技术的结合,实现一个基本的在线聊天功能。 Ajax是一种不刷新整个页面即可与服务器交换数据并更新部分网页的技术,它通过JavaScript异步调用...
DWR(Direct Web Remoting)是一种Java技术,用于在Web应用...通过以上分析,我们可以看出DWR在这个在线即时聊天系统中的关键作用,它不仅简化了前后端的交互,还实现了高效的实时通信,使得私聊功能得以流畅地运行。
通过DWR,我们可以使用JavaScript直接调用服务器端的Java方法,实现Ajax(Asynchronous JavaScript and XML)的功能,即在后台与服务器交互数据并局部更新网页。 **Ajax**的核心是利用JavaScript进行异步数据请求,...
总结来说,DWR网页聊天室Demo为我们提供了一个学习和实践DWR技术的良好平台,它展示了如何使用DWR实现实时的浏览器与服务器通信,以及如何构建一个简单的在线聊天应用。通过研究和理解这个示例,开发者能够更好地...
在本案例中,我们使用DWR来实现实时的消息提示功能,即用户A发送消息给用户B后,用户B的页面能即时显示有未读消息的通知。 1. **DWR基础概念**: DWR的核心功能是创建JavaScript和Java之间的桥梁,使得前端可以...
运行时,服务器会监听特定的端口,客户端通过浏览器访问聊天室页面,页面中的JavaScript代码使用DWR调用后端服务,实现聊天功能。 总之,这个项目展示了如何结合Spring、DWR和Comet技术构建一个实时的多人聊天室。...
DWR(Direct Web Remoting)是一种Java库,...通过以上步骤,我们可以利用DWR推技术构建一个功能完备、实时的站内聊天室,提供良好的用户体验。不过,实际开发过程中还需注意代码的模块化、可维护性和遵循最佳实践。
Spring整合DWR(Direct Web Remoting)以实现Comet技术,是构建实时、无刷新的多人聊天室的一种高效方法。这种技术允许服务器向客户端推送数据,而无需客户端频繁发起请求,从而大大提升了用户体验。下面我们将深入...
本篇文章将详细讲解如何利用DWR 3实现推送功能。 1. **DWR 3 的基本概念** DWR 3 提供了一种安全、高效的机制,使得JavaScript可以调用Java方法,并将结果返回到页面上。这种机制是基于HTTP的异步请求,因此无需...
- **实时更新**:使用DWR的Push技术,服务器可以主动将新消息推送到客户端,实现即时聊天。 6. **学习与调试** - **Chat_dwr**:这个文件可能是项目源码,包括HTML、CSS、JavaScript、Java和DWR配置文件等,通过...
6. **安全性与优化**:使用DWR时要注意安全问题,比如防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。此外,为了优化性能,可以考虑缓存结果,限制推送频率,或者使用批量推送等策略。 7. **调试与测试**:DWR提供了...