![課程設(shè)計(jì)簡(jiǎn)單web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)uml設(shè)計(jì)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/91bdd415-db3a-4755-b70d-df8c1b8d6c35/91bdd415-db3a-4755-b70d-df8c1b8d6c351.gif)
![課程設(shè)計(jì)簡(jiǎn)單web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)uml設(shè)計(jì)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/91bdd415-db3a-4755-b70d-df8c1b8d6c35/91bdd415-db3a-4755-b70d-df8c1b8d6c352.gif)
![課程設(shè)計(jì)簡(jiǎn)單web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)uml設(shè)計(jì)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/91bdd415-db3a-4755-b70d-df8c1b8d6c35/91bdd415-db3a-4755-b70d-df8c1b8d6c353.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、簡(jiǎn)單web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)一、設(shè)計(jì)內(nèi)容及設(shè)計(jì)要求WWW的工作基于客戶機(jī)/服務(wù)器計(jì)算模型,由Web瀏覽器(客戶機(jī))和 Web服務(wù)器(服務(wù)器)構(gòu)成, 兩者之間采用超文本傳送協(xié)議(HTTP)進(jìn)行通信,HTTP協(xié)議 關(guān)閉應(yīng)答。的作用原理包括四個(gè)步驟:連接,請(qǐng)求,應(yīng)答 ,設(shè)計(jì)內(nèi)容Web服務(wù)器是web中的關(guān)鍵部件,設(shè)計(jì)一個(gè)簡(jiǎn)單的 Web服務(wù)器,為用戶提供簡(jiǎn) 單的信息服務(wù)。設(shè)計(jì)要求本實(shí)驗(yàn)要求完成一個(gè)簡(jiǎn)單的 web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn),能夠通過(guò)HTTP Get命令 獲得一個(gè)簡(jiǎn)單的HTML文件。設(shè)計(jì)目的通過(guò)web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn),可以達(dá)到以下目的:掌握網(wǎng)絡(luò)編程的知識(shí)與技 能;掌握HTTP協(xié)議的相關(guān)知識(shí);熟悉網(wǎng)
2、絡(luò)軟件的開發(fā)過(guò)程,鍛煉解決實(shí)際問題 的能力。二、總體設(shè)計(jì)HTTP協(xié)議的作用原理包括四個(gè)步驟:連接:Web瀏覽器與 Web服務(wù)器建立連接,打開一個(gè)稱為 socket (套接字)的虛擬文件,此文 件的建立標(biāo)志著連接建立成功。請(qǐng)求:Web瀏覽器通過(guò)socket向Web服務(wù)器提交請(qǐng)求。HTTP的請(qǐng)求一般是 GET或POST命令(POST 用于FORM參數(shù)的傳遞)。GET命令的格式為:GET路徑/文件名 HTTP/1.0文件名指岀所訪問的文件,HTTP/1.0指岀Web瀏覽器使用的HTTP版本。應(yīng)答:Web瀏覽器提交請(qǐng)求后,通過(guò) HTTP協(xié)議傳送給 Web服務(wù)器。Web服務(wù)器接到后,進(jìn)行 事務(wù)處理,處理
3、結(jié)果又通過(guò) HTTP傳回給 Web瀏覽器,從而在 Web瀏覽器上顯示岀所請(qǐng)求的頁(yè) 面。關(guān)閉連接:當(dāng)應(yīng)答結(jié)束后,Web瀏覽器與 Web服務(wù)器必須斷開, 以保證其它 Web瀏覽器能夠與Web服務(wù)器建立連接??蛻舳瞬捎玫氖菫g覽器,整個(gè)系統(tǒng)需要設(shè)計(jì)的是服務(wù)器服務(wù)器的用例描述服務(wù)器實(shí)現(xiàn)的功能可以描述為3個(gè)用例 允許建立連接提供服務(wù)允許斷開連接.服務(wù)器的活動(dòng)圖整個(gè)工作流程如下三、詳細(xì)設(shè)計(jì)及代碼服務(wù)器對(duì)象的靜態(tài)關(guān)系服務(wù)器對(duì)象的靜態(tài)關(guān)系服務(wù)器類的設(shè)計(jì)public class Mai n啟動(dòng)程序public class Frame exte nds JFrame impleme nts Action Liste
4、 ne 實(shí)現(xiàn)系統(tǒng)管理員查看 服務(wù)器狀態(tài)public class Net實(shí)現(xiàn)允許建立連接,提供服務(wù),允許斷開連接代碼啟動(dòng)程序public class Ma inserver; package/ http:/ylx-PC:1111/index.html啟動(dòng)程序 void main(String args) 建立窗體new Frame();接口的實(shí)現(xiàn) class Main / public/ public static/ 實(shí)現(xiàn)系統(tǒng)管理員查 public class Frame extends JFrame implements ActionListener 看服務(wù)器狀態(tài)server; package
5、java.awt.*;import java.awt.event.*;javax.swing.*;importActionListener implementsextends建立窗體組件newnew JPanel(JPanelbtnPan =import java.util.Date;importJFrame public class Frame/); CENTERFIowLayout(FlowLayout.private JLabel listenPortLb = new JLabel(設(shè)置監(jiān)聽端口 ?);privateJLabeltishi =new JLabel(Webserver 信息
6、尺);privateJLabeltian=new JLabel();設(shè)置,4);/ portTf JTextField =new JTextField( ?尰 private默認(rèn)端口號(hào) 設(shè)置按鈕名稱);/ JButton controlBtn = new JButton( 開始);清空 JButton(JButtonclearHintBtn = new); 屜屮=new JTextArea(動(dòng)態(tài)監(jiān)測(cè)服務(wù)信息hintTa private JTextArea; private Net net Frame() public初始化界面 / initComponent(););this Net( new
7、 = netvoid / buildBtnPan();private初始化所有界面組件initComponent() buildHintPan();設(shè)置窗體大小 / setSize(600, 450);();getDefaultToolkit Toolkit tool = Toolkit. -widthsetLocation(tool.getScreenSize().) / 2,width this .getSize().-(tool.getScreenSize().height ) / 2height this .getSize().設(shè)置窗體位置/);WindowAdapter()newth
8、is .addWindowListener(public void windowClosing(WindowEvent arg0) Frame. this .setVisible( true );Frame. this .dispose();););服務(wù)器WebsetTitle( 個(gè)簡(jiǎn)單的);EXIT_ON_CLOSE setDefaultCloseOperation();true setVisible(/構(gòu)建按鈕面板voidpublic buildBtnPan() ();Box boxV1=Box.createHorizontalBox/ 實(shí)現(xiàn)窗體布局JLabel();new JLabel
9、tc=();createHorizontalBox Box boxV2=Box. Box box=Box.createVerticalBox(););listenPortLbboxV1.add(10); boxV1.add(Box. createHorizontalStrut);boxV1.add(portTf (10); boxV1.add(Box.createHorizontalStrutboxV1.add(tishi );); controlBtnboxV2.add(10); boxV2.add(Box.createHorizontalStrut);tian boxV2.add(10);
10、 boxV2.add(Box. createHorizontalStrut );boxV2.add( clearHintBtnbox.add(boxV1);box.add(Box. createVerticalStrut(8);box.add(boxV2);btnPan .add(box);/加入所有按鍵add( btnPan , BorderLayout.NORTH );/將按鍵放置在北部面板portTf .requestFocus();portTf .selectAII();controlBtn .addActionListener(this););this .addActionListe
11、ner(clearHintBtnbuildHintPan() void publichintTa .setEditable(false);JScrollPane scrollPane =new JScrollPane();/添加滑動(dòng)條scrollPane.setBorder(BorderFactory. createLoweredBevelBorder(););scrollPane.getViewport().add(置在中部面板hintTa add(scrollPane,BorderLayout. CENTER); /public void actionPerformed(ActionEve
12、nt arg0) Object source = arg0.getSource();/各個(gè)岀現(xiàn)的問題監(jiān)測(cè)/判斷按鈕提示文字內(nèi)容if (source =clearHintBtn) hintTa .setText();return ;.getText();controlBtnString msg =) if(msg.equals(開始);controlBtn.setText(停止.getText();tian.setText(服務(wù)器啟動(dòng)接口 ?尠+ portTf );portTf.setEditable(false.getText(); .start(portTfnet hintTa .setTe
13、xt( hintTa .getText()+ ? +-開啟服務(wù)器?尠+newDate().toLocaleString()+nn ); else tian .setText( 關(guān)閉服務(wù)器接口+ portTf.getText();controlBtn .setText( 開始);portTf .setEditable(true );net .stop();addHint(String s) public void.getText() + s);hintTa .setText( hintTa public class Net實(shí)現(xiàn)允許建立連接,提供服務(wù),允許斷開連接packageserver;imp
14、ortjava.io.*;import.*;importjava.util.*;importjavax.swing.*;publicclass Net int i=0;/實(shí)現(xiàn)允許建立連接,提供服務(wù),允許斷開連接private Frame frame ;private ServerSocketserverSocketpublic Net(Frame frame) / 將 WebServerFrame 和 WebServerNet 連接起來(lái)this . frame =frame;/點(diǎn)擊“開始”按鈕岀現(xiàn)的結(jié)果public void start(String port) /對(duì)異常進(jìn)行處理try ser
15、verSocket =new ServerSocket(lnteger. parselnt(port);Thread() newrun() 對(duì)于線程重寫run() voidpublic try ) whiletrue (允許與服務(wù)器連接new/ serverSocket Socket socket=.accept();/ 開啟線程 HandlerThread(socket).start();(Exception e) catch , e.getMessage(); showMessageDialog (frame JOptionPane.start(); catch (Exception ex
16、) ,ex.getMessage(); JOptionPane.(showMessageDialogframestop() public void try)!= serverSocket ( ifnull.close();serverSocket catch (Exception e) finally frame .addHint( 屜湜?尭 +-關(guān)閉服務(wù)器?尠+newDate().toLocaleString()+? 尭湜);增加新的線程/ Thread Socket socket privateextendsclassHandlerThreadhostName String private
17、HandlerThread(Socket socket) public=socket; socketthis=socket.getlnetAddress().getHostAddress();hostName this+:主機(jī)尠 +hostName + 連接成功? frame .addHint(?尠 + i +);重寫 run() / run() in= null :publicvoid瀏覽器和服務(wù)器間交互/ BufferedReader的輸入流/ : Printstream out=null瀏覽器和服務(wù)器間交互的輸岀流BufferedlnputStream fin=流null/服務(wù)器端文件的
18、輸入字符try in= new BufferedReader(newInputStreamReader(socket.getlnputstream();new PrintStream(.getOutputStream(); out=獲得想訪問的文件名稱)1; String src=in.readLine().split(將瀏覽器想獲得的文件名稱輸岀至提示框socket /從瀏覽器提交的請(qǐng)求頭部中/frame .addHint(獲得服務(wù)尠+時(shí)間+newDate().toLocaleString()+屜湜);/對(duì)瀏覽器想獲得的文件名稱進(jìn)行去除?后面內(nèi)容處理/ 示例 : /index.html?a=
19、b -> /index.htmlint index=src.indexOf(?);if (index>=O)src.substring(O,index);/如果瀏覽器沒指定訪問的頁(yè)面,則返回index.html頁(yè)面內(nèi)容if (屜尯.equals(src) src=屜椯摮硥栮浴屬:File srcFile= new File( 桜浴屬 +src);/如果瀏覽器訪問的頁(yè)面不存在,則返回 404.html頁(yè)面內(nèi)容.if (!srcFile.exists()|!srcFile.canRead();桜浴屬?栮浴屬File( newsrcFile=/輸岀響應(yīng)頭部信息out.println(?吠
20、屐??傳屋);out.println(服務(wù)器:IIS Web 服務(wù)器嘠?);out.println(最后修改時(shí)間?+newDate(srcFile.lastModified();out.println(文件總字節(jié):+getContentType(srcFile);out.println(文件總長(zhǎng)度?+srcFile.length();out.println( 時(shí)間?+ new Date();while out.write(buffer,0,i);out.println();fin= new BufferedlnputStream(newFilelnputStream(srcFile);1024
21、*8; intbytebyte buffer=newi=-1;/輸岀響應(yīng)體部信息(i=fin.read(buffer)!=-1) (Exception e) catch e.printStackTrace(); finallytry )in.close();null (in!= if)out.close(); (out!=ifnull )fin.close();(fin!=if null(Exception e)catch 文件的接收 / String getContentType(File file) public StringfileName=file.getName(););String
22、 type=fileName.substring(fileName.indexOf(?>空 String result=;楜慭敧?楧屨 ?楧屨(if .equals(type) result=;?瑨汭(ifelse .equals(type) result=瑜硥屴栯浴屬;瑜硥屴栯浴屬?瑨屭(ifelseelse .equals(type) result=;瑜硥屴瀯僅湩.equals(type) result=?硴屴(if;.equals(type) result=?浸屬(if else瑜硥屴砯汭 result; return調(diào)試及運(yùn)行結(jié)果四、.啟動(dòng)用exe4j生成的 myserver.exe應(yīng)用程序初始化如圖開啟服務(wù)器,單擊開始8080設(shè)置端口.打開瀏覽器地址欄輸入 -pc:8080/得到結(jié)果如圖服務(wù)器端結(jié)果.單擊停止,暫停服務(wù)器服務(wù)五、總結(jié)通過(guò)此次實(shí)驗(yàn),我基本了解了 Web服
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球PCA輸液泵行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)結(jié)構(gòu)型包裝用蜂窩行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球自主最后一英里送貨機(jī)器人行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)可見光超透鏡行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球鈑金沖焊型液力變矩器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球教育行業(yè)CRM軟件行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球艾氏劑行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球卡車液力變矩器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)鈷鐵合金軟磁材料行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球高速RDF制粒機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 小學(xué)六年級(jí)數(shù)學(xué)上冊(cè)《簡(jiǎn)便計(jì)算》練習(xí)題(310題-附答案)
- 地理標(biāo)志培訓(xùn)課件
- 2023行政主管年終工作報(bào)告五篇
- 2024年中國(guó)養(yǎng)老產(chǎn)業(yè)商學(xué)研究報(bào)告-銀發(fā)經(jīng)濟(jì)專題
- 培訓(xùn)如何上好一堂課
- 高教版2023年中職教科書《語(yǔ)文》(基礎(chǔ)模塊)下冊(cè)教案全冊(cè)
- 2024醫(yī)療銷售年度計(jì)劃
- 稅務(wù)局個(gè)人所得稅綜合所得匯算清繳
- 人教版語(yǔ)文1-6年級(jí)古詩(shī)詞
- 上學(xué)期高二期末語(yǔ)文試卷(含答案)
- 人教版英語(yǔ)七年級(jí)上冊(cè)閱讀理解專項(xiàng)訓(xùn)練16篇(含答案)
評(píng)論
0/150
提交評(píng)論