jsp課程設(shè)計(jì)報(bào)告--在線聊天室_第1頁(yè)
已閱讀1頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  《Web數(shù)據(jù)庫(kù)開發(fā)》</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p> ?。?011— 2012學(xué)年 第 2 學(xué)期)</p><p>  題 目: 聊 天 室 </p><p>  專 業(yè): 信息管理與信息系統(tǒng) &l

2、t;/p><p><b>  目 錄</b></p><p><b>  目 錄II</b></p><p><b>  1 概 述1</b></p><p>  1.1 設(shè)計(jì)目標(biāo)1</p><p>  1.2 項(xiàng)目規(guī)劃1</p>

3、<p>  1.3 開發(fā)工具的選擇2</p><p><b>  2 需求分析3</b></p><p>  2.1 需求分析3</p><p>  2.2 數(shù)據(jù)庫(kù)表設(shè)計(jì)4 </p><

4、p>  3 系統(tǒng)總體設(shè)計(jì)6</p><p><b>  3.1系統(tǒng)結(jié)構(gòu)6</b></p><p>  4系統(tǒng)功能模塊實(shí)現(xiàn)7</p><p>  4.1 登錄和注冊(cè)界面模塊7</p><p>  4.2 選擇聊天室界面模塊10</p><p>  4.3 聊天室主界面模塊12&l

5、t;/p><p>  4.4 用管理員高級(jí)功能管理模塊20</p><p><b>  5 調(diào)試分析28</b></p><p><b>  6心得體會(huì)29</b></p><p><b>  致 謝30</b></p><p>  參 考 文 獻(xiàn)

6、31</p><p><b>  1 概 述</b></p><p><b>  1.1 設(shè)計(jì)目標(biāo)</b></p><p>  從功能角色上來講,在線聊天室可以有兩種類型的用戶,普通用戶和管理員。</p><p>  其中,普通用戶在登錄后,可以通過聊天界面,發(fā)送聊天消息,進(jìn)行聊天交流。如果是第一

7、次進(jìn)入到該聊天室,還可以通過本模塊提供的注冊(cè)功能,提交注冊(cè)信息,成為本聊天室的用戶。</p><p><b>  1.2 項(xiàng)目規(guī)劃</b></p><p>  本聊天室需要提供如下的界面和功能。</p><p>  1、需要提供支持用戶登陸以及身份驗(yàn)證的WEB界面和實(shí)現(xiàn)后臺(tái)對(duì)應(yīng)功能的模塊。</p><p>  2、需要

8、一個(gè)支持用戶注冊(cè)的界面和對(duì)應(yīng)的后臺(tái)模塊。</p><p>  3、需要為普通用戶提供一個(gè)瀏覽所有聊天室的界面和對(duì)應(yīng)后臺(tái)功能模塊。在這個(gè)界面中,用戶可以聊天室聊天。</p><p>  4、需要為普通用戶提供一個(gè)支持多人聊天和私人聊天的界面和對(duì)應(yīng)的后臺(tái)模塊。</p><p>  5.用戶可以根據(jù)自己的個(gè)人喜好選擇頭像,字體顏色,發(fā)送動(dòng)態(tài)動(dòng)畫圖象,查看在線用戶,及用戶資

9、料</p><p>  1.3 開發(fā)工具的選擇 </p><p>  SQL Server 是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同開發(fā)的,于1988 年推出了第一個(gè)OS/2 版本。在Windows NT 推出后,Microsoft與Sybase 在SQL Server 的開發(fā)上就分道揚(yáng)鑣了,Microsoft 將SQL

10、Server 移植到Windows NT系統(tǒng)上,專注于開發(fā)推廣SQL Server 的Windows NT 版本。Sybase 則較專注于SQL Server在UNIX 操作系統(tǒng)上的應(yīng)SQL Server安裝界面用。</p><p>  SQL Server 2005特性一瞥:   </p><p><b>  企業(yè)數(shù)據(jù)管理 </b></p&

11、gt;<p><b>  開發(fā)人員生產(chǎn)力 </b></p><p><b>  商務(wù)智能 </b></p><p>  有關(guān)開發(fā)的10個(gè)最重要的特點(diǎn) </p><p>  有關(guān)商業(yè)智能特征的10個(gè)最重要的特點(diǎn)</p><p>  JSP(JavaServer Pages)是由Sun M

12、icrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件(*.jsp)。用JSP開發(fā)的Web應(yīng)用是跨平臺(tái)的,即能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。 </p><p>  JSP技術(shù)使用Java編程語(yǔ)言編

