开发基于ajax和控件技术的web应用系统_第1页
开发基于ajax和控件技术的web应用系统_第2页
开发基于ajax和控件技术的web应用系统_第3页
开发基于ajax和控件技术的web应用系统_第4页
开发基于ajax和控件技术的web应用系统_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ASP.NET运行时模型第一章课程地位每阶段已包括:项目实战、COT课程总课时:

1008C#OOPJavaScriptT-SQLJavaOOPS2350Y2344JSPS2:Java阶段项目预备课程WinFormsLogicJavaS1314S1:.NET阶段项目ASP.NETHibernateN-TierAjaxSpringStrutsHTMLC#NTCProject知识Y2:.NET毕业设计项目COTCOTCOTY2:Java毕业设计项目目标岗位标准手册就业技能结构图本门课程目标学完本门课程后,你能够深入理解ASP.NET运行原理会开发用户控件和自定义控件会使用Ajax技术构建高用户体验的Web应用会使用缓存优化程序性能会使用WebService技术构建分布式系统课程项目展示第三波书店升级版博客系统升级版演示课程项目相关课程回顾ASP.NET的运行机制?.NET中委托和事件的作用?ASP.NET中常用的控件?预习检查用什么技术可以实现页面静态化?如何让IIS处理静态资源请求?本章任务实现第三波书店的数字水印效果实现第三波书店的静态页功能本章目标理解ASP.NET运行时机制掌握使用HttpHandler显示图片数字水印掌握使用HttpHandler将动态页面静态化了解简单HttpModule的编写会在IIS上配置资源文件和ISAPI的映射在图片上增加站点标识,能够很好地保护著作权,防止他人盗用图片数字水印简介资源准备水印图片默认图片采用图片形式的水印,需要一个水印图片当图片封面图片不存在时,显示该图片,此时就不需要在图片上绘制水印数字水印思路分析实现方式直接编辑每张图片编程实现批量编辑图片在显示图片时,动态添加数字水印效果需要大量的人力节省人力,效率高,但原始图片丢失了使用HttpHandler数字水印思路分析请求的终点最终的处理ASP.NET运行时和HttpHandler可能经历多个模块,层次“过滤”原路返回操作演示:创建HttpHandler程序<%@WebHandlerLanguage="C#"Class="Handler"%>usingSystem;usingSystem.Web;publicclassHandler:IHttpHandler{

publicvoidProcessRequest(HttpContextcontext){

context.Response.ContentType="text/plain";

context.Response.Write("HelloWorld");}

publicboolIsReusable{get{returnfalse;}}}实现IsReusable属性实现IHttpHandler接口实现ProcessRequest()方法HttpContext对象,提供对用于为HTTP请求提供服务的内部服务器对象(如Request、Response、Session和Server)的引用关键代码展示

.ashx文件的方式实现数字水印思路分析获得URL传的参数ISBN根据ISBN查找相对应的封面图片将数字水印图片“粘贴”在封面图片的右下角修改程序的输出类型,并将组合出的新图片输出修改页面中访问该图片的路径指定Handler方式实现数字水印动态输出图片创建HttpHandler程序编写处理代码修改图书列表页面的封面路径查看效果指定Handler方式实现数字水印演示示例1:动态处理输出图片程序输出图片代码<%@WebHandlerLanguage="C#"Class="BookCover"%>......publicclassBookCover:IHttpHandler{publicvoidProcessRequest(HttpContextcontext){

......

context.Response.ContentType="image/jpeg";

image.Save(context.Response.OutputStream,

System.Drawing.Imaging.ImageFormat.Jpeg);

image.Dispose(

);

context.Response.End(

);

} ......}设置输出格式输出图片文件

将图片保存在输出流

