北大青鳥60課程net_第1頁
北大青鳥60課程net_第2頁
北大青鳥60課程net_第3頁
北大青鳥60課程net_第4頁
北大青鳥60課程net_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、ASP.NET運(yùn)行時(shí)模型運(yùn)行時(shí)模型 第一章第一章課程地位每階段已包括:項(xiàng)目實(shí)戰(zhàn)、每階段已包括:項(xiàng)目實(shí)戰(zhàn)、COTCOT課程課程 總課時(shí):總課時(shí): 10081008C# OOPC# OOPJavaScriptJavaScriptT-SQLT-SQLJava OOPJava OOPS2350Y2344JSPJSPS2S2:JavaJava階段項(xiàng)目階段項(xiàng)目預(yù)備課程預(yù)備課程WinFormsWinFormsLogic JavaLogic JavaS1314S1S1:.NET.NET階段項(xiàng)目階段項(xiàng)目ASP.NETASP.NETHibernateHibernateN-TierN-TierAjaxAjaxSpr

2、ingSpringStrutsStrutsHTMLHTMLC#C#NTCNTCProjectProject知識(shí)知識(shí)Y2Y2:.NET.NET畢業(yè)設(shè)計(jì)項(xiàng)目畢業(yè)設(shè)計(jì)項(xiàng)目COTCOTCOTCOTCOTCOTY2Y2:JavaJava畢業(yè)設(shè)計(jì)項(xiàng)目畢業(yè)設(shè)計(jì)項(xiàng)目目標(biāo)崗位標(biāo)準(zhǔn)手冊目標(biāo)崗位標(biāo)準(zhǔn)手冊就業(yè)技能結(jié)構(gòu)圖本門課程目標(biāo)學(xué)完本門課程后,你能夠?qū)W完本門課程后,你能夠深入理解深入理解ASP.NETASP.NET運(yùn)行原理運(yùn)行原理會(huì)開發(fā)用戶控件和自定義控件會(huì)開發(fā)用戶控件和自定義控件會(huì)使用會(huì)使用AjaxAjax技術(shù)構(gòu)建高用戶體驗(yàn)的技術(shù)構(gòu)建高用戶體驗(yàn)的Web應(yīng)用應(yīng)用會(huì)使用緩存優(yōu)化程序性能會(huì)使用緩存優(yōu)化程序性能會(huì)使用會(huì)使

3、用Web Service技術(shù)構(gòu)建分布式系統(tǒng)技術(shù)構(gòu)建分布式系統(tǒng)課程項(xiàng)目展示第三波書店升級(jí)版第三波書店升級(jí)版博客系統(tǒng)升級(jí)版博客系統(tǒng)升級(jí)版演示課程項(xiàng)目演示課程項(xiàng)目相關(guān)課程回顧ASP.NET的運(yùn)行機(jī)制?的運(yùn)行機(jī)制?.NET 中委托和事件的作用?中委托和事件的作用?ASP.NET 中常用的控件?中常用的控件?預(yù)習(xí)檢查用什么技術(shù)可以實(shí)現(xiàn)頁面靜態(tài)化?用什么技術(shù)可以實(shí)現(xiàn)頁面靜態(tài)化?如何讓如何讓IIS 處理靜態(tài)資源請求?處理靜態(tài)資源請求?本章任務(wù)實(shí)現(xiàn)第三波書店的數(shù)字水印效果實(shí)現(xiàn)第三波書店的數(shù)字水印效果實(shí)現(xiàn)第三波書店的靜態(tài)頁功能實(shí)現(xiàn)第三波書店的靜態(tài)頁功能本章目標(biāo)理解理解ASP.NET運(yùn)行時(shí)機(jī)制運(yùn)行時(shí)機(jī)制 掌握使用

4、掌握使用HttpHandler 顯示圖片數(shù)字水印顯示圖片數(shù)字水印掌握使用掌握使用HttpHandler 將動(dòng)態(tài)頁面靜態(tài)化將動(dòng)態(tài)頁面靜態(tài)化了解簡單了解簡單HttpModule 的編寫的編寫 會(huì)在會(huì)在IIS上配置資源文件和上配置資源文件和ISAPI 的映射的映射在圖片上增加站點(diǎn)標(biāo)在圖片上增加站點(diǎn)標(biāo)識(shí),能夠很好地保護(hù)識(shí),能夠很好地保護(hù)著作權(quán),防止他人盜著作權(quán),防止他人盜用圖片用圖片數(shù)字水印簡介資源準(zhǔn)備資源準(zhǔn)備水印圖片水印圖片默認(rèn)圖片默認(rèn)圖片采用圖片形式的水印,需要一采用圖片形式的水印,需要一個(gè)水印圖片個(gè)水印圖片當(dāng)圖片封面圖片不存在時(shí),當(dāng)圖片封面圖片不存在時(shí),顯示該圖片,此時(shí)就不需要顯示該圖片,此時(shí)就