13、寫類XML的tags和scriptlets,來封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)的處理邏輯。網(wǎng)頁(yè)還能通過tags和 scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。Web服務(wù)器在遇到訪問JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。JSP與Java Servlet一樣,是在服務(wù)器端執(zhí)行

14、的,通常返回該客戶端的就是一個(gè)HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP的1.0規(guī)范的最后版本是1999年9月推出的,12月又推出了1.1規(guī)范。目前較新的是JSP1.2規(guī)范,JSP2.0規(guī)范的征求意見稿也已出臺(tái)。</p><p>  JSP頁(yè)面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁(yè)面被客戶端請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。Java Se

15、rvlet 是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要Java Servlet和JSP配合才能完成。</p><p><b>  JSP的優(yōu)勢(shì)</b></p><p><b>  2 需求分析</b></p><p><b>  2.1 需求分析</b></p><p

16、>  21世紀(jì)是網(wǎng)絡(luò)的時(shí)代,Internet的普及已經(jīng)影響了傳統(tǒng)的交流方式。網(wǎng)絡(luò)聊天室系統(tǒng)是計(jì)算機(jī)網(wǎng)絡(luò)發(fā)展的產(chǎn)物,是最為常見、最受廣大互聯(lián)網(wǎng)使用者所認(rèn)可的基于Web的網(wǎng)絡(luò)應(yīng)用系統(tǒng)。隨著互聯(lián)網(wǎng)的發(fā)展,人們通過網(wǎng)絡(luò)可以更方便快捷地進(jìn)行信息交流和學(xué)習(xí),聊天系統(tǒng)可以為大家提供一個(gè)更好的交流平臺(tái),在這個(gè)平臺(tái)上,人們可以通過文字與符號(hào)進(jìn)行實(shí)時(shí)的交談、聊天,它是一個(gè)向整個(gè)因特網(wǎng)開放的地方,是提供給網(wǎng)民一個(gè)交友與娛樂的場(chǎng)所,在聊天室里網(wǎng)民可選擇自

17、已的聊天對(duì)象,與其進(jìn)行對(duì)話交流,是網(wǎng)民之間相互溝通、交流情感的最佳方式之一。</p><p>  從傳播方式上講, 聊天室傳播是非線性傳播。非線形傳播指聊天室傳播的信息是為無(wú)數(shù)的共享空間的網(wǎng)絡(luò)用戶所發(fā)出的, 任何擁有網(wǎng)絡(luò)傳播權(quán)利的人都可以得到, 網(wǎng)絡(luò)打破了傳統(tǒng)媒體單向傳送信息的格局, 信息傳播者與接收者之間的互動(dòng)變得切實(shí)可行。從傳播的信息內(nèi)涵上講, 聊天室的消息結(jié)構(gòu)是無(wú)中心的。聊天室所給受 眾帶來的信息與感受作為

18、一種現(xiàn)代生活資源, 在實(shí)現(xiàn)了從傳統(tǒng)大眾傳播的單向傳播向多向傳播的轉(zhuǎn)變后, 極大地拓展了現(xiàn)代生活空間, 使傳播者與受眾之間的直接連通成為可能。這一轉(zhuǎn)變使整個(gè)傳播結(jié)構(gòu)與傳播效果發(fā)生了巨大變化, 是傳統(tǒng)媒體無(wú)法比擬的。</p><p>  根據(jù)CNNIC 發(fā)布的第十五次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告, 有3.5%的商業(yè)網(wǎng)站提供網(wǎng)絡(luò)聊天。熱衷于網(wǎng)上聊天的人群大部分集中于16~24 年齡段上, 經(jīng)濟(jì)上沒有獨(dú)立, 又缺乏網(wǎng)上支

19、付手段的特點(diǎn)也是聊天室不為商業(yè)網(wǎng)站看好的重要理由之一。目前經(jīng)營(yíng)商獲得收益的渠道有兩條: 在線廣告和電子商務(wù)。青少年在經(jīng)濟(jì)上沒有自立, 經(jīng)營(yíng)商通常很難通過電子商務(wù)獲得收入; 而在在線廣告方面, 各商業(yè)網(wǎng)站目前的廣告客戶主要目標(biāo)人群鎖定中、高收入的白領(lǐng)階層, 面向青少年消費(fèi)市場(chǎng)的網(wǎng)上廣告幾乎沒有, 無(wú)法通過網(wǎng)上廣告獲得收益。因此, 對(duì)于青少年聚集的網(wǎng)上聊天室, 網(wǎng)絡(luò)公司自然沒有太高的熱情。 實(shí)際上, 青少年的消費(fèi)市場(chǎng)一向是規(guī)??捎^、利潤(rùn)豐厚

