ashx
与Java Servlet类似,不用涉及到aspx个页面。ashx是asp的基本处理程序。aspx继承自ashx处理程序的。
.ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式,例如用于生成动态图片、动态文本等内容。
创建ashx程序
Visual Studio中【添加新项】对话框-->【web】菜单-->【一般处理程序】。
注意:表单提交一定要有name
提交到服务器的表单元素,一定要有name属性。否则浏览器不会提交表单元素的值。
由于servlet和struts2获取请求参数时都会使用浏览器端的name属性。所以之前没有注意过这个问题。
说明:
新建的一般处理程序。会有WebService的字符在类之前。但没有引入命名空间。显示错误。
在不使用WebService情况下,可以删掉。也可以引入命名空间,消除错误。
例:
1.HTML表单
<html>
<head><title></title></head>
<body>
<form action="Hello.ashx">
姓名:<input type="text" name="UserName" /><input type="submit" value="提交" />
</form>
</body>
</html>
2.ashx处理程序
//Hello.ashx文件
using System;
using System.Web;
public class Hello:IHttpHandler{
public void ProcessRequest(){
context.Response.ContentType="text/html";
string userName=context.Request[UserName];
if(string.IsNullEmpty(userName)){
context.Response.Write("Welcome:"+userName);
}else{
context.Response.Write("Welcome");
}
}
public bool IsReusable{
get{
return false;
}
}
}
HttpHandler实现文件下载
如果HttpHandler输出的是html,txt,jpeg等类型的信息,那么浏览器会直线显示。如果希望弹出保存对话框,则需要添加Header:
string encodeFileName=HttpUtility.UrlEncode("下载数据.xls");
Response.AddHeader("Content-Disponsition",string.Format("attachment;filename=\"{0}\"",encodeFileName));
说明:filename表示默认文件名。
ContentType:
excel:application/x-excel
任意文件下载:application/x-stream
NPOI创建Excel
1.把NPOI拷贝到项目中。
即在应用程序中建立一个文件夹(如lib),拷贝NPOI的所有dll和其他文件到这个文件夹中。
2.引用文件夹中的dll
右击【引用】-->【添加引用】-->【浏览】
3.新建一般处理程序。
using System;
using System.Web;
public class Hello:IHttpHandler{
public void ProcessRequest(){
context.Response.ContentType="application/x-excel";
string encodeFileName=HttpUtility.UrlEncode("动态数据.xls");
Response.AddHeader("Content-Disponsition",string.Format
("attachment;filename=\"{0}\"",encodeFileName));
HSSFWorkbook=new HSSFWorkbook();
HSSFSheet sheet = workbook.CreateShet();
HSFRow = sheet.CreateRow(0);
HSSF Cell1=row.CreateCell(0,HSSFCell.CELL_TYPE_STRING);
cell1.SetCellValue("hello");
//row.CreateCell(0,HSSFCell. CELL_TYPE_STRING ).SetCellValue("Hello");
row.CreateCell(1,HSSFCell.CELL_TYPE_NUMERIC).SetCellValue(3.14);
wookbook.Write(context.Response.OutpouStream);
}
public bool IsReusable{
get{
return false;
}
}
}
注意:能直接将生产的文件以流的形式输出给浏览器,就不要生产临时文件。
分享到:
相关推荐
在标题提及的场景中,“在ashx中验证是否登陆、是否有操作权限的基类”是一个设计模式,旨在提高代码的复用性和安全性,使得每个具体的ASHX处理程序无需重复编写用户身份验证和权限检查的逻辑。 首先,让我们理解...
1. 创建`URL`对象,指向服务器的ASHX处理程序地址。 2. 使用`openConnection()`打开连接,并将其转换为`HttpURLConnection`对象。 3. 设置请求方法,如GET或POST,通过`setRequestMethod()`。 4. 若发送POST请求,需...
例如,可以使用`[Authorize]`特性来限制只有特定角色或用户才能访问某个ASHX处理程序。 3. **自定义验证逻辑**:有时,简单的身份验证和授权机制不足以满足复杂的安全需求。在这种情况下,开发者可以编写自定义代码...
创建一个名为`MyHandler.ashx`的一般处理程序,首先需要继承` IHttpHandler`接口,并实现其`IsReusable`和`ProcessRequest`方法。以下是一个基本的示例: ```csharp using System.IO; using System.Web; public ...
2. **SQL注入**:如果ashx处理程序与数据库交互,并且未对用户输入进行充分的过滤或转义,那么攻击者可能会利用SQL注入漏洞,执行恶意SQL查询,获取敏感数据或篡改数据库内容。 3. **跨站脚本(XSS)**:ashx处理...
- 在ASHX处理程序中,需要解析`HttpContext.Current.Request.InputStream`以获取文件数据,同时可以从`Request.Form`中获取其他表单字段,即参数。 9. **错误处理与安全**: - 上传过程应包含适当的错误处理机制...
创建一个新的Ashx处理程序非常简单,只需要在项目中添加一个新项,选择“Generic Handler (.ashx)”模板。例如,创建一个名为`MyAshxHandler.ashx`的处理器: ```csharp using System; using System.Web; public ...
6. **ASHX处理程序编写**:在ASP.NET端,ASHX文件是一个简单的.NET类,继承自IHttpHandler接口,并实现ProcessRequest方法。在这个方法中,开发者可以读取请求参数,执行业务逻辑,然后生成并返回响应。 7. **数据...
最后,压缩包中的文件"HandlerHelper"可能是实现这些功能的具体代码示例,包括ASHX处理程序和可能的辅助类或工具。通过分析这个代码,我们可以深入了解如何将这些技术整合在一起,实现高效且易于维护的Web应用程序。...
2. **ASHX处理程序**: 在服务器端,ASHX处理程序接收并处理来自HTML表单的POST请求。在C#中,你需要创建一个继承自`IHttpHandler`接口的类,并实现`ProcessRequest`方法。这个方法将解析上传的文件,并保存到...
当我们想要调用ASHX处理程序时,可以利用$.ajax()或其简化的版本如$.get()、$.post()等。 例如,假设我们有一个名为`Data.ashx`的ASHX处理程序,它接收一个名为`id`的参数并返回相应数据。我们可以这样使用jQuery...
本教程将深入探讨如何在Android应用中与ASP.NET的ASHX处理程序进行交互,实现数据的发送和接收。 首先,了解ASHX处理程序。ASHX是ASP.NET中的一个自定义HTTP处理程序,它不像ASPX页面那样具有完整的页面生命周期和...
2. 服务器端:ASHX处理程序接收请求,根据传入的参数(如页码和每页大小)查询数据库,获取对应的数据,然后将数据转化为JSON格式返回给客户端。 五、代码注释 源码中应该包含了详细的注释,帮助理解每个部分的功能...
"easyui+ashx订单管理系统"是一个基于.NET技术栈,结合了EasyUI前端框架和ASHX处理程序的订单管理解决方案。这个系统展示了如何利用这两种技术来构建一个完整的、功能丰富的订单管理平台,其中包括订单的创建、查看...
在C#的Ashx处理程序中,可以通过以下代码实现: ```csharp context.Response.AddHeader("Access-Control-Allow-Origin", "*"); ``` 这里的`*`表示允许所有源访问,也可以替换为具体的域名,以限制访问范围。此外,...
3. **AJAX提交**:为了实现无刷新上传,可以使用jQuery的`$.ajax`或`$.post`方法,或者ASP.NET的UpdatePanel,将表单数据异步提交到ASHX处理程序。 4. **响应处理**:在前端接收到ASHX返回的信息后,根据返回结果...
3. **ASHX处理**:服务器端的ASHX处理程序接收到请求后,读取请求体中的图片数据,通常会将其保存到服务器的指定目录,并生成一个唯一的URL或ID来标识这张图片。 4. **回显图片**:ASHX处理程序处理完图片后,返回...
1. 创建一个URL对象,指向ASP.NET ASHX处理程序的URL。 2. 打开到该URL的连接,并设置请求方法(GET、POST等)。 3. 若是POST请求,设置请求体(如JSON格式的数据)。 4. 设置必要的请求头,例如Content-Type(通常...
在这种文件上传场景下,ASHX处理程序接收由Ajax发送的文件数据,并在服务器端进行处理,如保存到硬盘、数据库或其他存储介质。 实现步骤如下: 1. **创建HTML界面**:在`index.html`中,创建一个包含文件输入控件...
【描述】该源码示例展示了如何利用AJAX技术、JSON数据格式以及ASHX处理程序实现网页内容的无刷新分页,提供了一种高效且用户体验良好的动态加载数据方式。 在Web开发中,AJAX(Asynchronous JavaScript and XML)...