5、不需要在圖片上繪制水印在圖片上繪制水印數(shù)字水印思路分析實(shí)現(xiàn)方式實(shí)現(xiàn)方式直接編輯每張圖片直接編輯每張圖片編程實(shí)現(xiàn)批量編輯圖片編程實(shí)現(xiàn)批量編輯圖片在顯示圖片時(shí),動(dòng)態(tài)添加數(shù)字水印效果在顯示圖片時(shí),動(dòng)態(tài)添加數(shù)字水印效果需要大量的人力需要大量的人力節(jié)省人力,效率高,但原始圖節(jié)省人力,效率高,但原始圖片丟失了片丟失了使用使用HttpHandler數(shù)字水印思路分析請求的終點(diǎn)請求的終點(diǎn) 最終的處理最終的處理 ASP.NET 運(yùn)行時(shí)和 HttpHandler 可能經(jīng)歷多個(gè)模塊,可能經(jīng)歷多個(gè)模塊, 層次層次“過濾過濾” 原路返回原路返回 操作演示:創(chuàng)建操作演示:創(chuàng)建HttpHandler程序程序using Sys

6、tem;using System.Web;public class Handler : IHttpHandler public void ProcessRequest (HttpContext context) context.Response.ContentType = text/plain; context.Response.Write(Hello World); public bool IsReusable get return false; 實(shí)現(xiàn)實(shí)現(xiàn)IsReusable屬性屬性實(shí)現(xiàn)實(shí)現(xiàn)IHttpHandler 接口接口實(shí)現(xiàn)實(shí)現(xiàn)ProcessRequest()方法方法HttpContex

7、t 對象,提供對用于為對象,提供對用于為 HTTP 請求提供服務(wù)的內(nèi)部服務(wù)器請求提供服務(wù)的內(nèi)部服務(wù)器對象(如對象(如 Request、Response、Session 和和 Server)的引用)的引用 關(guān)鍵代碼展示 .ashx文件的方式實(shí)現(xiàn)數(shù)字水印思路分析文件的方式實(shí)現(xiàn)數(shù)字水印思路分析獲得獲得URL傳的參數(shù)傳的參數(shù)ISBN根據(jù)根據(jù)ISBN查找相對應(yīng)的封面圖片查找相對應(yīng)的封面圖片將數(shù)字水印圖片將數(shù)字水印圖片“粘貼粘貼”在封面圖片的右下角在封面圖片的右下角修改程序的輸出類型,并將組合出的新圖片輸出修改程序的輸出類型,并將組合出的新圖片輸出修改頁面中訪問該圖片的路徑修改頁面中訪問該圖片的路徑指定H

8、andler方式實(shí)現(xiàn)數(shù)字水印動(dòng)態(tài)輸出圖片動(dòng)態(tài)輸出圖片創(chuàng)建創(chuàng)建HttpHandler程序程序編寫處理代碼編寫處理代碼修改圖書列表頁面的封面路徑修改圖書列表頁面的封面路徑查看效果查看效果指定Handler方式實(shí)現(xiàn)數(shù)字水印演示示例演示示例1:動(dòng)態(tài)處理輸出圖片:動(dòng)態(tài)處理輸出圖片程序輸出圖片代碼程序輸出圖片代碼 .public class BookCover : IHttpHandler public void ProcessRequest (HttpContext context) . .context.Response.ContentType = image/jpeg; image.Save(con

9、text.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);image.Dispose( );context.Response.End( ); .設(shè)置輸出格式設(shè)置輸出格式 輸出圖片文件輸出圖片文件 將圖片保存在輸出流將圖片保存在輸出流 關(guān)鍵代碼展示使用使用.ashx方式,需要修改所有訪問封面圖片的路方式,需要修改所有訪問封面圖片的路徑,太麻煩,能否直接訪問圖片,達(dá)到添加數(shù)字徑,太麻煩,能否直接訪問圖片,達(dá)到添加數(shù)字水印的效果?水印的效果?文件夾中的文件夾中的封面原圖封面原圖通過站點(diǎn)訪問該文件就顯通過站點(diǎn)訪問該文件就顯

