傳智java散結(jié)構(gòu)即客戶端服務(wù)器Client Server例如QQ就_第1頁
傳智java散結(jié)構(gòu)即客戶端服務(wù)器Client Server例如QQ就_第2頁
傳智java散結(jié)構(gòu)即客戶端服務(wù)器Client Server例如QQ就_第3頁
傳智java散結(jié)構(gòu)即客戶端服務(wù)器Client Server例如QQ就_第4頁
傳智java散結(jié)構(gòu)即客戶端服務(wù)器Client Server例如QQ就_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

day08WebHttpC/SC/S結(jié)構(gòu)即客戶端/服務(wù)器(/ServerQQC/S結(jié)構(gòu)的。我們每個(gè)人電腦上都需要QQ的客戶端,客戶端軟件向服務(wù)器端軟件發(fā)送請(qǐng)求,服務(wù)器端給客戶端返回響應(yīng)。C/S結(jié)構(gòu)的客戶端已經(jīng)好多了,可以提示用戶更新,用戶只需要點(diǎn)擊更新就可以了。最早時(shí)需要用戶自己去官網(wǎng)上最B/S(rowser/SererB/SOK。當(dāng)軟件需要更新時(shí),開發(fā)人員只需要關(guān)心服務(wù)器端就行。就像你在瀏覽器中時(shí),發(fā)現(xiàn)的主頁發(fā)生了。如果有其他用戶登錄頁可以中包含變量,數(shù)據(jù)的變化就不是問題了。但頁只能在服務(wù)器端使用,客戶端瀏覽器只能識(shí)別靜態(tài)網(wǎng)頁。所以,如果用戶請(qǐng)求的是頁,那么就需要服務(wù)器先把pagesdo(struts1但頁也可以成htm和html如果只有Web服務(wù)器還不行,我們還需要JSP/Servlet容器,即可以把頁轉(zhuǎn)換成靜態(tài)網(wǎng)頁JSP/ServletJSP/Servlet的生命周期!JavaWeb領(lǐng)域中說的服務(wù)器都是即為WebJSP/Servlet容器的東西。也JavaWebomcat(ApcheJBoss(Redhat紅帽GlassFish(Oaleesin(auchoeblogc(Orcaeebsphre(IMTomcatJDKJavaWebJDK。我們現(xiàn)在使用的TomcatTomcat6或Tomcat7。Tomcat6Servlet2.5; 或者是 IP地址,localhost如果其他機(jī)器需要,那么要把localhost使用本機(jī)IP地址替換假如我的IP是00,要我機(jī)器上的Tomcat,那么需要在的瀏覽器中訪問:Tomcat只需要解壓就能使用,無需安裝,這樣一臺(tái)電腦上可以安裝多個(gè)Tomcat。Tomcat有點(diǎn)不同,你需要先去配置環(huán)境變量:?jiǎn)?dòng):在Tomcat中找到startup.bat停止:在TomcatWeb 是用來存放Java項(xiàng)目的,每個(gè)文件夾都是一個(gè)項(xiàng)目。默認(rèn)這個(gè) 有了四個(gè)項(xiàng)目,都是tomcat自帶的。其中ROOT就是我們測(cè)試Tomcat時(shí)的Tomcat主項(xiàng)目。 o項(xiàng)目 結(jié)|-o是項(xiàng) 下必須有一個(gè)名為WEB-INF ,web.xml 是受保 WEB-INF下還會(huì)存在lib和classes,lib下存放項(xiàng)目所需的jar文件 class文件,但這兩 web.xml文件中只需要給出XML文檔,以及根元素。當(dāng)然,根元素中包含很多與名稱空間相關(guān)屬性,背下來是有難度的,不過我們可以去webapps 當(dāng)然,以后我們可能會(huì)使用Eclipsewebapps下,這就::8080:端;MyEclipseMyEclipseMyEclipse配置服務(wù)器后,就可以使用MyEclipse來啟動(dòng)和停止服務(wù)器了。當(dāng)然,你需要先(omcatMyEclipse自帶Tomcat 彈出吃MyEclipse啟動(dòng)MyEclipseWebMyEclipseWebwebapps裝起來,copywebapps下。MyEclipsecopywebapps下,這與我們自己在webappsMyEcpliseMyEclipseTomcatwebappsJava源代碼!只包含項(xiàng)目中WebRoot下的內(nèi)容!項(xiàng)目部署后,啟動(dòng)TomcatXMLomcat TomcatTomcatbin:該下存放的是二進(jìn)制可執(zhí)行文件,如果是安裝版,那么這個(gè)下會(huì)有兩個(gè)exe動(dòng)Tomcat,但需要先配置JAVA_HOME和CATALINA_HOME兩個(gè)環(huán)境變量才能啟動(dòng),shutdawn.batTomcat;conf:這是一個(gè)非常非常重要的,這個(gè)及用戶的角色信息??梢园粗撐募械淖⑨屝畔⑻砑觮omcat用戶,然后就可以在TomcatTomcatManager頁面了;text/html類型的,這就是一個(gè)MIME類型??蛻鬗IMEhtml彈出窗口才對(duì)。MIME就是用來說明文檔的內(nèi)容是什么類型的!它放到這 中,當(dāng)然也可以把項(xiàng)目依賴的jar文件放到這 中的 中都是日志文件,記錄了Tomcat啟動(dòng)和關(guān)閉的信息,如果啟動(dòng)Tomcat時(shí)temp:存放Tomcat的臨時(shí)文件,這 下的東西可以在停止Tomcat后刪除webapps:存放web項(xiàng)目的 ,那么都是tomcat自帶的。項(xiàng)目。其中ROOT是一個(gè)特殊的項(xiàng)目,在地址欄中沒有 時(shí),對(duì)應(yīng)的就是ROOT項(xiàng)目。,進(jìn)入示例項(xiàng)目。其中examples就是項(xiàng)目名,即文件夾的名字。以把這個(gè)下的內(nèi)容刪除,再次運(yùn)行時(shí)會(huì)生再次生成work。當(dāng)客戶端用戶一個(gè)javaclass文件都會(huì)存放到這個(gè)下。LICENSE:證你應(yīng)該已經(jīng)發(fā)現(xiàn),ROOT項(xiàng)目時(shí)無需給出項(xiàng)目名,其實(shí)localhost是一個(gè)主機(jī)名,每個(gè)主機(jī)都會(huì)對(duì)應(yīng)一個(gè)項(xiàng)目空間,localhostTomcatwebapps,每個(gè)項(xiàng)目空間都可以有一個(gè)名為ROOT項(xiàng)目,這個(gè)ROOT項(xiàng)目被時(shí)無需給出項(xiàng)目名稱。 在 這個(gè)東西基本沒什么用,因?yàn)樗怯脕砉芾鞹omcat的,而我們都是直接在Tomcat 刪除修改文件來管理Tomcat,它個(gè)東東只有在本機(jī)不是Tomcat主機(jī)時(shí)才會(huì)有用,即管理! 名。這個(gè)也應(yīng)該可以掌握了!還有就是JavaEEWeb項(xiàng)目的workwebapps下的項(xiàng)目在運(yùn)work下的文件。這個(gè)下的東西可以刪除,然后再次運(yùn)行時(shí)還<Server>--<Listener>--<Service>--<Connector>--<Engine>--<Host>--<Context>--在項(xiàng)目時(shí)就不用再給出端了,因?yàn)?0是HTTP默認(rèn)端口,即不給出時(shí)就是表示使用80端口,例如:。已經(jīng)了<Connector>是接待員,它不能處理業(yè)務(wù),它會(huì)把用戶帶到<Engine>這里來處理。例如<Hostname=”localhost”appBase=”webapps”>localhost,這個(gè)主機(jī)的項(xiàng)目存放在webapps中。這個(gè)項(xiàng)目下的主機(jī)時(shí),需要使用localhost主機(jī)名,項(xiàng)目都存webapps用戶發(fā)出一個(gè)請(qǐng)求接待人員(Conector)發(fā)現(xiàn)是http/1.18080端口,就把請(qǐng)求接收,然后交給引擎(Engine)。引擎通過請(qǐng)求中的主機(jī)名localhost找到虛擬主機(jī)(Host)appBase(webapps)中去找項(xiàng)目。在webapps中找到o項(xiàng)目,再到oindex.jsphttp默認(rèn)端為80,也就是說在URL中不給出端時(shí)就表示使用80端口。當(dāng)然你也可Oracle默認(rèn)端MySQL默認(rèn)端WebLogic默認(rèn)端端必須是0~65535之間的整數(shù),OS會(huì)使用0~1023這些端,所以你最好去使查看端口是否被占用:cmdnetstat你想不想這樣來Tomcat的首頁:htt DNS,到C:\WINDOWS\system32\drivers\etc\hosts127.0.01; 的Host元素DNS當(dāng)然,你也可以把a(bǔ)ppBase的值修改為其 中去。假如你把a(bǔ)ppBase=”F:\myapps”,用戶 o時(shí),服務(wù)器會(huì) o項(xiàng)目注意,其他人不能通過htt /o來我的服務(wù)器,因?yàn)榈碾娔X不能解析htt 是什么你可能會(huì)想在自己的C:\WINDOWS\system32\drivers\etc\hosts文件中添加 成這個(gè)IP地址,而這個(gè)地址表示的是本機(jī)!所以你需要把修改為我的IP就可了!但這么做沒什么意思,因?yàn)槊總€(gè)人想通過htt 去修改自己的C:\WINDOWS\system32\drivers\etc\hosts文件,只是而已,不用當(dāng)真!第一種我們已經(jīng)學(xué)過了,就是把項(xiàng)目放到webapps 下,即localhost主機(jī)名對(duì)應(yīng)的項(xiàng)目空間 <Host>元素中添加<Context>元素,然后指定<Context>pathdocBasepath指定abc。docBase指定你的項(xiàng)目的真實(shí)存放的路徑。 在F:\o你找到server.xml中的<Host>元素給其添加子元素<Context>,注意,一旦給出了docBase屬性的值后,localhost的abc項(xiàng)目時(shí),就不會(huì)再去webapps目錄下去查找項(xiàng)目,而是通過docBase的值來鎖定項(xiàng)目位置,即F:\o1。注意,項(xiàng)目的URL:,而不是 下找到catalina\localhost 下創(chuàng)建一個(gè)XML文件,這個(gè)名稱就是虛擬路徑名。例如創(chuàng)建的XML文件名為def.xml,然后在def.xml文件中添加如下內(nèi)容path屬性,因?yàn)橐呀?jīng)不用給出了,pathXML文件的名稱決定。也就是說path的值為def。URL為:。HTTPHTTPHTTPHTTPHTTP響應(yīng)協(xié)議。如果你還HTTP去看時(shí),驗(yàn)票人員與看的觀眾就是無狀態(tài)連接。當(dāng)驗(yàn)票人員驗(yàn)過你的票之后,你進(jìn)入了觀影廳,然后從后頭出來了,再從正門進(jìn)入時(shí),驗(yàn)票人員已經(jīng)不在記得你,他會(huì)要求你出示票。內(nèi)容(html)html,其實(shí)這時(shí)已經(jīng)的呢?其這不是TP狀態(tài)而是服務(wù)器端的碼要處理會(huì)話的問題,這也是我后面的一個(gè)課題!但一定要相,TP是無狀態(tài)的如果沒有會(huì)的話HTTP1.0HTTP現(xiàn)在有兩個(gè)版本,HTTP1.0HTTP1.1。FireFoxFirebugGET////GET Host:User-Agent:Mozilla/5.0(WindowsNT5.1;rv:5.0)Accept: Accept-Encoding:gzip,deflate:User-Agent:Mozilla/5.0(WindowsNT5.1;rv:5.0)Gecko/ 相關(guān)的信息。有些會(huì)顯示用戶的系統(tǒng)版本和瀏覽器版本信息,這都是通過獲取User-Agent頭信息而來的; Accept-Encoding:gzipdeflate:支持的壓縮格式。數(shù)據(jù)在網(wǎng)絡(luò)上傳遞時(shí),可能服務(wù)器會(huì)把數(shù):: C0B2DE36D98所以會(huì)在請(qǐng)求中把上一次服務(wù)器響應(yīng)中發(fā)送過來的在請(qǐng)求中一并發(fā)送去過;這個(gè)JSESSIONID,然后在講會(huì)話是講究它!POST下面是通過POST////POST/ Host:localhostUser-Agent:Mozilla/5.0(WindowsNT5.1;rv:5.0)Accept: Accept-Encoding:gzip,deflateConnection:keep-alive: Content-Length:14// 提供資源之前可以去判斷請(qǐng)求是從哪個(gè)頁面發(fā)送過來的,如果不是從本發(fā)送過來的,UTF-8編碼數(shù)據(jù);url編碼的數(shù)據(jù)都是以“%16StringStringsURLEncoder.encode("大家好UTF-8");s=URLDecoder.decode(s,"UTF- //////Server:Apache-Content-Length:777Date:Sat,09Feb201218:30:52//HTML<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<base <title>MyJSP'index.jsp'starting "<metahttp-equiv="description"content="ThisismyThisismyJSPpage.<inputtype="submit"HTTP/1.1200OKHTTP1.1200,表示請(qǐng)求成功,OK是對(duì)狀態(tài)碼的:: :; ;Date:Sat09Feb201218:30:52GMT8404notfound200ok只有表單才可能是POSTPOST有正文,即表單內(nèi)容:username=zhangSan&password=123GET沒有正文,但是空行可是有的!HTTP/1.1HTML!JavaHTTPJavaHTTPJavaSocket對(duì)象的輸出流對(duì)象,向服務(wù)器發(fā)送請(qǐng)求信息;Socket對(duì)象的輸入流對(duì)象,接收服務(wù)器的響應(yīng)信息;publicstaticvoidmain(String[]args)throwsUnknownHostException,{Sockets=newSocket("",Writerout=newOutputStreamWriter(s.getOutputStream());Stringstr=getMsg(); Stringstr=postMsg();BufferedReaderreader=newBufferedReader(newStringline=while((line=reader.readLine())!=null){}}publicstaticStringgetMsg()////"GET/ o/index.jspHTTP/1.1\r\nhost::8080\r\n\r\n"StringBuildersb=newStringBuilder();sb.append("GET/ o/index.jspHTTP/1.1").append("\r\n");returnsb.toString();}publicstaticStringpostMsg(){StringBuildersb=newStringBuilder();sb.append("POST/ o/index.jspHTTP/1.1").append("\r\n");sb.append("Accept:image/gif,image/jpeg,image/pjpeg,image/pjpeg,application/x-shockwave-flash,application/x-ms-application,application/x-ms-xbap, ,application/xaml+xml,application/vnd.ms-excel, sb.append("User-Agent:Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;.NETCLR2.0.50727;.NETCLR3.0.4506.2152;.NETCLRsb.append("Content-Type:application/x-www-form-urlencoded").append("\r\n");sb.append("Accept-Encoding:gzip,deflate").append("\r\n");sb.append("Host:localhost:80").append("\r\n");sb.append("Content-Length:36").append("\r\n");sb.append("Connection:Keep-Alive").append("\r\n");sb.append("Cache-Control:sb.append("Cache-Control:no-cache").append("\r\n"); return}JSPJSPrequest,它表示請(qǐng)求對(duì)象,它封裝了所有與請(qǐng)求信息。request.getHeader(Stringhead)方法可以用來獲取指定的頭信息。JSP在JSP中有一個(gè)對(duì)象叫response,它表示響應(yīng)對(duì)象,可以使用它向客戶端添加響應(yīng)頭信息。response.setHeader("Refresh","5;URL=ht 例如其中username為參數(shù)request.getParameter(“username”)usernameqdmmy6。request.getParameter(“password”)password123。頁面中文,GETPOSTtxt和js這些文件的編碼最為隱匿,我們先來處理它(當(dāng)然這個(gè)東西今天我們還用不上txtjs編碼問題:在MyEclipseUTF-htmljsp編碼問題:先把已經(jīng)創(chuàng)建的文件編碼修改了!自己到頁面中去找到與編碼相關(guān)的地UTF-8。然后再去處理今后創(chuàng)建的網(wǎng)頁使用的默認(rèn)編碼。修改以創(chuàng)建jsp為將來創(chuàng)建的新網(wǎng)頁文件設(shè)置默認(rèn)編碼:首選項(xiàng)→MyEclipse→FilesandEditors→JSP→修改編碼html、xmlJSP為例:POST編碼處理POST編碼就是把通過POSTGET編碼處理Strings=snewString(s.getBytes("ISO-8859-1UTF-8");//先用ISO-8859-1UTF-8Strings=snewString(s.getBytes("ISO-8859-1UTF-8");//先用ISO-8859-1UTF-8OK了。打印URLURLLocator,URIIdentifier, 也是一個(gè)URI,但不是URL!你大可以把URL類看成是類,它的構(gòu)造器需要一個(gè)String為參數(shù)URLurl=newURL(“URL類與字符串沒有什么區(qū)別。當(dāng)然不可能沒有區(qū)別,URL類的構(gòu)造器會(huì)校URLopenURLConnection()URLConnectionrmqj的一個(gè)抽象類子類的實(shí)例對(duì)象,表示一個(gè)URLConnection,這個(gè)連接對(duì)象可以用來與指定的通訊。URLConnectionURLInputStreamin=conn.getInputStream();OutputStreamout=conn.getOutputStream();conn.setDoOutput(true)方法!URLConnectionconn=url.openConnection();OutpuptStreamout=HttpURLConnectionURLConnectionHTTP協(xié)議的服務(wù)器通訊。HTTP協(xié)議相關(guān)的方法。URLConnectionconn=HttpURLConnectionhttpConn=GET////創(chuàng)建URL對(duì)象 URLurl=new //HttpURLConnectionhttpCon=//設(shè)置請(qǐng)求方法為GETintcode=如果響應(yīng)碼是if(code==200)BufferedReaderbr=newBufferedReader(new//StringStringBuildersb=newStringBuilder();while((line=br.readLine())!=null){}}POST////創(chuàng)建URL對(duì)象,注 URLurl=newHttpURLConnectionhttpCon=//設(shè)置請(qǐng)求方法為POST//////PrintStreamout=new// intcode=if(code==200)BufferedReaderbr=newBufferedReader(newStringStringBuildersb=newStringBuilder();while((line=br.readLine())!=null){}}HttpURLConnection//URLurl//URLurl=newHttpURLConnectionhttpCon=//設(shè)置請(qǐng)求方法為GETintcode=if(code==200)InputStreamin=new//OutputStreamout=newBufferedOutputStream(newbyte[]buff=newbyte[2048];intlen;while((len=in.read(buff))!=-1){out.write(buff,0,len

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論