20、的一塊大蛋糕。無(wú)論流行音樂、新潮服飾、娛樂場(chǎng)所, 青少年消費(fèi)都是其中的主力。論市場(chǎng)規(guī)模, 全國(guó)青少年消費(fèi)市場(chǎng)的總規(guī)模不低于一千億。我們看到, 并非聊天的人群本身缺乏商業(yè)價(jià)值, 而是目前沒有好的辦法將這種價(jià)值加以發(fā)掘。在線廣告理應(yīng)成為聊天室獲得商業(yè)收益的主要手段。</p><p>  隨著研發(fā)技術(shù)的進(jìn)步,qq.msn等聊天軟件的面世,取代了聊天室。同時(shí),聊天室內(nèi)用戶過激,不法等言辭,也是聊天室逐漸沒落的原因。但是,

21、聊天軟件的局限性,不比聊天室開放性強(qiáng),面向廣。只有真正了解聊天室的主要使用人群, 才能更好地設(shè)置聊天室的主題、話題、頁(yè)面風(fēng)格等。要重視聊天室產(chǎn)品的氛圍經(jīng)濟(jì)效益, 可以成為各種汽車俱樂部、攀巖俱樂部、自行車俱樂部等的合作伙伴, 吸引更多會(huì)員,成為網(wǎng)上會(huì)所。聊天室還應(yīng)注意自身形象的塑造, 只有個(gè)性化、特色化才能使聊天室產(chǎn)品脫穎而出。要注意適當(dāng)?shù)膹V告宣傳。在以上的種種因素下,本課題的研究方向就是運(yùn)用JSP技術(shù)營(yíng)造一個(gè)簡(jiǎn)單,友好的網(wǎng)絡(luò)聊天室,為

22、互聯(lián)網(wǎng)使用者提供學(xué)習(xí),討論和交流的平臺(tái)。</p><p>  2.2 數(shù)據(jù)庫(kù)表設(shè)計(jì)</p><p>  在123數(shù)據(jù)庫(kù)中建一個(gè)名為StuInfo的表,用于保存用戶信息,及保存注冊(cè)用戶信息 </p><p><b>  3 系統(tǒng)總體設(shè)計(jì)</b></p><p><b>  3.1系統(tǒng)結(jié)構(gòu)</b>&

23、lt;/p><p>  本系統(tǒng)將分為四大模塊,即數(shù)據(jù)庫(kù)通用模塊、用戶登錄與注冊(cè)模塊、聊天主模塊、具體描述如表3.1所示。</p><p>  表3.1 系統(tǒng)結(jié)構(gòu)表</p><p><b>  4系統(tǒng)功能模塊實(shí)現(xiàn)</b></p><p>  4.1 登錄和注冊(cè)界面模塊</p><p>  登錄界面模塊是

24、通過訪問數(shù)據(jù)庫(kù)中的StoInfo表中的userName和Password兩個(gè)字段來判斷用戶名和密碼是否匹配,如果匹配就登入成功,否則登入失敗,如果用戶是第一次登錄該聊天室,則自動(dòng)注冊(cè)。如圖4.1所示。</p><p><b>  圖4.1 登錄界面</b></p><p><b>  核心代碼:</b></p><p> 

25、 <%@ page contentType="text/html; charset=GBK" %></p><p><b>  <html></b></p><p><b>  <head></b></p><p><b>  <title>&l

26、t;/b></p><p><b>  login</b></p><p><b>  </title></b></p><p><b>  </head></b></p><p>  <body bgcolor="pink&quo

27、t; ></p><p><b>  <h1></b></p><p><b>  <%</b></p><p>  String err=request.getParameter("err");</p><p>  session.setAttribut

