第一次接触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实例
function $() {
学习Jetty AJAX Chat实例  
return document.getElementById(arguments[0]);
学习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实例  _last: 
"",
学习Jetty AJAX Chat实例  _username: 
null,
学习Jetty AJAX Chat实例  
学习Jetty AJAX Chat实例  join: 
function(name)
学习Jetty AJAX Chat实例  
{
学习Jetty AJAX Chat实例    
if (name == null || name.length==0 )
学习Jetty AJAX Chat实例    
{
学习Jetty AJAX Chat实例      alert(
'Please enter a username!');
学习Jetty AJAX Chat实例    }

学习Jetty AJAX Chat实例    
else
学习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实例       
// 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实例    
if (text != null && text.length>0 )
学习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实例     
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实例         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实例       
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实例    
try
学习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实例          
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实例        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实例  
'#username' : function(element)
学习Jetty AJAX Chat实例  
{
学习Jetty AJAX Chat实例    element.setAttribute(
"autocomplete","OFF"); 
学习Jetty AJAX Chat实例    element.onkeyup 
= function(ev)
学习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实例          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实例    element.onclick 
= function(event)
学习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实例    element.setAttribute(
"autocomplete","OFF");
学习Jetty AJAX Chat实例    element.onkeyup 
= function(ev)
学习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实例          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实例    element.onclick 
= function(event)
学习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实例    element.onclick 
= function()
学习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实例  border
: 0px solid black; 
学习Jetty AJAX Chat实例
}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例div#chatroom
学习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实例  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实例  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实例  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实例  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实例  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实例  display
: none;
学习Jetty AJAX Chat实例
}

学习Jetty AJAX Chat实例
学习Jetty AJAX Chat实例span.from
学习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实例  font-style
: italic;
学习Jetty AJAX Chat实例
}

实现结果预览:

学习Jetty AJAX Chat实例

相关文章: