学习Jetty AJAX Chat实例

时间:2022-06-30 08:10:58

第一次接触Jetty感觉还不错,小而简单速度也较快。对于纯java开发的开源web服务器来说确实值得推荐。

今天在http://jetty.mortbay.org/上下载了Jetty 6版本,解压后无需安装就可以运行了(双击bin目录下的Jetty-Service.exe)。只得注意的是jettty也是使用的8080端口,所以机器上同时配置tomcat的朋友可以修改一下jetty的默认端口。(contrib目录就是jetty的配置文件的所在位置,打开jetty.xml找到<Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set>修改成8090就可以了)

初次,使用jetty当然要看看jetty自带example。在webapps目录下有一个test文件夹,里面包含了几个request,session,cookies,jsp的例子。其中我比较感兴趣的应该是Jetty AJAX Chat这个小例子。简单的几个文件就完成了一个在线chat,适合移植到任意的web系统当中,所以纪录一下方便以后使用。

1.chat.html(主要的部分是chatroom的div,引用的时候直接把这段copy出来就好了)

学习Jetty AJAX Chat实例< html >
学习Jetty AJAX Chat实例
< head >
学习Jetty AJAX Chat实例    
< title > Jetty chat </ title >
学习Jetty AJAX Chat实例    
< script  type ="text/javascript"  src ="../concat?/js/behaviour.js&/js/ajax.js&/chat/chat.js" ></ script >
学习Jetty AJAX Chat实例    
< link  rel ="stylesheet"  type ="text/css"  href ="chat.css" ></ link >
学习Jetty AJAX Chat实例
</ head >
学习Jetty AJAX Chat实例
< body  onunload ="room.leave()" >
学习Jetty AJAX Chat实例
< h1 > Jetty AJAX Chat </ h1 >
学习Jetty AJAX Chat实例Three really important things about this chat room demo:
< ul >
学习Jetty AJAX Chat实例
< li > It has really HORRID Styling.  Please feel free to donate a pretty css :-) </ li >
学习Jetty AJAX Chat实例
< li > It is written using js techniques provided by
学习Jetty AJAX Chat实例
< href ="http://bennolan.com/behaviour/" > Behaviour </ a >  and
学习Jetty AJAX Chat实例
< li > It uses Jetty6  < href ="/javadoc/org/mortbay/util/ajax/Continuation.html" > Continuations </ a > . No threads 
学习Jetty AJAX Chat实例are used when waiting for async events (see below).
学习Jetty AJAX Chat实例
</ li >
学习Jetty AJAX Chat实例
</ ul >
学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例
< div  id ="chatroom" >
学习Jetty AJAX Chat实例 
< div  id ="chat" ></ div >< div  id ="members" ></ div >
学习Jetty AJAX Chat实例 
< div  id ="input" >
学习Jetty AJAX Chat实例   
< div  id ="join"   >
学习Jetty AJAX Chat实例     Username:
&nbsp; < input  id ="username"  type ="text" />< input  id ="joinB"  class ="button"  type ="submit"  name ="join"  value ="Join" />
学习Jetty AJAX Chat实例   
</ div >
学习Jetty AJAX Chat实例   
< div  id ="joined"  class ="hidden" >
学习Jetty AJAX Chat实例     Chat:
&nbsp; < input  id ="phrase"  type ="text" ></ input >
学习Jetty AJAX Chat实例     
< input  id ="sendB"  class ="button"  type ="submit"  name ="join"  value ="Send" />
学习Jetty AJAX Chat实例     
< input  id ="leaveB"  class ="button"  type ="submit"  name ="join"  value ="Leave" />
学习Jetty AJAX Chat实例   
</ div >
学习Jetty AJAX Chat实例  
</ div >
学习Jetty AJAX Chat实例 
</ div >
学习Jetty AJAX Chat实例
</ body >
学习Jetty AJAX Chat实例
</ html >

chat.html引用了三个js(ajax.js和beheaviour.js是jetty自带的JS是ajax的实现部分)

  • ajax.js
  • behaviour.js
  • chat.js(聊天功能的是要实现部分)

