ajax聊天室(JSP版)1__JSP

來源:互聯網
上載者:User

初學JSP編程,一般喜歡做做留言板、聊天室、購物網站或論壇等。下面我詳細說說如何?一個基於WEB的無重新整理聊天室。

註:參考了Struts版的 ajaxchat。

平台或技術:

Windows XP,JSP2.0,Servlet2.4,JSTL,Tomcat6,Ajax,Log4J,ant,eclipse等等。

思路:

1  頁面(資訊)重新整理

 由於基於HTTP協議的WEB決定了伺服器與使用者端的串連不是一直保持著的,那WEB形式的聊天室,其局限性顯而易見。一句話:實現WEB形式的聊天室,首先要解決重新整理聊天資訊的問題。

一般做法有兩種:在ajax出現前,使用隱藏頁面(用iframe標籤)定時向伺服器發出請求,並將伺服器返回的資訊進行顯示;在ajax出現後,利用其非同步通訊原理,可以在頁面後台“悄悄”地向伺服器發現請求。這裡用的方式是後者。

2  功能分析

使用WEB聊天室的一般步驟:進入聊天室,進行聊天(向所有人發聊天資訊,向個人發送聊天資訊),退出聊天室。

這裡要實現的正是以上描述的最簡易功能的聊天室。但是,這還是一個多房間多使用者的聊天室。以物件導向的思路來分析,主要涉及三個對象,分別是:聊天資訊(Message)、聊天室(房間)(Room)、使用者(User)。

聊天資訊(Message)應該包含:聊天內容,所在房間,寄件者,接受者

聊天室(Room)應該包含:使用者(使用者列表)、聊天資訊(聊天資訊集)

使用者(User)應該包括:使用者名稱,所在房間

對以上三個基本對象分析後,就可以建立相應JAVA類。下面直接給出這三個類的代碼,具體分析待下回分解。

  package org.jvk.chatroom.bean;   publi c class Message {     // 屬於某房間 (Room)     private String room ;     // 訊息內容     private String content ;     // 發送到某使用者 (User)     private String to ;     // 由誰發送的 , 即屬於屬於 User     private String from ;     // 發送時間     private long date ;     public long getDate() {        return date ;     }     public void setDate( long date) {        this . date = date;     }     public String getContent() {        return content ;     }     public void setContent(String content) {        this . content = content;     }     public String getFrom() {        return from ;     }     public void setFrom(String from) {        this . from = from;     }     public String getRoom() {        return room ;     }     public void setRoom(String room) {        this . room = room;     }     public String getTo() {        return to ;     }     public void setTo(String to) {        this . to = to;     } }   package org.jvk.chatroom.bean;   import java.util.ArrayList; import java.util.List;   public class Room {       // 資訊     private List<Message> messages = new ArrayList<Message>(50) {        public boolean add(Message message) {            if ( this .size() > maxMessage )               this .clear();            boolean b = super .add(message);            if (b)               messageUpdateTime = System.currentTimeMillis();            return b;         }     };       // 使用者     private List<User> users = new ArrayList<User>(50) {        public boolean add(User user) {            if ( this .size() > maxUser )               this .clear();            boolean b = super .add(user);            if (b)               userListUpdateTime = System.currentTimeMillis();            return b;        }          public boolean remove(User user) {            boolean b = super .remove(user);            if (b)               userListUpdateTime = System.currentTimeMillis();            return b;        }     };       private long userListUpdateTime = System.currentTimeMillis();       private long messageUpdateTime = userListUpdateTime ;       // 房間名     private String name ;       // 房間通告     private String notice ;       // 房間保留最大聊天資訊數     private int maxMessage = 20;       // 房間保留最大使用者數     private int maxUser = 20;       private static List<User> NullUsers = new ArrayList<User>(0);       private static ArrayList<Message> NullMessages = new ArrayList<Message>(0);       public void setMaxMessage( int maxMessage) {        this . maxMessage = maxMessage;     }       public String getName() {        return name ;     }       public void setName(String name) {        this . name = name;     }       public String getNotice() {        return notice ;     }       public void setNotice(String notice) {        this . notice = notice;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.