28、e("err",err);</p><p>  if(err!=null){</p><p>  if(err.equals("A")){%></p><p>  <%="你已經(jīng)登陸!"%><%</p><p><b>  }</b>&l

29、t;/p><p>  else if(err.equals("X")){</p><p>  %><%="恭喜你,注冊(cè)成功!" %><%</p><p><b>  }</b></p><p>  else if(err.equals("Y"

30、)){</p><p>  %><%="您已注冊(cè)!" %><%</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  %></b></p><p>&

31、lt;b>  </h1></b></p><p><b>  <center></b></p><p>  <form method="post" name="form" action="loginYc.jsp"></p><p>

32、  <font color="000000" size="100" face="華文行楷">427聊天室</font></p><p><b>  <br></b></p><p><b>  <br></b></p><

33、;p>  <p>姓名:<input type="text" name="userName" /><br><p></p><p>  <p>密碼:<input type="password" name="passWord"/><br><p&g

34、t;</p><p>  <p><input type="submit" value="登陸" ></p><p>  <input type="reset" value="重置"><p></p><p><b>  </

35、form></b></p><p>  <a href="regedit.jsp">注冊(cè)新用戶</a></p><p><b>  </center></b></p><p>  <!--特效工具--></p><p>  <!D

36、OCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></p><p>  <html xmlns="http://www.w3.org/1999/xhtml"&

37、gt;</p><p><b>  <head></b></p><p>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /></p><p>  <title>無(wú)標(biāo)題文檔<

38、;/title></p><p>  <style type="text/css"></p><p><b>  </style></b></p><p><b>  </head></b></p><p>  <body onLo

39、ad="MM_timelinePlay('Timeline1');MM_timelinePlay('Timeline2');"></p><p>  <script language="JavaScript" type=""></p><p>  function MM_timel

40、inePlay(tmLnName, myID) {</p><p>  var i,j,tmLn,props,keyFrm,sprite,numKeyFr,firstKeyFr,propNum,theObj,firstTime=false;</p><p>  if (document.MM_Time == null) MM_initTimelines();</p><

41、p>  tmLn = document.MM_Time[tmLnName];</p><p>  if (myID == null) { myID = ++tmLn.ID; firstTime=true;}</p><p>  if (myID == tmLn.ID) {</p><p>  setTimeout('MM_timelinePlay(&q

42、uot;'+tmLnName+'",'+myID+')',tmLn.delay);</p><p>  fNew = ++tmLn.curFrame;</p><p>  for (i=0; i<tmLn.length; i++) {</p><p>  sprite = tmLn[i];</p>

43、<p>  if (sprite.charAt(0) == 's') {</p><p>  if (sprite.obj) {</p><p>  numKeyFr = sprite.keyFrames.length; firstKeyFr = sprite.keyFrames[0];</p><p>  if (fNew >=

44、firstKeyFr && fNew <= sprite.keyFrames[numKeyFr-1]) {//in range</p><p><b>  keyFrm=1;</b></p><p>  for (j=0; j<sprite.values.length; j++) {</p><p>  props

45、= sprite.values[j];</p><p>  if (numKeyFr != props.length) {</p><p>  if (props.prop2 == null) sprite.obj[props.prop] = props[fNew-firstKeyFr];</p><p>  else sprite.obj[props

46、.prop2][props.prop] = props[fNew-firstKeyFr];</p><p><b>  } else {</b></p><p>  while (keyFrm<numKeyFr && fNew>=sprite.keyFrames[keyFrm]) keyFrm++;</p><p>

47、  if (firstTime || fNew==sprite.keyFrames[keyFrm-1]) {</p><p>  if (props.prop2 == null) sprite.obj[props.prop] = props[keyFrm-1];</p><p>  else sprite.obj[props.prop2][props.prop] = prop

48、s[keyFrm-1];</p><p><b>  } } } } }</b></p><p>  } else if (sprite.charAt(0)=='b' && fNew == sprite.frame) eval(sprite.value);</p><p>  if (fNew > tmLn

49、.lastFrame) tmLn.ID = 0;</p><p><b>  } }</b></p><p><b>  }</b></p><p>  function MM_timelineGoto(tmLnName, fNew, numGotos) {</p><p>  var i,j,tm

50、Ln,props,keyFrm,sprite,numKeyFr,firstKeyFr,lastKeyFr,propNum,theObj;</p><p>  if (document.MM_Time == null) MM_initTimelines();</p><p>  tmLn = document.MM_Time[tmLnName];</p><p>  

51、if (numGotos != null)</p><p>  if (tmLn.gotoCount == null) tmLn.gotoCount = 1;</p><p>  else if (tmLn.gotoCount++ >= numGotos) {tmLn.gotoCount=0; return}</p><p>  jmpFwd = (fNew

52、> tmLn.curFrame);</p><p>  for (i = 0; i < tmLn.length; i++) {</p><p>  sprite = (jmpFwd)? tmLn[i] : tmLn[(tmLn.length-1)-i];</p><p>  if (sprite.charAt(0) == "s") {

53、</p><p>  numKeyFr = sprite.keyFrames.length;</p><p>  firstKeyFr = sprite.keyFrames[0];</p><p>  lastKeyFr = sprite.keyFrames[numKeyFr - 1];</p><p>  if ((jmpFwd &

54、& fNew<firstKeyFr) || (!jmpFwd && lastKeyFr<fNew)) continue;</p><p>  for (keyFrm=1; keyFrm<numKeyFr && fNew>=sprite.keyFrames[keyFrm]; keyFrm++);</p><p>  for (j

55、=0; j<sprite.values.length; j++) {</p><p>  props = sprite.values[j];</p><p>  if (numKeyFr == props.length) propNum = keyFrm-1</p><p>  else propNum = Math.min(Math.max(0,fNew-f

56、irstKeyFr),props.length-1);</p><p>  if (sprite.obj != null) {</p><p>  if (props.prop2 == null) sprite.obj[props.prop] = props[propNum];</p><p>  else sprite.obj[props.prop2

57、][props.prop] = props[propNum];</p><p><b>  } }</b></p><p>  } else if (sprite.charAt(0)=='b' && fNew == sprite.frame) eval(sprite.value);</p><p><b&g

58、t;  }</b></p><p>  tmLn.curFrame = fNew;</p><p>  if (tmLn.ID == 0) eval('MM_timelinePlay(tmLnName)');</p><p><b>  }</b></p><p>  function MM_

59、preloadImages() {</p><p>  if (document.images) {</p><p>  var imgFiles = MM_preloadImages.arguments;</p><p>  if (document.preloadArray==null) document.preloadArray = new Array();&

60、lt;/p><p>  var i = document.preloadArray.length;</p><p>  with (document) for (var j=0; j<imgFiles.length; j++) if (imgFiles[j].charAt(0)!="#"){</p><p>  preloadArray[i]

61、= new Image;</p><p>  preloadArray[i++].src = imgFiles[j];</p><p><b>  } }</b></p><p><b>  }</b></p><p>  function MM_swapImgRestore() {</p&g

62、t;<p>  if (document.MM_swapImgData != null)</p><p>  for (var i=0; i<(document.MM_swapImgData.length-1); i+=2)</p><p>  document.MM_swapImgData[i].src = document.MM_swapImgData[i+1];&

63、lt;/p><p><b>  }</b></p><p>  function MM_swapImage() {</p><p>  var i,j=0,objStr,obj,swapArray=new Array,oldArray=document.MM_swapImgData;</p><p>  for (i=0;

64、i < (MM_swapImage.arguments.length-2); i+=3) {</p><p>  objStr = MM_swapImage.arguments[(navigator.appName == 'Netscape')?i:i+1];</p><p>  if ((objStr.indexOf('document.layers[

65、9;)==0 && document.layers==null) ||</p><p>  (objStr.indexOf('document.all[') ==0 && document.all ==null))</p><p>  objStr = 'document'+objStr.substring(objSt

66、r.lastIndexOf('.'),objStr.length);</p><p>  obj = eval(objStr);</p><p>  if (obj != null) {</p><p>  swapArray[j++] = obj;</p><p>  swapArray[j++] = (oldArray==

67、null || oldArray[j-1]!=obj)?obj.src:oldArray[j];</p><p>  obj.src = MM_swapImage.arguments[i+2];</p><p><b>  } }</b></p><p>  document.MM_swapImgData = swapArray;</p&

68、gt;<p><b>  }</b></p><p>  function MM_initTimelines() { //v4.0</p><p>  //MM_initTimelines() Copyright 1997 Macromedia, Inc. All rights reserved.</p><p>  var ns

69、 = navigator.appName == "Netscape";</p><p>  var ns4 = (ns && parseInt(navigator.appVersion) == 4);</p><p>  var ns5 = (ns && parseInt(navigator.appVersion) > 4);<

70、;/p><p>  var macIE5 = (navigator.platform ? (navigator.platform == "MacPPC") : false) && (navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersi

71、on) >= 4);</p><p>  document.MM_Time = new Array(2);</p><p>  document.MM_Time[0] = new Array(2);</p><p>  document.MM_Time["Timeline1"] = document.MM_Time[0];</p>

72、;<p>  document.MM_Time[0].MM_Name = "Timeline1";</p><p>  document.MM_Time[0].fps = 15;</p><p>  document.MM_Time[0][0] = new String("sprite");</p><p>  

73、document.MM_Time[0][0].slot = 1;</p><p><b>  if (ns4)</b></p><p>  document.MM_Time[0][0].obj = document["Layer10"];</p><p>  else if (ns5)</p><p>

74、;  document.MM_Time[0][0].obj = document.getElementById("Layer10");</p><p><b>  else</b></p><p>  document.MM_Time[0][0].obj = document.all ? document.all["Layer10&quo

75、t;] : null;</p><p>  document.MM_Time[0][0].keyFrames = new Array(1, 5, 9, 13, 15, 21, 24, 29, 33, 37, 41, 43, 47, 50);</p><p>  document.MM_Time[0][0].values = new Array(2);</p><p>

76、;  if (ns5 || macIE5)</p><p>  document.MM_Time[0][0].values[0] = new Array("333px", "354px", "375px", "396px", "415px", "429px", "441px"

77、, "455px", "473px", "502px", "536px", "570px", "599px", "619px", "622px", "619px", "616px", "614px", "613

78、px", "611px", "610px", "612px", "614px", "616px", "614px", "613px", "611px", "608px", "607px", "613px", &

79、quot;620px", "628px", "635px", "623px", "608px", "589px", "568px", "547px", "524px", "500px", "475px", "422px&

80、quot;, "373px", "354px", "339px", "326px", "314px", "298px", "284px", "271px");</p><p><b>  else</b></p><

81、;p>  document.MM_Time[0][0].values[0] = new Array(333,354,375,396,415,429,441,455,473,502,536,570,599,619,622,619,616,614,613,611,610,612,614,616,614,613,611,608,607,613,620,628,635,623,608,589,568,547,524,500,475,422

82、,373,354,339,326,314,298,284,271);</p><p>  document.MM_Time[0][0].values[0].prop = "left";</p><p>  if (ns5 || macIE5)</p><p>  document.MM_Time[0][0].values[1] = new Arr

83、ay("312px", "314px", "316px", "318px", "320px", "324px", "331px", "336px", "335px", "328px", "319px", "30

84、5px", "287px", "237px", "194px", "201px", "210px", "216px", "222px", "227px", "232px", "235px", "234px",

85、"233px", "234px", "234px", "235px", "236px", "238px", "238px", "237px", "236px", "242px", "257px", "273px

86、", "290px", "305px", "316px", "326px", "333px", "336px", "320px", "305px", "309px", "318px", "329px", &qu

87、ot;341px", "360px", "382px", "404px");</p><p><b>  else</b></p><p>  document.MM_Time[0][0].values[1] = new Array(312,314,316,318,320,324,331,336,3

88、35,328,319,305,287,237,194,201,210,216,222,227,232,235,234,233,234,234,235,236,238,238,237,236,242,257,273,290,305,316,326,333,336,320,305,309,318,329,341,360,382,404);</p><p>  document.MM_Time[0][0].values

89、[1].prop = "top";</p><p>  if (!ns4) {</p><p>  document.MM_Time[0][0].values[0].prop2 = "style";</p><p>  document.MM_Time[0][0].values[1].prop2 = "style&q

90、uot;;</p><p><b>  }</b></p><p>  document.MM_Time[0][1] = new String("behavior");</p><p>  document.MM_Time[0][1].frame = 51;</p><p>  document.MM

91、_Time[0][1].value = "MM_timelineGoto('Timeline1','1')";</p><p>  document.MM_Time[0].lastFrame = 51;</p><p>  document.MM_Time[1] = new Array(2);</p><p>  

92、document.MM_Time["Timeline2"] = document.MM_Time[1];</p><p>  document.MM_Time[1].MM_Name = "Timeline2";</p><p>  document.MM_Time[1].fps = 15;</p><p>  document

93、.MM_Time[1][0] = new String("sprite");</p><p>  document.MM_Time[1][0].slot = 1;</p><p><b>  if (ns4)</b></p><p>  document.MM_Time[1][0].obj = document["

94、Layer11"];</p><p>  else if (ns5)</p><p>  document.MM_Time[1][0].obj = document.getElementById("Layer11");</p><p><b>  else</b></p><p>  doc

95、ument.MM_Time[1][0].obj = document.all ? document.all["Layer11"] : null;</p><p>  document.MM_Time[1][0].keyFrames = new Array(1, 4, 7, 11, 14, 18, 22, 26, 30, 34, 38, 42, 45);</p><p>

96、  document.MM_Time[1][0].values = new Array(2);</p><p>  if (ns5 || macIE5)</p><p>  document.MM_Time[1][0].values[0] = new Array("78px", "86px", "94px", "99px

97、", "99px", "96px", "91px", "85px", "77px", "70px", "66px", "71px", "79px", "89px", "91px", "91px&quo

98、t;, "91px", "92px", "96px", "102px", "107px", "111px", "111px", "110px", "108px", "109px", "112px", "116p

99、x", "122px", "129px", "138px", "148px", "161px", "177px", "197px", "219px", "243px", "270px", "301px", &q

100、uot;336px", "371px", "405px", "446px", "486px", "526px");</p><p><b>  else</b></p><p>  document.MM_Time[1][0].values[0] = new

101、Array(78,86,94,99,99,96,91,85,77,70,66,71,79,89,91,91,91,92,96,102,107,111,111,110,108,109,112,116,122,129,138,148,161,177,197,219,243,270,301,336,371,405,446,486,526);</p><p>  document.MM_Time[1][0].values

102、[0].prop = "left";</p><p>  if (ns5 || macIE5)</p><p>  document.MM_Time[1][0].values[1] = new Array("306px", "278px", "251px", "225px", "2

103、03px", "183px", "165px", "155px", "146px", "137px", "125px", "101px", "75px", "54px", "61px", "69px", &qu

104、ot;78px", "88px", "106px", "126px", "147px", "168px", "186px", "202px", "216px", "230px", "240px", "249px"

105、;, "256px", "265px", "276px", "289px", "301px", "312px", "321px", "328px", "333px", "338px", "341px", "34

106、4px", "345px", "344px", "340px", "334px", "327px");</p><p><b>  else</b></p><p>  document.MM_Time[1][0].values[1] = new Array(

107、306,278,251,225,203,183,165,155,146,137,125,101,75,54,61,69,78,88,106,126,147,168,186,202,216,230,240,249,256,265,276,289,301,312,321,328,333,338,341,344,345,344,340,334,327);</p><p>  document.MM_Time[1][0]

108、.values[1].prop = "top";</p><p>  if (!ns4) {</p><p>  document.MM_Time[1][0].values[0].prop2 = "style";</p><p>  document.MM_Time[1][0].values[1].prop2 = "

109、style";</p><p><b>  }</b></p><p>  document.MM_Time[1][1] = new String("behavior");</p><p>  document.MM_Time[1][1].frame = 46;</p><p>  docu

110、ment.MM_Time[1][1].value = "MM_timelineGoto('Timeline2','1')";</p><p>  document.MM_Time[1].lastFrame = 46;</p><p>  for (i=0; i<document.MM_Time.length; i++) {</

111、p><p>  document.MM_Time[i].ID = null;</p><p>  document.MM_Time[i].curFrame = 0;</p><p>  document.MM_Time[i].delay = 1000/document.MM_Time[i].fps;</p><p><b>  }<

112、;/b></p><p><b>  }</b></p><p><b>  </script></b></p><p>  <span class="STYLE6"></span></p><p>  <div id="

113、Layer10" style="position:absolute; left:333px; top:312px; width:33px; height:35px; z-index:39"><img src="images/butterfly01.gif" width="86" height="81" alt=""&

114、gt;</div></p><p>  <div id="Layer11" style="position:absolute; left:78px; top:306px; width:29px; height:29px; z-index:38"><img src="images/butterfly02.gif" width=

115、"79" height="78" alt=""></div></p><p><b>  </body></b></p><p><b>  </html></b></p><p>  4.2聊天室主界面模塊</p&

116、gt;<p>  此界面由三個(gè)用戶輸入模塊、聊天信息顯示模塊和在線用戶列表等三個(gè)模塊組成。</p><p><b>  核心代碼:</b></p><p>  <%@ page contentType="text/html; charset=GBK" import="java.util.*"%><

117、/p><p><b>  <html></b></p><p><b>  <head></b></p><p><b>  <title></b></p><p><b>  index</b></p>&l

118、t;p><b>  </title></b></p><p><b>  </head></b></p><p>  <frameset cols="*,45%" ></p><p>  <frameset rows="*,30%"

119、 ></p><p>  <frame src="jspread.jsp" /></p><p>  <frame src="write.jsp" /></p><p>  </frameset></p><p>  <frameset rows=&qu

120、ot;70%,30%"></p><p>  <frame src="showlist.jsp" /></p><p>  <frame src="select.jsp"></p><p>  </frameset></p><p>  <bo

121、dy bgcolor="#ffffff" ></p><p><b>  <%</b></p><p>  String userName=(String)session.getAttribute("userName");</p><p>  if(null==userName){</p

122、><p>  response.sendRedirect("login.jsp");</p><p><b>  }</b></p><p><b>  %></b></p><p><b>  </body></b></p>&

123、lt;p><b>  </html></b></p><p>  4.3 管理員高級(jí)管理功能界面</p><p>  如果是管理員登錄,則可通過高級(jí)功能進(jìn)入高級(jí)管理界面,可以實(shí)現(xiàn)踢人、刪除用戶以及查看所有用戶的功能, </p><p>  核心代碼: <%@page contentType="text/ht

124、ml; charset=GBK" import="java.util.*,example.*"%></p><p><b>  <html></b></p><p><b>  <head></b></p><p>  <title>deluser&l

125、t;/title></p><p><b>  </head></b></p><p>  <body bgcolor="#ffffff"></p><p>  <h1>deleuser</h1></p><p><b>  <%&

126、lt;/b></p><p>  String deleuser = request.getParameter("deleuser");</p><p>  // String user = (String) session.getAttribute("user");</p><p>  List list = (Lis

127、t) application.getAttribute("txtlist");</p><p>  //application.setAttribute("user", list);</p><p>  //list.remove(user);</p><p>  for (int i = 0; i < list.siz

128、e(); i++) {</p><p>  ChatBean cb=(ChatBean)list.get(i);</p><p>  String strUs=cb.getUserName();</p><p>  if(strUs.equals(deleuser)){</p><p>  list.remove(i);</p>

129、<p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  application.setAttribute("txtlist", list);</p><p> 

130、 List delelist;</p><p>  if (application.getAttribute("delelist") == null) {</p><p>  delelist = new ArrayList();</p><p><b>  }</b></p><p><b&g

131、t;  else {</b></p><p>  delelist = (List) application.getAttribute("delelist");</p><p><b>  }</b></p><p>  delelist.add(deleuser);</p><p>  

132、application.setAttribute("delelist", delelist);</p><p>  response.sendRedirect("adminT.jsp");</p><p><b>  %></b></p><p><b>  </body>&l

133、t;/b></p><p><b>  </html></b></p><p><b>  5 調(diào)試分析</b></p><p>  在本次jsp網(wǎng)絡(luò)編程課程設(shè)計(jì)中遇到了很多實(shí)際性問題在實(shí)際設(shè)計(jì)中才發(fā)現(xiàn),書本上理論性的東西與在實(shí)際運(yùn)用中的還是有一定的出入的,所以有些問題不但要深入地理解,而且要不斷地更正以

134、前的錯(cuò)誤思維。以下是我在設(shè)計(jì)系統(tǒng)時(shí)的三個(gè)階段中遇到的問題:</p><p>  1. JSP設(shè)計(jì)階段</p><p>  JSP設(shè)計(jì)界面及邏輯功能時(shí),遇到了前所未有的困難,開始設(shè)計(jì)的時(shí)候,是想為了簡(jiǎn)單起見,把系統(tǒng)的功能和界面都放在jsp中來寫,也就不用java程序了,可是沒寫幾個(gè)jsp頁(yè)面就寫不下去了,處處是錯(cuò)誤,而且還看不懂錯(cuò)在什么地方,想了好久,最后決定,系統(tǒng)功能在java中寫,界面的

135、設(shè)計(jì)在jsp中寫,這樣jsp里面的東西就顯得簡(jiǎn)單一些了,更具邏輯性。各種復(fù)雜的問題也就慢慢的迎刃而解了! </p><p>  2. 數(shù)據(jù)庫(kù)設(shè)計(jì)階段</p><p>  數(shù)據(jù)庫(kù)表建成后,各個(gè)表要有一個(gè)字增的非空主鍵,在建立表與表之間的相互聯(lián)系時(shí)會(huì)出現(xiàn)錯(cuò)誤。另外,數(shù)據(jù)庫(kù)建成后,在為數(shù)據(jù)庫(kù)創(chuàng)建用戶時(shí),創(chuàng)建的用戶不能映射到此數(shù)據(jù)庫(kù)!</p><p>  3. JSP連接數(shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論