理解HttpHandler,并为所有*.jpg图片生成一段文字于图
网络编程 2021-07-04 22:40www.168986.cn编程入门
HttpHandler就是最终相应HTTP请求,生成HTTP响应的处理器,他们的实例由asp.运行时创建,,并生存在asp.的运行时环境中,如果asp.运行时是处理请求的工厂,HttpHandler是处理请求的工人
接口IHttpHandler的定义如下
interface IHttpHandler
{
void ProcessRequest(HttpContext ctx);
bool IsReuseable { get; }
1新建一网站,名为MyHttpHandlerTest
2右击添加,选择类库,取名为MyHttpHandler
3-在上一步新建的类库上右键添加System.Web引用
主要代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.SessionState;
namespace MyHttpHandler
{
public class Class1:IHttpHandler,IRequiresSessionState
{
#region IHttpHandler成员
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Write("handler处理");
}
#endregion
}
}
4-在MyHttpHandler类库上右键,生成,取名为MyHttpHandler
5-在web.config中的system.web节点中天下如下节点
<httpHandlers>
<add verb="" path="Handler1.aspx" type="MyHttpHandler.Class1,MyHttpHandler"/>
<!--
配置文件中的选项说明
· verb可以是"GET"或"POST",表示对GET或POST的请求进行处理。""表示对所有请求进行处理。
· Path指明对相应的文件进行处理,".aspx"表示对发给所有ASPX页面的请求进行处理。可以指明路径,如"/test/.aspx",表明只对test目录下的ASPX文件进行处理。
· Type属性中,逗号前的字符串指明HttpHandler的实现类的类名,后面的字符串指明Dll文件的名称。
格式如type="自定义HttpHandler的实现类的全名,自定义HttpHandler的实现类的命名空间(即Dll名)"
或 type="自定义HttpHandler的实现类的全名"
-->
</httpHandlers>
6-在MyHttpHandlerTest右键添加引用,选择项目找到刚才编译后的.dll文件
7-运行Handler1.aspx,页面显示
狼蚁网站SEO优化我们利用HttpHandler将一段文字生成于图片中
添加一个类,默认为Class.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.SessionState;
using System.Drawing;
/// <summary>
/// Class1 的摘要说明
/// </summary>
public class Class1:IHttpHandler
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public bool IsReusable
{
get { return true; }
}
private static Image OldImage = null;
private static Image GetOldImage(HttpContext context)
{
if (OldImage == null)
{
OldImage = Image.FromFile(context.Server.MapPath("~/Images/Old.jpg"));
}
return OldImage.Clone() as Image;
}
public void ProcessRequest(HttpContext context)
{
Image newimage = GetOldImage(context);
Graphics gh = Graphics.FromImage(newimage);
Font font = new Font("Monaco", 24.0f, FontStyle.Regular);
string writetext = HttpUtility.UrlEncode(context.Request.QueryString["writetext"]);
gh.DrawString(HttpUtility.UrlDecode(writetext), font, new SolidBrush(Color.LightBlue), 20.0f, newimage.Height - font.Height - 30);
newimage.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
gh.Dispose();
newimage.Dispose();
}
}
新建一个.aspx页面,添加一个HyperLink控件,再在其.cs文件中添加一段代码传值
protected void Page_Load(object sender, EventArgs e)
{
HyperLink1.NavigateUrl = "img.jpg?writetext=" + HttpUtility.UrlEncode("大蜗牛");
}
还需在web.config文件中将httpHandlers节点中改为如下
<add verb="" path=".jpg" type="Class1"/>
表明对所有的.jpg格式的文件才会处理
参考《道不远人 深入解析asp. 2.0控件开发》
代码如下:
interface IHttpHandler
{
void ProcessRequest(HttpContext ctx);
bool IsReuseable { get; }
1新建一网站,名为MyHttpHandlerTest
2右击添加,选择类库,取名为MyHttpHandler
3-在上一步新建的类库上右键添加System.Web引用
主要代码
代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.SessionState;
namespace MyHttpHandler
{
public class Class1:IHttpHandler,IRequiresSessionState
{
#region IHttpHandler成员
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Write("handler处理");
}
#endregion
}
}
4-在MyHttpHandler类库上右键,生成,取名为MyHttpHandler
5-在web.config中的system.web节点中天下如下节点
<httpHandlers>
<add verb="" path="Handler1.aspx" type="MyHttpHandler.Class1,MyHttpHandler"/>
<!--
配置文件中的选项说明
· verb可以是"GET"或"POST",表示对GET或POST的请求进行处理。""表示对所有请求进行处理。
· Path指明对相应的文件进行处理,".aspx"表示对发给所有ASPX页面的请求进行处理。可以指明路径,如"/test/.aspx",表明只对test目录下的ASPX文件进行处理。
· Type属性中,逗号前的字符串指明HttpHandler的实现类的类名,后面的字符串指明Dll文件的名称。
格式如type="自定义HttpHandler的实现类的全名,自定义HttpHandler的实现类的命名空间(即Dll名)"
或 type="自定义HttpHandler的实现类的全名"
-->
</httpHandlers>
6-在MyHttpHandlerTest右键添加引用,选择项目找到刚才编译后的.dll文件
7-运行Handler1.aspx,页面显示
狼蚁网站SEO优化我们利用HttpHandler将一段文字生成于图片中
添加一个类,默认为Class.cs
代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.SessionState;
using System.Drawing;
/// <summary>
/// Class1 的摘要说明
/// </summary>
public class Class1:IHttpHandler
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public bool IsReusable
{
get { return true; }
}
private static Image OldImage = null;
private static Image GetOldImage(HttpContext context)
{
if (OldImage == null)
{
OldImage = Image.FromFile(context.Server.MapPath("~/Images/Old.jpg"));
}
return OldImage.Clone() as Image;
}
public void ProcessRequest(HttpContext context)
{
Image newimage = GetOldImage(context);
Graphics gh = Graphics.FromImage(newimage);
Font font = new Font("Monaco", 24.0f, FontStyle.Regular);
string writetext = HttpUtility.UrlEncode(context.Request.QueryString["writetext"]);
gh.DrawString(HttpUtility.UrlDecode(writetext), font, new SolidBrush(Color.LightBlue), 20.0f, newimage.Height - font.Height - 30);
newimage.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
gh.Dispose();
newimage.Dispose();
}
}
新建一个.aspx页面,添加一个HyperLink控件,再在其.cs文件中添加一段代码传值
代码如下:
protected void Page_Load(object sender, EventArgs e)
{
HyperLink1.NavigateUrl = "img.jpg?writetext=" + HttpUtility.UrlEncode("大蜗牛");
}
还需在web.config文件中将httpHandlers节点中改为如下
<add verb="" path=".jpg" type="Class1"/>
表明对所有的.jpg格式的文件才会处理
参考《道不远人 深入解析asp. 2.0控件开发》
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程