JAVA中DWR開發項目實戰經驗

          Posted on 2006-09-12 14:17 java^_^梟龍 閱讀(2158) 評論(1)  編輯  收藏

          自己在公司網站開發總用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" "<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;
          }

          Feedback

          # re: JAVA中DWR開發項目實戰經驗  回復  更多評論   

          2006-09-12 17:32 by fengzl
          DWR簡單好用,不過對javsscript要求較高,在稍微復雜的應用中如果你水平夠完全可以用javascript實現一個客戶端mvc,比較節省代碼~~

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          posts - 2, comments - 1, trackbacks - 0, articles - 0

          Copyright © java^_^梟龍

          主站蜘蛛池模板: 芜湖县| 克拉玛依市| 新乡县| 北碚区| 旅游| 黑河市| 德昌县| 石泉县| 昌平区| 莎车县| 抚宁县| 宾川县| 佛冈县| 泌阳县| 石城县| 五原县| 息烽县| 鄄城县| 达尔| 保靖县| 托克托县| 姚安县| 长治市| 云浮市| 沙湾县| 南丰县| 山丹县| 长兴县| 枝江市| 江达县| 达尔| 朔州市| 繁峙县| 垦利县| 茌平县| 涟水县| 静安区| 牙克石市| 托克托县| 堆龙德庆县| 于都县|