ASP网页设计ASP无组件上传・从道理分析到理论(中)...
asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关.上传|无组件 第五天:失掉文件单位明天咱们要停止的局部,是对照风趣味性地――失掉文件内容。其实,看看咱们的要处置的数据,再看看前地理本单位的处置,信任人人也会意中无数。
为了明晰的辨别文件和文本单位,这一次,咱们用ourRequest.file(index)来对应文本单位的ourRequest.form(index)。固然,由于关于文件,咱们需求失掉的信息分歧于文本,所以此次失掉的,也不会是FormElement,而是一个新对象FileElement。
文件单位和文本单位在原始数据上,分歧点少得不幸:
1。第一行多了一个filename="xxx"模块;
2。多了一个用于唆使contentType的第二行。
感乐趣的方针信息分歧,所以,失掉的对象FileElement也和FormElement有一些分歧点:
1。不需求count属性(不存在checkbox情形);
2。不需求Item(index)(同上,不存在checkbox情形);
3。需求一个ContentType属性;
4。需求一个FilePath属性;
5。需求一个FileName属性;
6。需求一个Size属性;
7。由于需求的是二进制,所以,没有需要停止二进制=>字符串的转换;
8。由于需求的是二进制,所以,属性Value改成Data更适合
另外,UploadRequest也应当响应的添加Files属性、Form(index)办法、和m_dicFiles成员。如今,咱们就来扩大他:
A。UploadRequest(下面设计过,这里是扩大)
这个类和request对象是对应的
属性:
RawData 失掉原始数据,便利反省[只读]
Forms 失掉一个有count属性的计数器,
可以用outRequest.Forms.Count的体例,失掉文本表单域的的个数[只读]
Files 失掉一个有count属性的计数器,
可以用outRequest.Files.Count的体例,失掉文件表单域的的个数[只读]
Form(index) 可以用数字或文本检索文本表单域,做用相似request.form。
他前往一个FormElement型的对象
File(index) 可以用数字或文本检索文件表单域,他前往一个FileElement型的对象
B。FileElement
可以把它当作单个文件域的化身。经由过程这个类,可以失掉具体的文件信息,好比name,data,path,filename,contentType,size等等。
属性:
Name 文件域的称号。就是<input type=file name=xxx>里的xxx
Data 文件域的内容。二进制串
ContentType 文件域的contentType
FilePath 文件域包括的文件在客户机上的全途径
FileName 文件域包括的文件的文件名
Size 文件域包括的文件的尺寸
这里是完成。仍是存成doupload.asp:
<%
'=========================================================================
'' 这个,是存储文本域信息的的类。每个name的文本域,对应一个如许的类。
'=========================================================================
Class FormElement
' m_开首,暗示类成员变量。
Private m_dicItems
Private Sub Class_Initialize()
Set m_dicItems = Server.CreateObject("Scripting.Dictionary")
End Sub
' count是我们这个类的一个只读属性
Public Property Get Count()
Count = m_dicItems.Count
End Property
' Value是一个默许属性。目标是失掉值
Public Default Property Get Value()
Value = Item("")
End Property
' Name是失掉文本域称号。就是<input name=xxx>里的xxx
Public Property Get Name()
Keys = m_dicItems.Keys
Name = Keys(0)
Name = left(Name,instrrev(Name,"_")-1)
End Property
' Item属性用来失掉重名表单域(好比checkbox)的某一个值
Public Property Get Item(index)
If isNumeric(index) Then '是数字,正当!
If index > m_dicItems.Count-1 Then
err.raise 1,"IndexOutOfBound", "表单位素子集索引越界"
End If
Itms = m_dicItems.Items
Item = Itms(index)
ElseIf index = "" Then '没给值?那就前往一切的!逗号分隔
Itms = m_dicItems.Items
For i = 0 to m_dicItems.Count-1
If i = 0 Then
Item = Itms(0)
Else
Item = Item & "," & Itms(i)
End If
Next
Else '给个一个不是数字的东东?失足!
err.raise 2,"IllegalArgument", "不法的表单位素子集索引"
End If
End Property
Public Sub Add(key, item)
m_dicItems.Add key, item
End Sub
End Class
'=========================================================================
'' 这个,是存储文件域信息的的类。每个name的文件,对应一个如许的类。
'=========================================================================
Class FileElement
' m_开首,暗示类成员变量。
Private m_strName
Private m_bData
Private m_strContentType
Private m_strFilePath
Private m_strFileName
Private m_lSize
' Data是一个默许属性。目标是失掉值
Public Default Property Get Data()
Data = m_bData
End Property
' Name是失掉文件域称号,就是<input type=file name=xxx>里的xxx
Public Property Get Name()
Name = m_strName
End Property
' ContentType是失掉文件contentType
Public Property Get ContentType()
ContentType = m_strContentType
End Property
' FilePath是失掉文件在客户真个途径
Public Property Get FilePath()
FilePath = m_strFilePath
End Property
' FilePath是失掉文件在客户真个途径
Public Property Get FileName()
FileName = m_strFileName
End Property
' Size是失掉文件巨细
Public Property Get Size()
Size = m_lSize
End Property
Public Sub Add(name, data, contenttype, path)
m_strName = name
m_bDat</p>ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。Apache ASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 掌握asp的特性而且一定要知道为什么。 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。 Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") 还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助... 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
页:
[1]
2