J2EE+servlet經(jīng)典教程,易懂易學(xué)_第1頁
J2EE+servlet經(jīng)典教程,易懂易學(xué)_第2頁
J2EE+servlet經(jīng)典教程,易懂易學(xué)_第3頁
J2EE+servlet經(jīng)典教程,易懂易學(xué)_第4頁
J2EE+servlet經(jīng)典教程,易懂易學(xué)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

動態(tài)網(wǎng)頁技術(shù)的發(fā)展

當(dāng)www網(wǎng)初現(xiàn)江湖時,當(dāng)時主要是html(1933),由于html只支持靜態(tài)的文字和圖片,不能參與用戶進行交互,為彌補這個不足,陸續(xù)出現(xiàn)了下列網(wǎng)頁技術(shù):(1)cgi(commongatewayinterface)特點: a:cgi技術(shù)是早期動態(tài)技術(shù)使用最多,發(fā)展比較成熟并且功能強大 b:效率比較低,編程比較困難 c:cgi可以用不同的語言編寫(vb,delphi,c/c++,perl)常用的c/c++和perl語言 d:現(xiàn)在使用cgi做動態(tài)網(wǎng)頁比較少,但是還是有,主要用于linux/unix操作系統(tǒng)中(2)asp asp是html+javascript(vbscript)+com組件的形式,asp的功能強大不在于能使用相關(guān)的腳本語言而是com組件,但是com組件的開發(fā)是比較困難的。優(yōu)勢: 1.簡單易學(xué) 2.安裝使用方便(windows+iis)在win98是使用(pws作為asp的服務(wù)器) 3.效率比cgi高不足:1.功能擴張比較困難,因為asp的功能擴展在com組件,而開發(fā)com組件是比較困難的 2.安全性。因為asp是與windows系統(tǒng)和iis一起工作的,所以windows和iis的安全漏洞會對asp造成影響 3.跨平臺性 4.實現(xiàn)企業(yè)級的功能困難,如服務(wù)器的集群、負(fù)載均衡動態(tài)網(wǎng)頁技術(shù)的發(fā)展動態(tài)網(wǎng)頁技術(shù)的發(fā)展(3)php