关键代码展示使用.ashx方式,需要修改所有访问封面图片的路径,太麻烦,能否直接访问图片,达到添加数字水印的效果?文件夹中的封面原图通过站点访问该文件就显示水印效果全局Handler方式实现数字水印实现思路分析修改配置信息,将所有对.JPG内容的访问转到HttpHandler处理程序获得访问请求,得到用户访问的图片路径根据请求的路径,查找相对应的封面图片将数字水印图片“粘贴”在封面图片的右下角修改程序的输出类型,并将组合出的新图片输出全局Handler方式实现数字水印实现数字水印:web.config中注册类,设置路径编写实现接口的类使用开发服务器访问图书封面图片全局Handler方式实现数字水印演示示例2:全局动态处理输出图片配置verb:谓词GET、POST、FTP等path:访问路径,此处表示所有针对“Images/BookCovers/*.jpg”路径的的请求都将交给CoverHandler类进行处理type:指定的处理程序(类)<httpHandlers>

<addverb="*"path="Images/BookCovers/*.jpg"type="handler"/></httpHandlers>指定类名,新建的类URL路径web.config的配置publicclassCoverHandler:IHttpHandler{publicvoidProcessRequest(HttpContextcontext){System.Drawing.ImageCover;if(File.Exists(context.Request.PhysicalPath)){Cover=Image.FromFile(context.Request.PhysicalPath);

......}else{

......}}

......}处理代码与上个例子一致

获得针对封面的请求路径

PhysicalPath可用于获得HTTP请求所对应的物理路径关键代码展示练习——图书封面图片水印

需求说明分别以指定HttpHandler和全局HttpHandler方式实现图书封面图片的水印效果完成时间:30分钟共性问题集中讲解常见调试问题及解决办法代码规范问题共性问题集中讲解认识ISAPIISAPI全称InternetServerApplicationProgrammingInterfaceISAPI是可扩展的ISAPI可管理特定资源的请求如:aspx、asp、php请求aspnet_isapi.dll

是一种ISAPI负责处理aspx等类型的请求负责创建ASP.NET的运行时环境并和它发生交互处理动态请求的起点认识ISAPIASP.NET请求的处理过程1、请求到达时,IIS检查资源类型并调用

ASP.NETISAPI调用ASP.NET辅助进程(IIS6对应为w3wp.exe)辅助进程加载.NET运行时环境ASP.NETISAPI将请求转发给辅助进程2、辅助进程收到请求,通知ASP.NETISAPI它将进行处理3、在辅助进程的上下文中执行处理过程在.NET运行时环境中执行经HttpModule和HttpHandler的处理4、处理完毕,通知ASP.NETISAPI完成理解HttpModuleHttpModule—动态请求的必经之路演示示例3:第一个HttpModule程序publicclassTestHttpModule:IHttpModule{

......

publicvoidDispose(){

}

publicvoidInit(HttpApplicationcontext){context.BeginRequest+=new

EventHandler(context_BeginRequest);

context.EndRequest+=newEventHandler(context_EndRequest);}

privatevoidcontext_BeginRequest(objectsender,EventArgse){HttpApplicationapplcation=senderasHttpApplication;applcation.Response.Write("<p>HttpModule开始处理请求</p>");}privatevoidcontext_EndRequest(objectsender,EventArgse){HttpApplicationapplcation=senderasHttpApplication;applcation.Response.Write("<p>HttpModule结束处理请求</p>");}}初始化方法

关键代码展示<system.web><httpModules><addname="TestHttpModule"type="TestHttpModule"/></httpModules></system.web>web.config的配置

HttpModule应用举例URL重写例:重写为权限认证访问日志……深入HttpHandler实现HttpHander的关键点IHttpHandler接口IsReusable属性ProcessRequest()方法HttpContext对象深入HttpHandlerHttpHander为一般处理程序,即可以处理网站中任何资源的请求aspx页面也是一种处理程序继承了IHttpHandler接口

HttpHandler和aspx处理程序的区别不同点HttpHandleraspx能够使用服务器端控件不可以可以能否使用Session不能直接使用,需要继承IRequiresSessionState接口可以处理的请求几乎可以处理所有扩展名的请求只处理.aspx为扩展名的请求指导——实现网页图片防盗链2-1

训练要点:HttpHandler的创建和编码web.config中配置HttpHandler和文件的映射需求说明:本网站页面引用图片路径后可正常显示其它网站引用本网站中的图片资源,不能正常显示,而显示一个错误的图片讲解需求说明指导——实现网页图片防盗链

2-2实现思路:通过一个HttpHandler截取.jpg请求通过HttpContext判断是否是本站的地址在请求资源通过context.Request.UrlReferrer获取有关客户端上次请求的URL信息完成时间:25分钟publicvoidProcessRequest(HttpContextcontext){if(context.Request.UrlReferrer.Host=="localhost"

&&context.Request.UrlReferrer.Port==context.Request.Url.Port)

{context.Response.ContentType="image/jpg";context.Response.WriteFile(context.Request.PhysicalPath);

}else{context.Response.ContentType="image/jpg";context.Response.WriteFile(context.Request.PhysicalApplicationPath+"res/163error.jpg");}}主机名端口号输出错误图片共性问题集中讲解常见调试问题及解决办法代码规范问题共性问题集中讲解静态化技术简介

静态化,即把动态页面转换成静态页面页面静态化的好处有利于搜索引擎搜索没有丢掉动态页面维护内容的方便性性能和安全方面的提升实现页面静态化

页面静态化的策略页面静态化的三种做法伪静态真静态折中方法生成静态页面的步骤1、制作静态页面模板2、由静态模板动态生成静态页面3、使用HttpHandler生成静态页面演示示例4:静态化图书详细信息页publicvoidProcessRequest(HttpContextcontext){inti=context.Request.Path.LastIndexOf("/");stringstrBookId=context.Request.Path.Substring(i+1,context.Request.Path.Length-(i+6));

intbookId=Convert.ToInt32(strBookId);

stringfilePath=context.Server.MapPath(

"~/BookDetails/Book_"+bookId+".htm");BookManagermanager=newBookManager();

context.Application.Lock();

//加锁

if(!File.Exists(filePath)){stringtemplatePath=context.Server.MapPath("~/BookDetails/template.htm");//模板路径

stringtemplate="";

//模板内容

using(StreamReadersr=newStreamReader(templatePath)){template=sr.ReadToEnd();//读取模板内容

}关键代码展示由地址获取bookId生成实际路径获取模板

Bookbook=manager.GetBookById(bookId);//获取Book信息stringhtml=template.Replace("[WebRootPath]",context.Request.ApplicationPath)

//替换Web路径

.Replace("[BookId]",bookId.ToString())

……using(StreamWritersw=newStreamWriter(filePath)){

sw.Write(html);

//写入静态化页面内容

}}context.Application.UnLock();

//解锁

manager.AddClick(bookId);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论