`

JAVA中DWR开发项目实战经验(转载)

    博客分类:
  • dwr
阅读更多
自己在公司网站开发总用DWR开发的一个简单聊天
本人也是在网站开发地图时有到了这个技术,刚学习DWR半个月
就把随手写的一个简单聊天来给大家共享,切磋一下。
由于考虑到某些局部原因,只发表了一些重要技术方面的资料,没有把全部东西共享。请个人体谅。
由于DWR2.0有个Bug ,我用的DWR1.0,但是,它必须用JDK1.4
dwr.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
  <init></init>
  <allow>
<create creator="new" javascript="CityChatsend" scope="session">
      <param name="class" value="com.aaa.CharChat.DWR.DWRCityChar_send"/>
      <include method="Chat_send"/> 
    </create>
<create creator="new" javascript="CityChatRead" scope="session">
      <param name="class" value="com.aaa.CharChat.DWR.DWRCityChar_Read"/>
      <include method="ChatRead"/> 
    </create>
<create creator="new" javascript="CityChatInit" scope="application">
      <param name="class" value="com.aaa.CharChat.DWR.DWRCityChar_Init"/>
      <include method="getNew_Old"/>
   <include method="setNew_Old"/> 
    </create>

  </allow>
</dwr>
DWRCityChar_send JAVA文件
package com.aaa.CharChat.DWR;


import java.sql.*;
import java.util.*;
import com.db.DatabaseConnection;
import com.aaa.CharChat.initSQL.CityChart_InitSQL;
import java.util.Date;
import java.text.SimpleDateFormat;
/**
*Title  : 魅力城市聊天保存初始变量
*Author : JAVA^_^枭龙---孙德华
*Project: 数字城市
*Date   : 2006-09-9
**/

public class DWRCityChar_Init
{
private static int now_ChatId=0;
private static String InitSay="[公告^_^]:欢迎大家入住魅力城市^_^";
private static String InitError="[公告^_^]:对不起!系统故障!我们会尽快解决!";
private static String New_Old="0";
public static String getInitError()
{
  return InitError;
}
public static String getNew_Old()
{
  return New_Old;
}
public static void setNew_Old()
{
  New_Old="0";
}
public static synchronized void setInitSay(String Say)
{
  InitSay=Say;
}
public static synchronized int getnow_ChatId()
{
  if(now_ChatId==0)
  {
   int temp_ID=getRenow_ChatId();
   if(temp_ID>0)
   {
    setnow_ChatId(temp_ID);
   }else
   {
    startnewChat();
   }
  }
  New_Old="1";//加载聊天记录
  return now_ChatId;
}
public static synchronized void setnow_ChatId(int ChatId)
{
  now_ChatId=ChatId;
}
public static synchronized void startnewChat()
{
  Connection conn=null;
     PreparedStatement prepare=null;
     try
     {
     conn=DatabaseConnection.getConnection();
     prepare=conn.prepareStatement(CityChart_InitSQL.getinsertnewChat());
     Date online=new Date();
        SimpleDateFormat fo=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String riqi=fo.format(online);
        prepare.setString(1,riqi);
        prepare.setString(2,InitSay);
        int result=prepare.executeUpdate();
        if(result>0)
        {
         setnow_ChatId(result);
        }
        else
        {
         startnewChat();
        }
        prepare.close();
        conn.close();
     }catch(Exception we)
     {
         System.out.println(we.getMessage());
     }finally
     {
          try
      {
      if(!conn.isClosed())
      {
      prepare.close();
      conn.close();
      }
      }
      catch(Exception ew)
      {
      }
     }
}
public static int getRenow_ChatId()
{
Connection conn=null;
    PreparedStatement prepare=null;
    ResultSet result=null;
    int Return=0;
    try
    {
    conn=DatabaseConnection.getConnection();
    prepare=conn.prepareStatement(CityChart_InitSQL.getselectnewChatId());
    result=prepare.executeQuery();
    if(result.next())
    {
     Return=result.getInt("Id");
    }
    result.close();
    prepare.close();
    conn.close();
    }catch(Exception we)
    {
     Return=-1;
        System.out.println(we.getMessage());
    }finally
    {
          try
     {
     if(!conn.isClosed())
     {
     prepare.close();
     conn.close();
     }
     }
     catch(Exception ew)
     {
     }
    }
    return Return;
}
}


DWRCityChar_send JAVA文件
package com.aaa.CharChat.DWR;

import java.sql.*;
import java.util.*;
import com.db.DatabaseConnection;
import com.aaa.CharChat.DWR.DWRCityChar_Init;
import com.aaa.CharChat.initSQL.CityChart_InitSQL;

/**
*Title  : 魅力城市聊天发送
*Author : JAVA^_^枭龙---孙德华
*Project: 数字城市
*Date   : 2006-9-9
**/
public class DWRCityChar_send
{
public int Chat_send(String User_name,String Content)
{
  int Return=0;
  try
  {
  String result="["+User_name+"]说:"+Content;
  int nowId=DWRCityChar_Init.getnow_ChatId();
 
  if(nowId>0)
  {
   Return=dosend(nowId,result);
  }else
  {
   Return=-2;
  }
  }catch(Exception we)
  {
  
  }
  return Return;
}
public int dosend(int nowId,String result)
{
  Connection conn=null;
     PreparedStatement prepare=null;
     PreparedStatement prepare1=null;
     ResultSet resu=null;
     String Content="";
     int Return=0;
     try
     {
     conn=DatabaseConnection.getConnection();
     prepare=conn.prepareStatement(CityChart_InitSQL.getselectChatbyId());
     prepare1=conn.prepareStatement(CityChart_InitSQL.getupdateChatbyId());
     prepare.setInt(1,nowId);
     resu=prepare.executeQuery();
     if(resu.next())
     {
      Content=resu.getString("Content");
     }
     resu.close();
     prepare.close();
     if(Content.length()>4000)
     {
     DWRCityChar_Init.startnewChat();
     nowId=DWRCityChar_Init.getnow_ChatId();
     }
     Content=result+"\n"+Content;
     prepare1.setString(1,Content);
     prepare1.setInt(2,nowId);
     Return=prepare1.executeUpdate();
     prepare1.close();
     conn.close();
     }catch(Exception we)
     {
      Return=-1;
         System.out.println(we.getMessage());
     }finally
     {
           try
      {
      if(!conn.isClosed())
      {
      prepare.close();
      prepare1.close();
      conn.close();
      }
      }
      catch(Exception ew)
      {
      }
     }
     return Return;
}
}

DWRCityChar_Read java文件
package com.aaa.CharChat.DWR;

import java.sql.*;
import java.util.*;
import com.db.DatabaseConnection;
import com.aaa.CharChat.DWR.DWRCityChar_Init;
import com.aaa.CharChat.initSQL.CityChart_InitSQL;

/**
*Title  : 魅力城市聊天发送
*Author : JAVA^_^枭龙---孙德华
*Project: 数字城市
*Date   : 2006-9-9
**/
public class DWRCityChar_send
{
public int Chat_send(String User_name,String Content)
{
  int Return=0;
  try
  {
  String result="["+User_name+"]说:"+Content;
  int nowId=DWRCityChar_Init.getnow_ChatId();
 
  if(nowId>0)
  {
   Return=dosend(nowId,result);
  }else
  {
   Return=-2;
  }
  }catch(Exception we)
  {
  
  }
  return Return;
}
public int dosend(int nowId,String result)
{
  Connection conn=null;
     PreparedStatement prepare=null;
     PreparedStatement prepare1=null;
     ResultSet resu=null;
     String Content="";
     int Return=0;
     try
     {
     conn=DatabaseConnection.getConnection();
     prepare=conn.prepareStatement(CityChart_InitSQL.getselectChatbyId());
     prepare1=conn.prepareStatement(CityChart_InitSQL.getupdateChatbyId());
     prepare.setInt(1,nowId);
     resu=prepare.executeQuery();
     if(resu.next())
     {
      Content=resu.getString("Content");
     }
     resu.close();
     prepare.close();
     if(Content.length()>4000)
     {
     DWRCityChar_Init.startnewChat();
     nowId=DWRCityChar_Init.getnow_ChatId();
     }
     Content=result+"\n"+Content;
     prepare1.setString(1,Content);
     prepare1.setInt(2,nowId);
     Return=prepare1.executeUpdate();
     prepare1.close();
     conn.close();
     }catch(Exception we)
     {
      Return=-1;
         System.out.println(we.getMessage());
     }finally
     {
           try
      {
      if(!conn.isClosed())
      {
      prepare.close();
      prepare1.close();
      conn.close();
      }
      }
      catch(Exception ew)
      {
      }
     }
     return Return;
}
}

用到的JAVASCRIPT    JS文件

/**
*Title  : 魅力城市聊天
*Author : JAVA^_^枭龙---孙德华
*Project: 数字城市
*Date   : 2006-09-9
**/
var Send_state=0;//发送状态
var Chat_sendTime=500;
var Chat_sendStart;
var Chat_sendEnd;
var Chat_sendstop;
var Chat_result;
var Chat_startWrite;
var Chat_InitStart;
var Chat_Readtime=500;
function Chathotsend()
{
if(event.keyCode==10)
{
  ChatSend();
}
}
function getChat_Content()
{
var Content=null;
var obj=document.getElementById('chat_input');//获取聊天内容
if(typeof(obj)=='object')
{
  Content=obj.value;
  if(Content!=null&&Content.length>400)
  {
   alert('对不起!你的聊天内容过长,请你说话要简练扼要!');
  }
}else
{
  Content=null;
  alert('程序内部出现异常,抱歉!我们会尽快解决');
}
return Content;
}
function ChatSend()
{
var UserName="";
var obj=document.getElementById('Chat_User_name');//获取聊天内容
if(typeof(obj)=='object')
{
  UserName=obj.value;
}else
{
  UserName==null;
  alert('程序内部出现异常,抱歉!我们会尽快解决');
  return;
}
var Content=getChat_Content();
if(Content==null||Content=='')
{
  ShowAlert('请您输入聊天内容!');
  alert_time=setTimeout('ShowAlertCLose()',alert_showtime);
  alert('请您输入聊天内容!');
  return;
}
Chat_sendstop=setTimeout('ShowAlert()',Chat_sendTime);
doChatSend(UserName,Content);
var chatobj=document.getElementById('chat_input');
chatobj.value='';
chatobj.focus();


}
function doChatSend(UserName,Content)//聊天发送
{
Chat_sendStart=new Date();
CityChatsend.Chat_send(UserName,Content,Chat_doResult);
}
function Chat_doResult(Return)//结果显示
{
Send_state=Return;
Chat_sendEnd=new Date();
var temp=Chat_sendEnd-Chat_sendStart;
if(temp>50)
{
  Chat_sendTime=temp;
}
}
function ShowAlert()
{
clearTimeout(Chat_sendstop);
if(Send_state==-1)
{
  alert('聊天提交时,出现数据库插入异常!抱歉!请你重新输入');
}else if(Send_state==-2)
{
  alert('对不起!聊天系统出现异常,给你带来不便。在此,我代表AAA国际向你表示抱歉……');
}
}
function ChatInit()
{
setInterval('ChatRead()',Chat_Readtime);
}
function ChatRead()
{
var chat_updiv=document.getElementById('chat_input_updiv');
if(chat_updiv.style.display=='')
{
CityChatRead.ChatRead(getChatContent);
Chat_startWrite=setTimeout('WriteChatContent()',1000);
}
}
function WriteChatContent()
{
clearTimeout(Chat_startWrite);
var obj=document.getElementById('chat_content');
if(typeof(obj)=='object')
{
if(Chat_result!=null&&Chat_result!='')
{
  obj.value=Chat_result;
}else
{
  obj.value='数据加载中......';
}
}else
{
  alert('程序内部出现异常,抱歉!我们会尽快解决');
}
Chat_result=null;
}
function getChatContent(result)
{
Chat_result=result;
}
分享到:
评论

相关推荐

    java的DWR项目的实现

    Java的DWR(Direct Web Remoting)项目是一种用于在Web应用程序中实现实时交互的技术,它允许JavaScript在客户端与服务器端的Java代码之间进行直接调用,极大地简化了富Internet应用(RIA)的开发。本项目是基于...

    OA项目实战,ssh+dwr开发的一个好项目

    【OA项目实战,SSH+DWR开发的一个好项目】 OA(Office Automation)系统是企业信息化建设中的重要组成部分,主要用于提高工作效率,实现办公自动化。在这个项目中,SSH(Struts2、Spring、Hibernate)和DWR(Direct...

    java+dwr框架实现聊天室

    该技术的实现过程包括下载dwr.jar文件,配置web.xml文件,开发后台的Java类等步骤。 八、相关技术知识点 * Ajax技术:异步JavaScript和XML技术 * 服务器推技术:服务器主动推送数据到客户端的技术 * dwr 框架:...

    java 采用dwr框架构实现ajax

    Java 使用 Direct Web Remoting (DWR) 框架实现Ajax技术是一种常见的方式,它能够为Web应用程序提供异步更新和交互性。...在实际项目中,结合DWR提供的各种功能和优化手段,可以构建出高效、安全的Web应用。

    基于Java的DWR3测试项目设计源码

    该项目利用Java语言开发,旨在为开发者提供DWR3框架的测试示例,涵盖了DWR3的基本使用、组件集成、交互设计等方面,适用于对DWR3框架感兴趣的开发者。项目结构清晰,代码注释详尽,易于理解和集成。

    java dwr 使用例子

    DWR简化了客户端与服务器端之间的数据交换,使得开发人员可以方便地调用Java方法并更新网页的动态内容,而无需刷新整个页面。 在提供的示例中,我们首先看到一个名为`test.html`的HTML文件,这是客户端的界面。文件...

    dwr小项目及资料

    标题中的“dwr小项目及资料”暗示我们这是一套关于DWR的实践项目和学习资源,可能包含了一些示例代码和文档,帮助我们理解如何在实际项目中应用DWR。 描述中提到的“实现前台javascript直接调用后台业务方法和后台...

    java dwr 框架源码

    Java DWR(Direct Web Remoting)框架是一种在Web应用程序中实现AJAX(Asynchronous JavaScript and XML)交互的技术。它允许JavaScript在客户端与服务器端的Java对象进行直接通信,从而实现页面的部分更新,提高...

    DWR开发培训(PPT)

    1. **减少开发时间**:DWR简化了Web应用的开发流程,尤其是对于需要频繁交互的界面,开发者可以直接在JavaScript中调用Java方法。 2. **提高响应速度**:由于无需刷新整个页面,DWR显著提高了Web页面的响应时间,...

    dwr实战

    ### DWR实战:深入理解DWR函数在前后端通信中的应用 ...总之,DWR提供了一种直观且高效的方式,让前端JavaScript能够无缝地与后端Java对象进行交互,极大地简化了Ajax开发过程中的数据交换和处理逻辑。

    java_ajax框架dwr

    **Java AJAX 框架 DWR 全面解析** DWR (Direct Web Remoting) 是一个...同时,书中可能还会涵盖DWR与其他技术的集成,如Spring、Hibernate等,以及最佳实践和性能优化策略,对于提升你的Java AJAX开发技能大有裨益。

    java项目经验 大概有20个

    这些项目经验反映了开发者在Java企业级应用开发中的广泛技能,包括框架应用、数据库设计、通信协议、用户界面开发、多线程处理、数据导入导出、性能优化等方面。这种全面的经验对于任何Java开发者的简历都是极其宝贵...

    dwr测试,java调用js

    DWR的主要目标是简化AJAX(Asynchronous JavaScript and XML)开发,使得开发者能够轻松地在浏览器中调用服务器上的Java方法,就像调用本地JavaScript函数一样。这个技术极大地提升了用户体验,因为数据可以在不刷新...

    ajax dwr实战

    适合ajax dwr 初学者 本实例所要介绍的是采用dwr来操作页面表单table,发送各种(带有参数包括简单类型,list,map类型)请求,并返回各种信息(包括普通的javabean,java.util.List,java.util.Map信息)

    DWR 视频教程 使用DWR开发AJAX For JavaEE

    9. **实战项目**:“[浪曦原创]零散视频三 使用DWR开发AJAX For J2EE(JustCode).wrf”可能是一个实际操作视频,详细演示如何使用DWR构建一个简单的AJAX应用,通过观看可以加深对上述理论知识的理解。 10. **资源...

    级联菜单 java+dwr

    要使用DWR,你需要在项目中配置DWR的Servlet,并在Java类中添加可被远程调用的方法。 对于数据库部分,这里选择了SQL Server 2000。在实现级联菜单时,通常需要三个表:一个存储顶级分类,另一个存储子分类,第三个...

    java的dwr的联级操作ajax

    Java Direct Web Remoting (DWR) 是一个开源的Java库,它允许JavaScript在浏览器中直接调用服务器端的Java方法,实现Ajax(异步JavaScript和XML)应用。DWR简化了客户端与服务器端的交互,使得开发人员可以利用Java...

    dwr开发文档

    DWR框架简化了基于AJAX的Web应用开发,特别适合那些希望利用Java的强大功能而同时保持前端交互性的项目。通过上述章节的介绍,我们对DWR的基础知识、运行机制、配置管理以及高级用法有了较为全面的认识。这将有助于...

    java DWR与界面开发文档

    Java DWR(Direct Web Remoting)是一种开源的技术,它允许JavaScript和Java在Web应用程序中进行实时通信,从而创建更富交互性的用户界面。这个文档集合提供了关于如何利用DWR进行界面开发的深入理解和实践指导。 1...

Global site tag (gtag.js) - Google Analytics