10、示水印效果示水印效果全局Handler方式實(shí)現(xiàn)數(shù)字水印實(shí)現(xiàn)思路分析實(shí)現(xiàn)思路分析修改配置信息,將所有對修改配置信息,將所有對.JPG內(nèi)容的訪問轉(zhuǎn)到內(nèi)容的訪問轉(zhuǎn)到HttpHandler處理程序處理程序獲得訪問請求,得到用戶訪問的圖片路徑獲得訪問請求,得到用戶訪問的圖片路徑根據(jù)請求的路徑,查找相對應(yīng)的封面圖片根據(jù)請求的路徑,查找相對應(yīng)的封面圖片將數(shù)字水印圖片將數(shù)字水印圖片“粘貼粘貼”在封面圖片的右下角在封面圖片的右下角修改程序的輸出類型,并將組合出的新圖片輸出修改程序的輸出類型,并將組合出的新圖片輸出全局Handler方式實(shí)現(xiàn)數(shù)字水印實(shí)現(xiàn)數(shù)字水?。簩?shí)現(xiàn)數(shù)字水?。簑eb.config中注冊類,設(shè)置路徑

11、中注冊類,設(shè)置路徑編寫實(shí)現(xiàn)接口的類編寫實(shí)現(xiàn)接口的類使用開發(fā)服務(wù)器訪問圖書封面圖片使用開發(fā)服務(wù)器訪問圖書封面圖片全局Handler方式實(shí)現(xiàn)數(shù)字水印演示示例演示示例2:全局動(dòng)態(tài)處理輸出圖片:全局動(dòng)態(tài)處理輸出圖片配置配置verb:謂詞:謂詞GET、POST、FTP等等path:訪問路徑,此處表示所有針對:訪問路徑,此處表示所有針對“Images/BookCovers/*.jpg”路徑的的請求都將交給路徑的的請求都將交給CoverHandler類進(jìn)行處理類進(jìn)行處理type:指定的處理程序(類):指定的處理程序(類) 指定類名,新建的類指定類名,新建的類 URL路徑路徑web.config 的配置pub

12、lic class CoverHandler : IHttpHandler public void ProcessRequest(HttpContext context) System.Drawing.Image Cover; if (File.Exists(context.Request.PhysicalPath) Cover = Image.FromFile(context.Request.PhysicalPath); . . else . . . .處理代碼與上個(gè)例子一致處理代碼與上個(gè)例子一致 獲得針對封面的請求路徑獲得針對封面的請求路徑 PhysicalPath可用于獲得可用于獲得HT

13、TP請求所對應(yīng)的物理路徑請求所對應(yīng)的物理路徑關(guān)鍵代碼展示練習(xí)圖書封面圖片水印 需求說明需求說明分別以指定分別以指定HttpHandler 和全局和全局HttpHandler 方式方式實(shí)現(xiàn)圖書封面圖片的水印效果實(shí)現(xiàn)圖書封面圖片的水印效果 完成時(shí)間:完成時(shí)間:30分鐘分鐘共性問題集中講解n常見調(diào)試問題及解決辦法常見調(diào)試問題及解決辦法n代碼規(guī)范問題代碼規(guī)范問題共性問題集中講解共性問題集中講解認(rèn)識(shí)ISAPIISAPI 全稱全稱Internet Server Application Programming InterfaceISAPI 是可擴(kuò)展的是可擴(kuò)展的ISAPI 可管理特定資源的請求可管理特定資源的

14、請求如:如:aspx、asp 、php請求請求aspnet_isapi.dll 是一種是一種ISAPI負(fù)責(zé)處理負(fù)責(zé)處理aspx 等類型的請求等類型的請求負(fù)責(zé)創(chuàng)建負(fù)責(zé)創(chuàng)建ASP.NET 的運(yùn)行時(shí)環(huán)境并和它發(fā)生交互的運(yùn)行時(shí)環(huán)境并和它發(fā)生交互 處理動(dòng)態(tài)請求的起點(diǎn)處理動(dòng)態(tài)請求的起點(diǎn)認(rèn)識(shí)ISAPIASP.NET 請求的處理過程請求的處理過程1、請求到達(dá)時(shí),請求到達(dá)時(shí),IIS 檢查資源類型并調(diào)用檢查資源類型并調(diào)用 ASP.NET ISAPI調(diào)用調(diào)用ASP.NET 輔助進(jìn)程(輔助進(jìn)程(IIS 6 對應(yīng)為對應(yīng)為w3wp.exe) 輔助進(jìn)程加載輔助進(jìn)程加載.NET運(yùn)行時(shí)環(huán)境運(yùn)行時(shí)環(huán)境 ASP.NET ISAPI

15、將請求轉(zhuǎn)發(fā)給輔助進(jìn)程將請求轉(zhuǎn)發(fā)給輔助進(jìn)程 2、輔助進(jìn)程收到請求,通知輔助進(jìn)程收到請求,通知ASP.NET ISAPI它將進(jìn)行它將進(jìn)行 處理處理 3、在輔助進(jìn)程的上下文中執(zhí)行處理過程在輔助進(jìn)程的上下文中執(zhí)行處理過程 在在.NET 運(yùn)行時(shí)環(huán)境中執(zhí)行運(yùn)行時(shí)環(huán)境中執(zhí)行 經(jīng)經(jīng)HttpModule和和HttpHandler 的處理的處理 4、處理完畢,通知處理完畢,通知ASP.NET ISAPI完成完成 理解 HttpModuleHttpModule 動(dòng)動(dòng)態(tài)請求的必經(jīng)之態(tài)請求的必經(jīng)之路路演示示例演示示例3:第一個(gè):第一個(gè) HttpModule 程序程序public class TestHttpModule

16、 : IHttpModule . public void Dispose() public void Init(HttpApplication context) context.BeginRequest += new EventHandler(context_BeginRequest); context.EndRequest += new EventHandler(context_EndRequest); private void context_BeginRequest(object sender, EventArgs e) HttpApplication applcation = send

17、er as HttpApplication; applcation.Response.Write(HttpModule 開始處理請求開始處理請求); private void context_EndRequest(object sender, EventArgs e) HttpApplication applcation = sender as HttpApplication; applcation.Response.Write(HttpModule 結(jié)束處理請求結(jié)束處理請求); 初始化方法初始化方法 關(guān)鍵代碼展示 web.config 的配置的配置 HttpModule 應(yīng)用舉例URL 重寫

18、重寫例:例:http:/./Default.aspx?category=games&id=3重寫為重寫為 http:/./games/id/3.aspx 權(quán)限認(rèn)證權(quán)限認(rèn)證訪問日志訪問日志深入 HttpHandler實(shí)現(xiàn)實(shí)現(xiàn) HttpHander 的關(guān)鍵點(diǎn)的關(guān)鍵點(diǎn)IHttpHandler接口接口IsReusable屬性屬性ProcessRequest()方法方法HttpContext 對象對象深入 HttpHandlerHttpHander 為為一般處理程序一般處理程序,即可以處理網(wǎng)站中任,即可以處理網(wǎng)站中任何資源的請求何資源的請求 aspx 頁面也是一種處理程序頁面也是一種處理程序繼承

19、了繼承了 IHttpHandler接口接口 HttpHandler 和和 aspx 處理程序的區(qū)別處理程序的區(qū)別 不同點(diǎn)不同點(diǎn) HttpHandler aspx能夠使用服務(wù)能夠使用服務(wù)器端控件器端控件 不可以不可以 可以可以 能否使用能否使用Session 不能直接使用,需要繼承不能直接使用,需要繼承IRequiresSessionState 接口接口 可以可以 處理的請求處理的請求 幾乎可以處理所有擴(kuò)展名的請幾乎可以處理所有擴(kuò)展名的請求求 只處理只處理.aspx 為擴(kuò)為擴(kuò)展名的請求展名的請求 指導(dǎo)實(shí)現(xiàn)網(wǎng)頁圖片防盜鏈2-1 訓(xùn)練要點(diǎn):訓(xùn)練要點(diǎn):HttpHandler 的創(chuàng)建和編碼的創(chuàng)建和編碼

20、web.config 中配置中配置HttpHandler和文件的映射和文件的映射 需求說明:需求說明:本網(wǎng)站頁面引用圖片路徑后可正常顯示本網(wǎng)站頁面引用圖片路徑后可正常顯示 其它網(wǎng)站引用本網(wǎng)站中的圖片資源,不能正常顯其它網(wǎng)站引用本網(wǎng)站中的圖片資源,不能正常顯示,而顯示一個(gè)錯(cuò)誤的圖片示,而顯示一個(gè)錯(cuò)誤的圖片講解需求說明講解需求說明指導(dǎo)實(shí)現(xiàn)網(wǎng)頁圖片防盜鏈 2-2實(shí)現(xiàn)思路:實(shí)現(xiàn)思路:通過一個(gè)通過一個(gè)HttpHandler 截取截取.jpg 請求請求 通過通過HttpContext判斷是否是本站的地址在請判斷是否是本站的地址在請求資源求資源 通過通過 context.Request.UrlReferre

21、r 獲取有關(guān)獲取有關(guān)客戶端上次請求的客戶端上次請求的 URL 信息信息完成時(shí)間:完成時(shí)間:25分鐘分鐘public void ProcessRequest(HttpContext context) if (context.Request.UrlReferrer.Host = localhost & context.Request.UrlReferrer.Port = context.Request.Url.Port) context.Response.ContentType = image/jpg; context.Response.WriteFile(context.Request.

22、PhysicalPath); else context.Response.ContentType = image/jpg; context.Response.WriteFile( context.Request.PhysicalApplicationPath + res/163error.jpg); 主機(jī)名主機(jī)名端口號(hào)端口號(hào)輸出錯(cuò)誤圖片輸出錯(cuò)誤圖片共性問題集中講解n常見調(diào)試問題及解決辦法常見調(diào)試問題及解決辦法n代碼規(guī)范問題代碼規(guī)范問題共性問題集中講解共性問題集中講解靜態(tài)化技術(shù)簡介 靜態(tài)化,即把動(dòng)態(tài)頁面轉(zhuǎn)換成靜態(tài)頁面靜態(tài)化,即把動(dòng)態(tài)頁面轉(zhuǎn)換成靜態(tài)頁面頁面靜態(tài)化的好處頁面靜態(tài)化的好處有利于搜索引擎

23、搜索有利于搜索引擎搜索沒有丟掉動(dòng)態(tài)頁面維護(hù)內(nèi)容的方便性沒有丟掉動(dòng)態(tài)頁面維護(hù)內(nèi)容的方便性 性能和安全方面的提升性能和安全方面的提升 實(shí)現(xiàn)頁面靜態(tài)化 頁面靜態(tài)化的策略頁面靜態(tài)化的策略頁面靜態(tài)化的三種做法頁面靜態(tài)化的三種做法偽靜態(tài)偽靜態(tài)真靜態(tài)真靜態(tài)折中方法折中方法生成靜態(tài)頁面的步驟生成靜態(tài)頁面的步驟1、制作靜態(tài)頁面模板制作靜態(tài)頁面模板 2、由靜態(tài)模板動(dòng)態(tài)生成靜態(tài)頁面由靜態(tài)模板動(dòng)態(tài)生成靜態(tài)頁面3、使用使用HttpHandler 生成靜態(tài)頁面生成靜態(tài)頁面演示示例演示示例4:靜態(tài)化圖書詳細(xì)信息頁:靜態(tài)化圖書詳細(xì)信息頁public void ProcessRequest(HttpContext contex

24、t) int i = context.Request.Path.LastIndexOf(/); string strBookId = context.Request.Path.Substring( i + 1, context.Request.Path.Length - (i + 6); int bookId = Convert.ToInt32(strBookId); string filePath = context.Server.MapPath( /BookDetails/Book_ + bookId + .htm); BookManager manager = new BookManag

25、er(); context.Application.Lock(); /加鎖加鎖 if (!File.Exists(filePath) string templatePath = context.Server.MapPath( /BookDetails/template.htm);/模板路徑模板路徑 string template = ; /模板內(nèi)容模板內(nèi)容 using (StreamReader sr = new StreamReader(templatePath) template = sr.ReadToEnd();/讀取模板內(nèi)容讀取模板內(nèi)容 關(guān)鍵代碼展示由地址獲取由地址獲取bookId生成

26、實(shí)際路生成實(shí)際路徑徑獲取模板獲取模板 Book book = manager.GetBookById(bookId);/獲取獲取Book信息信息 string html = template.Replace(WebRootPath, context.Request.ApplicationPath) /替換替換Web路徑路徑 .Replace(BookId, bookId.ToString() using (StreamWriter sw = new StreamWriter(filePath) sw.Write(html); /寫入靜態(tài)化頁面內(nèi)容寫入靜態(tài)化頁面內(nèi)容 context.Application.UnLock(); /解鎖解鎖 manager.AddClick(bookId); /增加點(diǎn)擊數(shù)增加點(diǎn)擊數(shù) context.Server.Execute(/bookDetails/Book_ + bookId + .html); /轉(zhuǎn)到實(shí)際路徑轉(zhuǎn)到實(shí)際路徑模板內(nèi)容替換模板內(nèi)容替換練習(xí)靜態(tài)化圖書詳細(xì)頁面需求說明需求說明使用使用HttpHandler 技術(shù)實(shí)現(xiàn)技術(shù)實(shí)現(xiàn)“第三波書店第三波書店”圖書詳圖書詳細(xì)信息頁的靜態(tài)化細(xì)信息頁的靜態(tài)化 完成時(shí)間:完成時(shí)間:25分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論