官方網(wǎng)站:優(yōu)勢: 1.跨平臺性良好,多種數(shù)據(jù)庫支持 2.效率比較高,具有良好的安全性 3.免費使用不足: 1.安裝復(fù)雜(php的很多功能需要安裝相應(yīng)的應(yīng)用庫,如要更好的支持圖形就要安裝gd庫) 2.缺少企業(yè)級的支持(php是由php開發(fā)組支持的,如果要增加新功能就要開發(fā)相應(yīng)的組件) 3.php是自由軟件組織開發(fā)的,缺少正規(guī)的公司對其負(fù)責(zé)動態(tài)網(wǎng)頁技術(shù)的發(fā)展(4)jsp jsp=html+java片段+jsp語法+js優(yōu)勢: 1.一次編寫,到處運行 2.良好的跨平臺性 3.多種開發(fā)工具支持 4.強大的可伸縮性(jsp+javabean)的方式不足: 1.jsp產(chǎn)品的復(fù)雜度高(jsp入門比asp難) 2.jsp要求運行的機器配置要高,因為jsp使用class常駐內(nèi)存的方式運行的,效率高,但是需要占用更多的內(nèi)存動態(tài)網(wǎng)頁技術(shù)的發(fā)展jspVSaspjspasp運行速度很快較快安全性很高較高跨平臺性很好支持windows對數(shù)據(jù)庫的支持性支持所有主流數(shù)據(jù)庫支持所有主流數(shù)據(jù)庫對組件的支持性良好良好對xml的支持性良好良好b/s與c/s的比較b/s的優(yōu)勢: 1.開發(fā)成本低 2.管理維護簡單 3.產(chǎn)品升級便利 4.對用戶的培訓(xùn)費用低 5.用戶使用方便,出現(xiàn)故障的概率小b/s的不足: 1.安全性不足 2.客戶端不能隨心變化,受瀏覽器的限制 3.利于管理用戶服務(wù)器ie瀏覽器ie瀏覽器b/s服務(wù)器客戶端客戶端c/sservlet的介紹什么是servlet?servlet技術(shù)是在javaee出現(xiàn)之前就存在了,在開發(fā)動態(tài)網(wǎng)頁中得到廣泛的應(yīng)用,直到現(xiàn)在的javaee項目中也是非常重要的,同時jsp也是在servlet的基礎(chǔ)上發(fā)展起來的。servlet(java服務(wù)器小程序)是用java編寫的服務(wù)器程序,它的特點: 1.由服務(wù)器調(diào)用和執(zhí)行 2.用java語言編寫的 3.按照servlet規(guī)范開發(fā) 4.功能強大,可以完成幾乎所有的網(wǎng)站功能 5.是學(xué)習(xí)jsp的基礎(chǔ)servlet/jsp開發(fā)工具servlet/jsp運行環(huán)境Tomcat是一個免費的開源的servlet容器,它是Apache基金會的Jakarta項目中的一個核心項目,由Apache,Sun和其它一些公司及個人共同開發(fā)而成。普通的文本編輯器notepad,uedit32集成開發(fā)工具jcreator,jbuilder,eclipse,editplus,netbean瀏覽器Web服務(wù)器數(shù)據(jù)庫絕大部分瀏覽器ie,netscape,firefox,MaxthonTomcatBeaweblogicIbmwebsphereResinSql200SybaseMysql,AccessOracle,db2。。。tomcat在網(wǎng)絡(luò)中的位置IE瀏覽器Web服務(wù)器jsp/servlet容器*.java*.jspTomcat三個功能:1.web服務(wù)器2.jsp容器3.servlet的容器Tomcathttp請求返回靜態(tài)頁面轉(zhuǎn)發(fā)返回結(jié)果服務(wù)器ie瀏覽器ie瀏覽器servlet體系結(jié)構(gòu)javax.servlet.*;java.lang.Objectjavax.servlet.GenericServletjava.io.InputStreamjava.io.OutputStreamjava.lang.Throwablejavax.servlet.ServletInputStreamjavax.servlet.ServletOutputjava.lang.Exceptionjava.io.Serializablejavax.serlet.Servletjavax.servlet.ServletConfigjavax.servlet.ServletExceptionjavax.servlet.UnavailableException界面層(美工)邏輯層(程序員)數(shù)據(jù)層(數(shù)據(jù)庫分析員)網(wǎng)絡(luò)拓?fù)鋱Dservlet的幾個實例開發(fā)servlet有三種方法: 1.實現(xiàn)servlet接口 2.繼承GenericServlet 3.繼承HttpServletservlet開發(fā)流程1.在%TOMCAT_HOME%/webapps下WEB-INF的文件夾,寫一個文件web.xml(該網(wǎng)站的配置信息),建立一個classes的子文件夾,也可以從別的目錄ROOT下拷貝2.開發(fā)servlet(引入Tomcat文件夾下lib文件夾里的servlet-api.jar)3.部署你的servlet(servlet開發(fā)流程)4.啟動Tomcat,訪問你的servlet,在瀏覽器的地址欄中輸入::8080/myWebSite/hello回車就可以看到servlet的輸出注意:是服務(wù)器所在的IP,8080是端口號,要根據(jù)實際情況定。servlet開發(fā)流程在web.xml文件中添加如下代碼:<servlet><!—給servlet取名,可以隨意取名--><servlet-name>hello</servlet-name><!—指明servlet的路徑,就是servlet的包+類名--><servlet-class>com.test.Hello</servlet-class></servlet><servlet-mapping><!—給servlet取名,可以隨意取名--><servlet-name>hello</servlet-name><!—瀏覽器中輸入的url,可以隨意取名--><url-pattern>/hello<url-pattern></servlet-mapping>servlet的生命周期servlet部署在容器里(我們使用的是Tomcat,也可是別的,比如jboss,weblogic。。。),它的生命周期由容器來管理。servlet的生命周期分為以下幾個階段: 1.裝載servlet,由相應(yīng)的容器來完成 2.創(chuàng)建一個servlet實例 3.調(diào)用servlet的init()方法,該方法只會在第一次訪問servlet時被調(diào)用一次 4.服務(wù):調(diào)用servlet的service()方法,一般業(yè)務(wù)邏輯在這里處理,該方法在訪問該servlet時,會被調(diào)用 5.銷毀:調(diào)用servlet的destroy()方法,銷毀該servlet實例,該方法在以下情況被調(diào)用: a)tomcat重新啟動 b)reload該webapps c)重新啟動電腦通過GenericServlet去開發(fā)servlet,只需要重寫service方法,相對來說要簡單一些。通過HttpServlet去開發(fā)servlet,需要重寫doGet、doPost方法,這是目前用的最多的一種方法。表單提交數(shù)據(jù)get請求和post請求的區(qū)別:1.從安全性看get<post。get提交的數(shù)據(jù)會在瀏覽器的地址欄顯示2.從提交的內(nèi)容大小看get<post。get提交的數(shù)據(jù)不能大于2K,而post提交的數(shù)據(jù)理論上不受限制,但是實際編程中建議不要大于64K3.從請求響應(yīng)速度看get>post。get請求服務(wù)器立即處理請求,而post請求可能形成一個隊列請求通過繼承GenericServlet開發(fā)servlet通過繼承HttpServlet開發(fā)servlet同一用戶的不同頁面共享數(shù)據(jù)四種方法: 1.

