资源预览内容
第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
第9页 / 共32页
第10页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
静态网页设计教学 学习情境九 用户控件与 HttpHandler回顾2-1n简述在已有模板情况下,使用 CodeSmith生成代码步骤启动CodeSmith Explorer选择模板输入属性值生成代码n下面是CodeSmith模板中生成文件名的方 法,有什么问题?回顾2-2public string GetFileName( ) return this.SourceTable+ “.cs“; override SourceTable是对象,应该使用SourceTable.Name 预习检查q什么是用户控件?q什么是数字水印?本章任务n使用用户控件开发用户登录n为图书封面添加数字水印本章目标n能使用用户控件简化复杂开发n能利用HttpHandler显示图片数字水印用户控件n用户控件可以实现页面代码的重用搜狐首页搜狐新闻页用户控件n用户控件是一种自定义的组合控件封装独立的功能(显示列表等)像页面一样方便的编辑,像控件一样使用拖 拽方式使用后缀名为.ascxn作用页面代码的重用母版页提供整个页面级的风格控制和代码重用; 用户控件提供小范围的风格控制和更灵活的代码重用 创建用户控件n将用户登录的部分放入用户控件新建用户控件在用户控件上放置相关的Web控件编写用户控件的后台代码在其他页面使用用户控件演示示例:登录的用户控件 创建用户控件nControl指令n后台代码类似于Page指令 public partial class _Controls_UserLoginControl : System.Web.UI.UserControl protected void Page_Load(object sender, EventArgs e). . 也有Page_Load事件 使用用户控件n页面中注册和使用在页面中注册控件 将用户控件放入页面指定位置即可 注意事项n用户控件中可以使用其他用户控件可以像页面一样,在用户控件中使用其他用 户控件但用户控件中不可包含自己,也不能发生任 何循环嵌套用户控件1用户控件2用户控件1用户控件与Pagen用户控件与页面的区别?后缀名:用户控件以.ascx为后缀名,而页 面后缀名是.aspx指令:用户控件为Control,页面是 Page继承:用户控件继承自 System.Web.UI.UserControl,而页面继承自 System.Web.UI.Page用户控件不可直接访问,页面可直接访问页面:容器; 用户控件:内容。 小结n可否在用户控件中访问外部页面的控件? 为什么?n用户控件编码使用哪个标记?n用户控件和母版页分别在哪种情况下使用 ?数字水印在图片上增加站点标 识,能够很好地保护 著作权,防止他人盗 用图片。数字水印的实现n资源准备水印图片默认图片采用图片形式的水印,需要一 个水印图片。当图片封面图片不存在时, 显示该图片,此时就不需要 在图片上绘制水印。数字水印的实现n实现方式分析直接编辑每张图片编程实现批量编辑图片在显示图片时,动态添加数字水印效果需要大量的人力。节省人力,效率高,但原始图 片丢失了。使用HttpHandlerHttpModule和HttpHandlerHttpHandler 处理程序 Http运行时Http模块Http模块Http模块Http请求响应请求的终点 最终的处理 可能经历多个模块, 层次“过滤” 原路返回 HttpHandler的使用n创建HttpHandler程序添加新项选择“一般处理程序”查看运行结果演示:创建HttpHandler程序 关键代码using System; 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;实现IsReusable属性实现IHttpHandler 接口实现ProcessRequest方法ProcessRequest是HTTP请求的最终处理HttpContext 对象,提供对用于为 HTTP 请求提供服务的内部服务 器对象(如 Request、Response、Session 和 Server)的引用 。 指定Handler方式实现数字水印n.ashx文件的方式实现数字水印思路分析获得URL传的参数ISBN;根据ISBN查找相对应的封面图片;将数字水印图片“粘贴”在封面图片的右下角 ;修改程序的输出类型,并将组合出的新图片 输出。修改页面中访问该图片的路径。指定Handler方式实现数字水印n动态输出图片创建HttpHandler程序编写处理代码修改图书列表页面的封面路径查看效果演示示例:动态处理输出图片 关键代码 n程序输出图片代码 代码. public class BookCover : IHttpHandler public void ProcessRequest (HttpContext context) . . context.Response.ContentType = “image/jpeg“;Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); Cover.Dispose( ); context.Response.End( ); . . 设置输出格式 输出图片文件 将图片保存在输出流 全局Handler方式实现数字水印n使用.ashx方式,需要修改所有访问封面图 片的路径,太麻烦。n能否直接访问图片,达到添加数字水印的 效果?文件夹中的 封面原图通过站点访问该文件就显 示水印效果全局Handler方式实现数字水印n实现思路分析修改配置信息,将所有对.JPG内容的访问 转到HttpHandler处理程序获得访问请求,得到用户访问的图片路径;根据请求的路径,查找相对应的封面图片;将数字水印图片“粘贴”在封面图片的右下角 ;修改程序的输出类型,并将组合出的新图片 输出。全局Handler方式实现数字水印n实现数字水印:web.config中注册类,设置路径编写实现接口的类使用开发服务器访问图书封面图片演示示例:动态处理输出图片 配置 n配置n语法verb:谓词GET、POST、FTP等。path:访问路径,此处表示所有针对 “Images/BookCovers/*.jpg”路径的的请求都将 交给CoverHandler类进行处理。type:指定的处理程序(类)。 指定类名,新建的类 URL路径关键代码public 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 . . . . 处理代码与上个例子一致 获得针对封面的请求路径 PhysicalPath可用于获得HTTP请求所对应的物理路径注意事项n在IIS上使用该方式要做其他处理开发服务器仅提供最简单的Web服务器功能 ,它不对请求的内容做任何处理,而是直接将 所有的请求转交给ASP.NET处理;IIS功能比较完善,可以独立处理一些访问 请求,比如.html、.jpg等的访问不会提交给 ASP.NET来处理aspnet_isapi.dllIIS请求.jpg.aspx等提交ISAPI处理处理结 果返回配置扩展名n演示配置扩展名打开IIS虚拟目录的属性项在目录栏中选则“配置”添加扩展名演示示例:自定义扩展名过程选择配置添加新扩展名指定处理程序的路径,我们 这里需要指定当前版本的 aspnet_isapi.dll扩展名动作,POST、GET等总结n简述将页面中的部分内容放入用户控件中 的步骤。n实现自定义的HttpHandler程序,需要实现 哪个接口?n画图表示HttpHandler在请求提交过程中的 地位。n简述IIS处理.html页面和.aspx页面的过程 。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号