JSP课程设计报告在线聊天室Word文档格式.docx
《JSP课程设计报告在线聊天室Word文档格式.docx》由会员分享,可在线阅读,更多相关《JSP课程设计报告在线聊天室Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。
JSP页面由HTML代码和嵌入其中的Java代码所组成。
服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。
JSP的优势
2需求分析
2.1需求分析
21世纪是网络的时代,Internet的普及已经影响了传统的交流方式。
网络聊天室系统是计算机网络发展的产物,是最为常见、最受广大互联网使用者所认可的基于Web的网络应用系统。
随着互联网的发展,人们通过网络可以更方便快捷地进行信息交流和学习,聊天系统可以为大家提供一个更好的交流平台,在这个平台上,人们可以通过文字与符号进行实时的交谈、聊天,它是一个向整个因特网开放的地方,是提供给网民一个交友与娱乐的场所,在聊天室里网民可选择自已的聊天对象,与其进行对话交流,是网民之间相互沟通、交流情感的最佳方式之一。
从传播方式上讲,聊天室传播是非线性传播。
非线形传播指聊天室传播的信息是为无数的共享空间的网络用户所发出的,任何拥有网络传播权利的人都可以得到,网络打破了传统媒体单向传送信息的格局,信息传播者与接收者之间的互动变得切实可行。
从传播的信息内涵上讲,聊天室的消息结构是无中心的。
聊天室所给受众带来的信息与感受作为一种现代生活资源,在实现了从传统大众传播的单向传播向多向传播的转变后,极大地拓展了现代生活空间,使传播者与受众之间的直接连通成为可能。
这一转变使整个传播结构与传播效果发生了巨大变化,是传统媒体无法比拟的。
根据CNNIC发布的第十五次中国互联网络发展状况统计报告,有3.5%的商业网站提供网络聊天。
热衷于网上聊天的人群大部分集中于16~24年龄段上,经济上没有独立,又缺乏网上支付手段的特点也是聊天室不为商业网站看好的重要理由之一。
目前经营商获得收益的渠道有两条:
在线广告和电子商务。
青少年在经济上没有自立,经营商通常很难通过电子商务获得收入;
而在在线广告方面,各商业网站目前的广告客户主要目标人群锁定中、高收入的白领阶层,面向青少年消费市场的网上广告几乎没有,无法通过网上广告获得收益。
因此,对于青少年聚集的网上聊天室,网络公司自然没有太高的热情。
实际上,青少年的消费市场一向是规模可观、利润丰厚的一块大蛋糕。
无论流行音乐、新潮服饰、娱乐场所,青少年消费都是其中的主力。
论市场规模,全国青少年消费市场的总规模不低于一千亿。
我们看到,并非聊天的人群本身缺乏商业价值,而是目前没有好的办法将这种价值加以发掘。
在线广告理应成为聊天室获得商业收益的主要手段。
随着研发技术的进步,qq.msn等聊天软件的面世,取代了聊天室。
同时,聊天室内用户过激,不法等言辞,也是聊天室逐渐没落的原因。
但是,聊天软件的局限性,不比聊天室开放性强,面向广。
只有真正了解聊天室的主要使用人群,才能更好地设置聊天室的主题、话题、页面风格等。
要重视聊天室产品的氛围经济效益,可以成为各种汽车俱乐部、攀岩俱乐部、自行车俱乐部等的合作伙伴,吸引更多会员,成为网上会所。
聊天室还应注意自身形象的塑造,只有个性化、特色化才能使聊天室产品脱颖而出。
要注意适当的广告宣传。
在以上的种种因素下,本课题的研究方向就是运用JSP技术营造一个简单,友好的网络聊天室,为互联网使用者提供学习,讨论和交流的平台。
2.2数据库表设计
在123数据库中建一个名为StuInfo的表,用于保存用户信息,及保存注册用户信息
3系统总体设计
3.1系统结构
本系统将分为四大模块,即数据库通用模块、用户登录与注册模块、聊天主模块、具体描述如表3.1所示。
模块名
文件名
功能描述
数据库通用管理描述
update.jsp
连接和数据的查询更新操作
用户登录与注册模块
login.jsp
用户登入界面
regedit.jsp
用户登录后台处理界面
adduser.jsp
增加新用户
聊天室模块
loginYc.jsp
检查session信息判断用户是否登陆
index.jsp
聊天框架界面
write.jsp
聊天室输入界面
writeC.jsp
聊天信息发送界面
showlist.jsp
在线用户列表界面
jspread.jsp
聊天信息显示界面
safeout.jsp
离开聊天室
管理员模块
advanced.jsp
管理员管理高级界面
deluser.jsp
删除用户
表3.1系统结构表
4系统功能模块实现
4.1登录和注册界面模块
登录界面模块是通过访问数据库中的StoInfo表中的userName和Password两个字段来判断用户名和密码是否匹配,如果匹配就登入成功,否则登入失败,如果用户是第一次登录该聊天室,则自动注册。
如图4.1所示。
图4.1登录界面
核心代码:
<
%@pagecontentType="
text/html;
charset=GBK"
%>
html>
head>
title>
login
/title>
/head>
bodybgcolor="
pink"
>
h1>
%
Stringerr=request.getParameter("
err"
);
session.setAttribute("
err);
if(err!
=null){
if(err.equals("
A"
)){%>
%="
你已经登陆!
"
%>
}
elseif(err.equals("
X"
)){
恭喜你,注册成功!
Y"
您已注册!
/h1>
center>
formmethod="
post"
name="
form"
action="
loginYc.jsp"
>
fontcolor="
000000"
size="
100"
face="
华文行楷"
427聊天室<
/font>
br>
p>
姓名:
inputtype="
text"
userName"
/>
密码:
password"
passWord"
/>
submit"
value="
登陆"
<
reset"
重置"
/form>
ahref="
regedit.jsp"
注册新用户<
/a>
/center>
!
--特效工具-->
DOCTYPEhtmlPUBLIC"
-//W3C//DTDXHTML1.0Transitional//EN"
"
http:
//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
htmlxmlns="
//www.w3.org/1999/xhtml"
metahttp-equiv="
Content-Type"
content="
charset=gb2312"
无标题文档<
styletype="
text/css"
/style>
bodyonLoad="
MM_timelinePlay('
Timeline1'
Timeline2'
scriptlanguage="
JavaScript"
type="
functionMM_timelinePlay(tmLnName,myID){
vari,j,tmLn,props,keyFrm,sprite,numKeyFr,firstKeyFr,propNum,theObj,firstTime=false;
if(document.MM_Time==null)MM_initTimelines();
tmLn=document.MM_Time[tmLnName];
if(myID==null){myID=++tmLn.ID;
firstTime=true;
if(myID==tmLn.ID){
setTimeout('
MM_timelinePlay("
'
+tmLnName+'
'
+myID+'
)'
tmLn.delay);
fNew=++tmLn.curFrame;
for(i=0;
i<
tmLn.length;
i++){
sprite=tmLn[i];
if(sprite.charAt(0)=='
s'
){
if(sprite.obj){
numKeyFr=sprite.keyFrames.length;
firstKeyFr=sprite.keyFrames[0];
if(fNew>
=firstKeyFr&
&
fNew<
=sprite.keyFrames[numKeyFr-1]){//inrange
keyFrm=1;
for(j=0;
j<
sprite.values.length;
j++){
props=sprite.values[j];
if(numKeyFr!
=props.length){
if(props.prop2==null)sprite.obj[props.prop]=props[fNew-firstKeyFr];
elsesprite.obj[props.prop2][props.prop]=props[fNew-firstKeyFr];
}else{
while(keyFrm<
numKeyFr&
fNew>
=sprite.keyFrames[keyFrm])keyFrm++;
if(firstTime||fNew==sprite.keyFrames[keyFrm-1]){
if(props.prop2==null)sprite.obj[props.prop]=props[keyFrm-1];
elsesprite.obj[props.prop2][props.prop]=props[keyFrm-1];
}}}}}
}elseif(sprite.charAt(0)=='
b'
&
fNew==sprite.frame)eval(sprite.value);
tmLn.lastFrame)tmLn.ID=0;
}}
functionMM_timelineGoto(tmLnName,fNew,numGotos){
vari,j,tmLn,props,keyFrm,sprite,numKeyFr,firstKeyFr,lastKeyFr,propNum,theObj;
if(numGotos!
=null)
if(tmLn.gotoCount==null)tmLn.gotoCount=1;
elseif(tmLn.gotoCount++>
=numGotos){tmLn.gotoCount=0;
return}
jmpFwd=(fNew>
tmLn.curFrame);
for(i=0;
i<
tmLn.length;
sprite=(jmpFwd)?
tmLn[i]:
tmLn[(tmLn.length-1)-i];
if(sprite.charAt(0)=="
s"
lastKeyFr=sprite.keyFrames[numKeyFr-1];
if((jmpFwd&
fNew<
firstKeyFr)||(!
jmpFwd&
lastKeyFr<
fNew))continue;
for(keyFrm=1;
keyFrm<
=sprite.keyFrames[keyFrm];
keyFrm++);
if(numKeyFr==props.length)propNum=keyFrm-1
elsepropNum=Math.min(Math.max(0,fNew-firstKeyFr),props.length-1);
if(sprite.obj!
=null){
if(props.prop2==null)sprite.obj[props.prop]=props[propNum];
elsesprite.obj[props.prop2][props.prop]=props[propNum];
}
tmLn.curFrame=fNew;
if(tmLn.ID==0)eval('
MM_timelinePlay(tmLnName)'
functionMM_preloadImages(){
if(document.images){
varimgFiles=MM_preloadImages.arguments;
if(document.preloadArray==null)document.preloadArray=newArray();
vari=document.preloadArray.length;
with(document)for(varj=0;
imgFiles.length;
j++)if(imgFiles[j].charAt(0)!
="
#"
){
preloadArray[i]=newImage;
preloadArray[i++].src=imgFiles[j];
functionMM_swapImgRestore(){
if(document.MM_swapImgData!
for(vari=0;
(document.MM_swapImgData.length-1);
i+=2)
document.MM_swapImgData[i].src=document.MM_swapImgData[i+1];
functionMM_swapImage(){
vari,j=0,objStr,obj,swapArray=newArray,oldArray=document.MM_swapImgData;
(MM_swapImage.arguments.length-2);
i+=3){
objStr=MM_swapImage.arguments[(navigator.appName=='
Netscape'
)?
i:
i+1];
if((objStr.indexOf('
document.layers['
)==0&
document.layers==null)||
(objStr.indexOf('
document.all['
)==0&
document.all==null))
objStr='
document'
+objStr.substring(objStr.lastIndexOf('
.'
),objStr.length);
obj=eval(objStr);
if(obj!
swapArray[j++]=obj;
swapArray[j++]=(oldArray==null||oldArray[j-1]!
=obj)?
obj.src:
oldArray[j];
obj.src=MM_swapImage.arguments[i+2];
document.MM_swapImgData=swapArray;
functionMM_initTimelines(){//v4.0
//MM_initTimelines()Copyright1997Macromedia,Inc.Allrightsreserved.
varns=navigator.appName=="
Netscape"
;
varns4=(ns&
parseInt(navigator.appVersion)==4);
varns5=(ns&
parseInt(navigator.appVersion)>
4);
varmacIE5=(navigator.platform?
(navigator.platform=="
MacPPC"
):
false)&
(navigator.appName=="
MicrosoftInternetExplorer"
)&
(parseInt(navigator.appVersion)>
=4);
document.MM_Time=newArray
(2);
document.MM_Time[0]=newArray
(2);
document.MM_Time["
Timeline1"
]=document.MM_Time[0];
document.MM_Time[0].MM_Name="
document.MM_Time[0].fps=15;
document.MM_Time[0][0]=newString("
sprite"
document.MM_Time[0][0].slot=1;
if(ns4)
document.MM_Time[0][0].obj=document["
Layer10"
];
elseif(ns5)
document.MM_Time[0][0].obj=document.getElementById("
else
document.MM_Time[0][0].obj=document.all?
document.all["
]:
null;
document.MM_Time[0][0].keyFrames=newArray(1,5,9,13,15,21,24,29,33,37,41,43,47,50);
document.MM_Time[0][0].values=newArray
(2);
if(ns5||macIE5)
document.MM_Time[0][0].values[0]=newArray("
333px"
"
354px"
375px"
396px"
415px"
429px"
441px"
455px"
473px"
502px"
536px"
570px"
599px"
619px"
622px"
616px"
614px"
613px