cookie技術(shù) 2.sendRedirect()跳轉(zhuǎn) 3.隱藏表單提交(form) 4.session技術(shù)同一用戶的不同頁面共享數(shù)據(jù)什么是cookie?cookie可以用來做什么?服務(wù)器在客戶端保存用戶的信息,比如登錄名、密碼……就是cookie這些信息就像是小甜餅一樣,數(shù)據(jù)量并不大,服務(wù)器端在需要的時候可以從客戶端讀取服務(wù)器客戶端客戶端客戶端1.保存用戶名、密碼,在一定時間不用重新登錄2.記錄用戶訪問網(wǎng)站的喜好,比如有無背景音樂、網(wǎng)頁的背景色是什么3.網(wǎng)站的個性化,比如定制網(wǎng)站的服務(wù)、內(nèi)容cookie使用1.cookie有點像一張表,分兩列,一個是名字,一個是值,數(shù)據(jù)類型都是String2.如何創(chuàng)建一個cookie(在服務(wù)器端創(chuàng)建的)Cookiec=newCookie(Stringname,Stringval);3.如何將一個cookie添加到客戶端response.addCookie(c);4。如何讀取cookie(從客戶端讀到服務(wù)器)request.getCookie();名字String值Stringcookiecookie其它說明1.可以通過IE——工具——internet選項——隱私——高級來啟用或是禁用cookie2.由于cookie的信息是保存在客戶端的,因此安全性不高3.cookie信息的生命周期可以在創(chuàng)建時設(shè)置(比如30s),從創(chuàng)建那一時刻起,就開始計時,到時該cookie的信息就無效了同一用戶的不同頁面共享數(shù)據(jù)sendRedirect()方法通過該方法可以將一個頁面的信息傳送給另外的頁面,比如:sendRedirect(“welcome?uname=aaa”);優(yōu)點:傳送信息的速度比較快缺點:它只能傳送字符串,而不能傳送一個對象 sendRedirect(“welcome?uname=aaa”);注意點: 1.welcome代表你要跳轉(zhuǎn)的那個servlet的url 2.servleturl名和變量之間有個? 3.如要傳遞兩個以上的值,它們之間要用符號&分開,比如sendRedirect(“welcome?uname=aaa&passwd=123”); 4.如果傳遞的是中文,那你將得到亂碼,需要處理一下res.setContentType(“text/html,charset=gbk”);同一用戶的不同頁面共享數(shù)據(jù)隱藏表單這是最常見的一種方式,也是最簡單的,但有時該技巧非常管用,形如:<formaction=login><inputtype=hiddenname=avalue=b></form>通過隱藏表單,我們也可以將一個頁面信息,傳遞給另外的頁面。同一用戶的不同頁面共享數(shù)據(jù)什么是session?

服務(wù)器分配給A客戶端的session空間

服務(wù)器分配給A客戶端的session空間