2.chat.js

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
function  $()  ... {
学习Jetty AJAX Chat实例  
return document.getElementById(arguments[0]);
学习Jetty AJAX Chat实例}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
function  $F()  ... {
学习Jetty AJAX Chat实例  
return document.getElementById(arguments[0]).value;
学习Jetty AJAX Chat实例}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例
var  room  =  
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
... {
学习Jetty AJAX Chat实例  _last: 
"",
学习Jetty AJAX Chat实例  _username: 
null,
学习Jetty AJAX Chat实例  
学习Jetty AJAX Chat实例  join: 
function(name)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例  
...{
学习Jetty AJAX Chat实例    
if (name == null || name.length==0 )
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例    
...{
学习Jetty AJAX Chat实例      alert(
'Please enter a username!');
学习Jetty AJAX Chat实例    }

学习Jetty AJAX Chat实例    
else
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例    
...{
学习Jetty AJAX Chat实例       
this._username=name;
学习Jetty AJAX Chat实例       $(
'join').className='hidden';
学习Jetty AJAX Chat实例       $(
'joined').className='';
学习Jetty AJAX Chat实例       $(
'phrase').focus();
学习Jetty AJAX Chat实例       Behaviour.apply();
学习Jetty AJAX Chat实例       ajax.sendMessage(
'join', room._username);
学习Jetty AJAX Chat实例    }

学习Jetty AJAX Chat实例  }
,
学习Jetty AJAX Chat实例  
学习Jetty AJAX Chat实例  leave: 
function()
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例  
...{
学习Jetty AJAX Chat实例       
// switch the input form
学习Jetty AJAX Chat实例
       $('join').className='';
学习Jetty AJAX Chat实例       $(
'joined').className='hidden';
学习Jetty AJAX Chat实例       $(
'username').focus();
学习Jetty AJAX Chat实例       Behaviour.apply();
学习Jetty AJAX Chat实例       ajax.sendMessage(
'leave',room._username);
学习Jetty AJAX Chat实例       room._username
=null;
学习Jetty AJAX Chat实例  }
,
学习Jetty AJAX Chat实例  
学习Jetty AJAX Chat实例  chat: 
function(text)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例  
...{
学习Jetty AJAX Chat实例    
if (text != null && text.length>0 )
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例    
...{
学习Jetty AJAX Chat实例        ajax.sendMessage(
'chat',text);
学习Jetty AJAX Chat实例    }

学习Jetty AJAX Chat实例  }
,
学习Jetty AJAX Chat实例  
学习Jetty AJAX Chat实例  _chat: 
function(message)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例  
...{
学习Jetty AJAX Chat实例     
var divChat=document.getElementById("chat");
学习Jetty AJAX Chat实例     
var from=message.getAttribute('from');
学习Jetty AJAX Chat实例     
var special=message.getAttribute('alert');
学习Jetty AJAX Chat实例     
var text=message.childNodes[0].data;
学习Jetty AJAX Chat实例     
学习Jetty AJAX Chat实例     
if ( special!='true' && from == room._last )
学习Jetty AJAX Chat实例         from
="...";
学习Jetty AJAX Chat实例     
else
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例     
...{
学习Jetty AJAX Chat实例         room._last
=from;
学习Jetty AJAX Chat实例         from
+=":";
学习Jetty AJAX Chat实例     }

学习Jetty AJAX Chat实例     
学习Jetty AJAX Chat实例     
var parentElement = divChat;
学习Jetty AJAX Chat实例     
if (special=='true')
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例     
...{
学习Jetty AJAX Chat实例       
var span = document.createElement("span");
学习Jetty AJAX Chat实例       span.className
="alert";
学习Jetty AJAX Chat实例       divChat.appendChild(span);
学习Jetty AJAX Chat实例       parentElement
=span;
学习Jetty AJAX Chat实例     }

学习Jetty AJAX Chat实例     
var spanFrom = document.createElement("span");
学习Jetty AJAX Chat实例     spanFrom.className
="from";
学习Jetty AJAX Chat实例     spanFrom.innerHTML
=from+"&nbsp;";
学习Jetty AJAX Chat实例     
var spanText = document.createElement("span");
学习Jetty AJAX Chat实例     spanText.className
="text";
学习Jetty AJAX Chat实例     spanText.innerHTML
=text;
学习Jetty AJAX Chat实例     
var lineBreak = document.createElement("br");
学习Jetty AJAX Chat实例     parentElement.appendChild(spanFrom);
学习Jetty AJAX Chat实例     parentElement.appendChild(spanText);
学习Jetty AJAX Chat实例     divChat.appendChild(lineBreak);
学习Jetty AJAX Chat实例     divChat.scrollTop 
= divChat.scrollHeight - divChat.clientHeight;     
学习Jetty AJAX Chat实例  }
,
学习Jetty AJAX Chat实例   
学习Jetty AJAX Chat实例  _members: 
function(message)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例  
...{   

学习Jetty AJAX Chat实例    
try
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例    
...{
学习Jetty AJAX Chat实例        
var divMembers = document.getElementById("members");
学习Jetty AJAX Chat实例        divMembers.innerHTML
="";
学习Jetty AJAX Chat实例        
var spanMember = document.createElement("span");
学习Jetty AJAX Chat实例        
var ul = document.createElement("ul");
学习Jetty AJAX Chat实例        spanMember.appendChild(ul);
学习Jetty AJAX Chat实例        
var x = message.getElementsByTagName("li");
学习Jetty AJAX Chat实例        
for (var i=0;i<x.length;i++)    //以列表形式循环输出div message的叶子节点
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例        
...{
学习Jetty AJAX Chat实例          
var li = document.createElement("li");
学习Jetty AJAX Chat实例          li.innerHTML 
= x[i].firstChild.nodeValue;
学习Jetty AJAX Chat实例          ul.appendChild(li);
学习Jetty AJAX Chat实例        }
 
学习Jetty AJAX Chat实例        divMembers.appendChild(spanMember);
学习Jetty AJAX Chat实例    }

学习Jetty AJAX Chat实例    
catch(e)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例    
...{
学习Jetty AJAX Chat实例        window.status
="ERROR: members "+e.name + "" + e.message;
学习Jetty AJAX Chat实例        
// alert("_members " + e);
学习Jetty AJAX Chat实例
    }

学习Jetty AJAX Chat实例  }

学习Jetty AJAX Chat实例}
;
学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例ajax.addListener(
' chat ' ,room._chat);
学习Jetty AJAX Chat实例ajax.addListener(
' members ' ,room._members);
学习Jetty AJAX Chat实例ajax.addPollHandler(room._poll);
学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例
var  chatBehaviours  =  
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
...
学习Jetty AJAX Chat实例  
'#username' : function(element)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例  
...{
学习Jetty AJAX Chat实例    element.setAttribute(
"autocomplete","OFF"); 
学习Jetty AJAX Chat实例    element.onkeyup 
= function(ev)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例    
...{          
学习Jetty AJAX Chat实例        
var keyc=EvUtil.getKeyCode(ev);
学习Jetty AJAX Chat实例        
if (keyc==13 || keyc==10)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例        
...{
学习Jetty AJAX Chat实例          room.join($F(
'username'));
学习Jetty AJAX Chat实例      
return false;
学习Jetty AJAX Chat实例    }

学习Jetty AJAX Chat实例    
return true;
学习Jetty AJAX Chat实例    }
 
学习Jetty AJAX Chat实例  }
,
学习Jetty AJAX Chat实例  
学习Jetty AJAX Chat实例  
'#joinB' : function(element)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例  
...{
学习Jetty AJAX Chat实例    element.onclick 
= function(event)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例    
...{
学习Jetty AJAX Chat实例      room.join($F(
'username'));
学习Jetty AJAX Chat实例      
return false;
学习Jetty AJAX Chat实例    }

学习Jetty AJAX Chat实例  }
,
学习Jetty AJAX Chat实例  
学习Jetty AJAX Chat实例  
'#phrase' : function(element)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例  
...{
学习Jetty AJAX Chat实例    element.setAttribute(
"autocomplete","OFF");
学习Jetty AJAX Chat实例    element.onkeyup 
= function(ev)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例    
...{   
学习Jetty AJAX Chat实例        
var keyc=EvUtil.getKeyCode(ev);
学习Jetty AJAX Chat实例        
if (keyc==13 || keyc==10)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例        
...{
学习Jetty AJAX Chat实例          room.chat($F(
'phrase'));
学习Jetty AJAX Chat实例          $(
'phrase').value='';
学习Jetty AJAX Chat实例      
return false;
学习Jetty AJAX Chat实例    }

学习Jetty AJAX Chat实例    
return true;
学习Jetty AJAX Chat实例    }

学习Jetty AJAX Chat实例  }
,
学习Jetty AJAX Chat实例  
学习Jetty AJAX Chat实例  
'#sendB' : function(element)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例  
...{
学习Jetty AJAX Chat实例    element.onclick 
= function(event)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例    
...{
学习Jetty AJAX Chat实例      room.chat($F(
'phrase'));
学习Jetty AJAX Chat实例      $(
'phrase').value='';
学习Jetty AJAX Chat实例      
return false;
学习Jetty AJAX Chat实例    }

学习Jetty AJAX Chat实例  }
,
学习Jetty AJAX Chat实例  
学习Jetty AJAX Chat实例  
'#leaveB' : function(element)
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例  
...{
学习Jetty AJAX Chat实例    element.onclick 
= function()
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例    
...{
学习Jetty AJAX Chat实例      room.leave();
学习Jetty AJAX Chat实例      
return false;
学习Jetty AJAX Chat实例    }

学习Jetty AJAX Chat实例  }

学习Jetty AJAX Chat实例}
;
学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例Behaviour.register(chatBehaviours); 

3.chat.css(在线聊天的样式控制)

学习Jetty AJAX Chat实例div 
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
{...} { 
学习Jetty AJAX Chat实例  border
: 0px solid black; 
学习Jetty AJAX Chat实例
}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例div#chatroom
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
{...} {
学习Jetty AJAX Chat实例  width
: 41em;
学习Jetty AJAX Chat实例  background-color
: #e0e0e0;
学习Jetty AJAX Chat实例  border
: 1px solid black; 
学习Jetty AJAX Chat实例
}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例div#chat
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
{...} {
学习Jetty AJAX Chat实例  float
: left;
学习Jetty AJAX Chat实例  width
: 30em;
学习Jetty AJAX Chat实例  height
: 20ex;
学习Jetty AJAX Chat实例  overflow
: auto; 
学习Jetty AJAX Chat实例  background-color
: #f0f0f0;
学习Jetty AJAX Chat实例  padding
: 4px;
学习Jetty AJAX Chat实例  border-right
: 1px solid black; 
学习Jetty AJAX Chat实例
}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例div#members
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
{...} {
学习Jetty AJAX Chat实例  float
: left;
学习Jetty AJAX Chat实例  clear
: right;
学习Jetty AJAX Chat实例  width
: 10em;
学习Jetty AJAX Chat实例  border
: 0px solid black; 
学习Jetty AJAX Chat实例
}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例div#input
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
{...} {
学习Jetty AJAX Chat实例  clear
: both;
学习Jetty AJAX Chat实例  padding
: 4px;
学习Jetty AJAX Chat实例  border-top
: 1px solid black; 
学习Jetty AJAX Chat实例
}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例input#phrase
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
{...} {
学习Jetty AJAX Chat实例  width
:28em;
学习Jetty AJAX Chat实例  background-color
: #e0f0f0;
学习Jetty AJAX Chat实例
}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例input#username
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
{...} {
学习Jetty AJAX Chat实例  width
:14em;
学习Jetty AJAX Chat实例  background-color
: #e0f0f0;
学习Jetty AJAX Chat实例
}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例div.hidden
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
{...} {
学习Jetty AJAX Chat实例  display
: none;
学习Jetty AJAX Chat实例
}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例span.from
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
{...} {
学习Jetty AJAX Chat实例  font-weight
: bold;
学习Jetty AJAX Chat实例
}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例span.alert
学习Jetty AJAX Chat实例学习Jetty AJAX Chat实例
{...} {
学习Jetty AJAX Chat实例  font-style
: italic;
学习Jetty AJAX Chat实例
}

实现结果预览:

学习Jetty AJAX Chat实例