服務(wù)器分配給A客戶端的session空間當(dāng)用戶打開瀏覽器,訪問某個網(wǎng)站時,服務(wù)器就會在服務(wù)器的內(nèi)存為該瀏覽器分配一個空間,該空間被這個瀏覽器獨占。這個空間就是session空間,該空間中的數(shù)據(jù)默認(rèn)存在時間為30min,你也可以修改該值。服務(wù)器(Tomcat)ABCABCAAA同一用戶的不同頁面共享數(shù)據(jù)session可以用來做什么? 1.網(wǎng)上商城中的購物車 2.保存登陸用戶的信息 3.將某些數(shù)據(jù)放入到session中,供同一用戶的各個方面使用 4.防止用戶非法登陸到某個頁面 ……如何理解session?可以把session看做一張表,這張表有兩列,而表有多少行理論上沒有限制,每一行就是session的一個屬性。每個屬性包含有兩個部分,一個是該屬性的名字String,另外一個是它的值Object。名字String值Objectaaa111session屬性同一用戶的不同頁面共享數(shù)據(jù)如何使用session?1.得到session

HttpSessionhs=request.getSession(true);2.向session添加屬性

hs.setAttribute(Stringname,Objectval);3.從session得到某個屬性

Stringname=hs.getAttribute(Stringname);4.從session中刪除掉某個屬性

hs.removeAttribute(Stringname);5.注銷session中的內(nèi)容(比較安全的一種方式) ht.setMaxInactiveInterval(0);同一用戶的不同頁面共享數(shù)據(jù)session的注意事項:1.session中屬性存在的默認(rèn)時間是30min,你也可修改它存在的時間:(a)修改web.xml(b)在程序中修改2.上面說的這個30min指的是用戶的發(fā)呆時間,而不是累計時間3.當(dāng)某個瀏覽器訪問網(wǎng)站時,服務(wù)器會給瀏覽器分配一個唯一的sessionid,并以此來區(qū)分不同的瀏覽器(即客戶端)4.因為session的各個屬性要占用服務(wù)器的內(nèi)存,因此軟件公司都是在迫不得已的情況下才使用cookievssession1.存在的位置cookie保存在客戶端,session保存在服務(wù)器端2.安全性比較而言,cookie的安全性比session要弱3.網(wǎng)絡(luò)傳輸量cookie通過網(wǎng)絡(luò)在客戶端與服務(wù)器端傳輸,而session保存在服務(wù)器端,不需要傳輸servlet中操作數(shù)據(jù)庫servlet操作數(shù)據(jù)庫注意事項需要將連接數(shù)據(jù)庫的jar包,拷貝到tomcat服務(wù)器具體有兩種方法: 1)將jar包拷貝到tomcat目錄下的lib文件夾里 2)在webapps目錄的WEB-INF文件下建立一個lib文件夾,然后將jar包拷貝到該文件夾下兩種方法的區(qū)別:1)所有webapps都可以使用jar【公用lib庫】2)只有放入jar的那個webapps能使用jar【私用lib庫】sql注入漏洞select*fromuserswhereusername=‘a(chǎn)bc’andpasswd=‘123’or1=‘1’在servlet中顯示圖片在你的webapps下建立一個文件夾,比如images,然后將圖片拷貝到該文件夾中,再在servlet中添加:<imgsrc=*.images/圖片名/>即可。分頁方法<一>分頁的算法:需要定義四個變量,它們有各自的用處intpageSize:每頁顯示多少條記錄intpageNow:希望顯示第幾頁intpageCount:一共有多少頁introwCount:一共有多少條記錄說明:pageSize是指定,pageNow是用戶選擇的。rowCount是從表中查詢得到的。pageCount是計算出來的,該計算公式為: if(rowCount%pageSize==0){ pageCount=rowCount/pageSize; }else{ pageCount=rowCount/pageSize+1; }分頁方法<二>針對前面提出的問題,我們可能很自然的想到,用select字段名列表from表名whereidbetween?and?這個sql語句確實比較快,但是存在一個問題,即如果表的id被刪除了,那么某頁可能就會少一條記錄。因此,我們的最終方法是如下語句:selecttoppageSize字段名列表from表名whereidnotin(selecttoppageSize*(pageNow-1)idfrom表名)分頁方法<三>測試效率當(dāng)表的記錄超過100萬條時,它的翻頁就很慢,原因是它查詢的結(jié)果是整張表。在實際的項目中,一張表超過100萬是非常常見的,一些大型項目中一些表到達T級別也是有的。增加表的記錄的語句可用:insertinto表名(字段1,,2…)select字段1,2…from表名網(wǎng)站框架問題分析:界面和業(yè)務(wù)邏輯放在一起(model1模式)存在以下問題:1.在LoginCheck.java文件和Welcome.java文件中都去操作了數(shù)據(jù)庫,他們的邏輯相似,代碼重復(fù)2.整個框架沒有清晰的層次關(guān)系,顯得非常亂3.代碼一點也不優(yōu)雅,可讀性差,可維護性差問題改進:通過對問題的分析,我們可以對程序進行改進:1.進行分層(界面層、業(yè)務(wù)邏輯層) 【mv模式】m:modelv:view2.將常用的代碼(比如連接數(shù)據(jù)庫)封裝到類中Login.java登陸界面LoginCheck.java驗證用戶Welcome.java歡迎界面登錄請求不合法合法界面view模型modelUserBean.java表示user表UserBeanCheck.java業(yè)務(wù)邏輯ConneDB.java得到連接user表調(diào)用調(diào)用操作數(shù)據(jù)庫ServletContext講解什么是ServletContext?要理解ServletContext,就必須和cookie、session做一個對比,如右圖所示:可以把它想象成是一個共用的空間,可以被所有的用戶訪問,也就是說:A客戶可以訪問D,B客戶也能訪問D,C客戶也能訪問D。服務(wù)器ABCDABCAAcookiesessionDServletContext如何使用ServletContext?1.如何得到ServletContext實例 this.getServletContext();2.你可以把它想象成一張表,這個和session非常相似,每一行就是一個屬性:

添加屬性setAttribute(Stringname,Objectob);

得到值getAttribute(Stringname);返回Object

刪除屬性removeAttribute(Stringname);3.生命周期ServletContext中的生命周期從創(chuàng)建開始,到服務(wù)器關(guān)閉而結(jié)束。ServletContext講解使用ServletContext的注意事項:因為存在ServletContext中的數(shù)據(jù)會長時間保存在服務(wù)器,會占用內(nèi)存,因此我們建議不要向ServletContext中添加過大的數(shù)據(jù),切忌。使用ServletContext實例:在網(wǎng)站開發(fā)中,有很多功能需要使用ServletContext,比如: 1.網(wǎng)站計數(shù)器 2.網(wǎng)站在線用戶顯示 3.簡單的聊天系統(tǒng)總之,如果是涉及到不同用戶共享數(shù)據(jù),而這些數(shù)據(jù)量不大,同時又不希望寫入數(shù)據(jù)庫中,我們就可以考慮使用ServletContext來實現(xiàn)。ServletContext講解Servlet中操作文件因為servlet本來就是一個.java文件,因此,servlet中操作文件和普通java文件操作文件是一樣的。//創(chuàng)建一個FileReaderFileReaderfr=newFileReader(“d:\\myCounter.txt”);BufferedReaderbr=newBufferedReader(fr);//讀出一行數(shù)據(jù)StringnumVal=bw.readLine();//關(guān)閉文件流bw.close();創(chuàng)建一個FileWriter

內(nèi)存數(shù)據(jù)→磁盤文件(寫入、輸出)

內(nèi)存數(shù)據(jù)←磁盤文件(讀入,輸入)如何修改tomcat的端口在某些情況下,可能需要修改Tomcat監(jiān)聽的端口8080,比如: 1)需要啟動兩份Tomcat 2)某個服務(wù)占用了8080端口(1433,1521,3306)找到Tomcat目錄下的conf文件夾里的server.xml,對其端口號進行修改。查看本機所有端口的命令:netstat-an設(shè)置tomcat虛擬目錄為什么要設(shè)置虛擬目錄?目前,我們的網(wǎng)站站點都是放在默認(rèn)的目錄下tomcat/webapps

溫馨提示

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

評論

0/150

提交評論