`
阅读更多
ASP经验谈
一、ASP的脚本语言

VBs cript是ASP的脚本语言,因为ASP脚本在服务器端执行,所以只要服务器端支持vbs cript就可以了。
  Vbs cript是visual basic的一个子集,虽然限制了可以使用的内置函数的数量,但是也使得他非常小巧,从而提高了可移植性.它们之间的重要差异在于:
  变量类型和作用范围;
  不能使用某些内置函数;
  增加了一些函数和对象;
  处理错误的方式;
  进行排错调试的方式。

㈠ vbs cript代码的基本格式:
    e.g:
    <s cript language="vbs cript">
    <!- -
    sub window_onload()
    document.bgcolor=red
    msgbox "you are welcome."
    End sub
    ->
    </s cript>
  1 编码约定:
    子类型      前缀     示例
    Boolean     Bln     BlnFound
    Byte       Byt     BytRasterData
    Date(Time)    Dtm
    Double     Dbl
    Error       Err
    Integer    Int
    Long       Lng
    Object      Obj
    Single     Sng
    String     Str

  2 变量:
   声明: For Example: Dim DegreeFahrenheit
   规则:
   第一个字符必须是字母;
   不能包含嵌入的句点;
   长度不能超过255个字符;
   在被声明的作用域内必须唯一.

   静态数组与动态数组:
   For Example: Dim My_Array(10)
   For Example: Dim My_Array()
   ReDim My_Array(10)


   3 过程和函数:
   过程: For Example:
   Sub ConvertTemp()
   Temp=InputBox("请输入华氏温度:",1)
   MsgBox "温度为" & Celsius(temp) & "摄氏度"
   End Sub
   函数: For Example:
   Function Celsius(fDegrees)
   Celsius=(fDegrees-32)*5/9
   End Function


4 数据类型:
   Variant是vbs cript的唯一数据类型,有13种子类型:
   Empty,Null,Boolean,Byte,Integer,Currency,Long,Single,Double,Date(Time),String,Object,Error


5 常数:
   For Example: Const MyString="Hello World"


㈡vbs cript的基本语法:
   1 运算:
   求幂 ^ 负号 - 乘 * 除 / 整除 \ 求余 Mod 加 + 减 - 字符串连接 &
   等于 = 不等于 <> 小于 < 大于 > 不大于 <= 不小于 >= 对象引用比较 Is
   逻辑非 Not 与 And 或 Or 异或 Xor 等价 Eqv 隐含 Imp


   2 循环语句:
   Do … Loop 当条件为真时结束循环
   While … Wend 当条件为真时进行循环
   For … Next 指定循环次数,使用计数器重复运行语句
   For Each … Next 对集合中的每一项或者数组中的每个元素重复执行


   3 条件语句:
   If … Then … Else
   Select Case


   4 对象:
   标签对象:<OBJECT> </OBJECT>
   Dictionary对象:
   For Example:
   Dim diTom
   Set diTom=CreateObject("s cripting.Dictionary")
   diTom.add "name","Tom Martiner"
   diTom.add "Address","2223 Road"

   nn=diTom.Item("name")

   Err对象:
   属性:Des cription Number Source
   Helpfile HelpContext
   方法:Raise Clear


   5 陷阱处理:
   On Error Resume Next


㈢ vbs cript的函数:
   1 数学函数:
   反正切 Atn(num) 余弦 Cos(num) 正弦 Sin(num) 正切 Tan(num)
   绝对值 Abs(num) 自然对数 Log(num) 随机数 Rnd() 符号 Sgn(num)
   平方根 Sqr(num) 以e为底的指数 Exp(num)


   2 格式转化函数
   Cbool(exp) 转化为逻辑型
   Cbyte(exp) 转化为单字节型
   Cdate(exp) 转化为日期型
   CDbl(exp) 转化为双字节型
   Chr(exp) 转化为一个字符
   CInt(exp) 转化为整数型
   CLng(exp) 转化为长整型
   CSng(exp) 转化为单精度型
   CStr(exp) 转化为字符串型
   Hex(exp) 转化为16进制字符
   Int(exp) 转化为取整结果 For Example :1.6à1 -1.6à-2
   Fix(exp) 转化为取整结果 For Example:1.6à1 -1.6à-1
   Oct(exp) 转化为8进制
   Val(exp) 转化为一个数


   3 字符串操作函数:
   Asc(s) InStr(s1,s2) Lcase(s) Left(s,num) Ltrim(s)
   Mid(s,start,len) Right(s,num) Str(num) Rtrim(s) StrComp(s1,s2)
   String(len,char) Trim(s) Ucase(s)


   4 时间日期函数:
   Date() Time() Now()
   DateSerial(year,month,day) TimeSerial(hour,minute,second)
   DateValue(string) TimeValue(string)
   Year(Date) Hour(Time)
   Month(Date) Minute(Time)
   Day(Date) Second(Time)
   WeekDay(Date)


   5 变体子类型:
   IsArray(var)IsDate(var) IsEmpty(var) IsNull(var) IsNumber(var) IsObject(var) VarType(var)


二、ASP基础知识


  ASP文件是一个文本文件,其后缀名为asp.一个ASP文件主要以下三部分内容构成:
   1 HTML标记
   2 VBScritp或Js cript语言的程序码
   3 ASP语法
     ㈠ 基本语法:
      1 用<% %>来区别服务器端ASP脚本和其它字符.
      2 用<s cript RunAt="Server"> </s cript> 来区别服务器端脚本和其它字符
      3 声明脚本语言:
      <%@ LANGUAGE=vbs cript%>
    或者:
      <s cript language="Js cript" runat="server"> </s cript>
     两种方法的区别:
      <s cript>标记的语言会立即执行(WEB页被载入时)
      <% %>标记的语言在它所在的位置执行
  4 HTML文件中应用 ASP变量
      <%=变量或常量%>
   5 split函数的使用:
      For Example:
      <%
      public namearray
      qname="Wang;Zhang;Ning"
      response.write qname & "<p><br>"
      namearray=split(qname,";") '把qname字符串以分号分开,然后赋给一个数组
      max=ubound(namearray)
      for counter=0 to max-1
      response.write namearray & "<p><br>"
      next
      response.write "<hr>"
      %>
   6 动态生成服务器端脚本:
      For Example:
      <%
      S="Sub Hi" & vbCrLf
      S=S & "response.write ""Hi"" & vbCrLf
      S=S & "End Sub"
      Execute S
      Call Hi()
      %>


  ㈡ 使用SSI (Server-Side Include)
   1 功能:
     #config 指定返回到浏览器的错误消息\日期和文件大小所使用的格式
     #echo 在html页中插入环境变量的值
     #exec 运行一个应用程序或一条shell命令并将输出插入到html页中
     #flastmod 将文件的修改日期插入到html页中
     #fsize 将文件大小插入到html页中
     #include 在html或asp页中包含文件
    2 #include指令(在服务器格式化页面时就执行)
      <!--#include virture/file=path|file-->
      
      For Example:
      <!--#include file="Sunday.html"-->
   3 #exec 指令
     可以运行的程序可以是 : CGI程序,ASP应用程序,ISAPI应用程序.
     路径是完整的虚拟路径或者URL
     向应用程序传递参数的方法是在该应用程序名称的后面跟一个问号和由加号连接起来的一列参数,该指令只能在html页中使用,不能在ASP页中使用.
     参数CGI用于运行一个应用程序,如CGI脚本/ASP或ISAPI应用程序
     参数CMD用于运行shell命令
   4 #fsize 指令
     只能在html页中使用,单位是KB
   5 #config指令
     只能在html页中使用用于指定返回给客户端浏览器的错误信息/日期/文件大小等的格式.
     ERRMSG参数: <!--#config errmsg="You are wrong"-->
     TIMEFMT参数:
     %a 一周中某天的缩写,如:Mon
     %A 一周中某天的全称,如:Monday
     %b 月份的缩写,如:Feb
     %B 月份的全称,如:Februrary
     %c 当地的日期和时间表示,如:05/06/91 12:51:32
     %d 一个月中的某一天(01~31)
     %H 24小时格式(00~23)
     %I 12小时格式(01~12)
     %j 一年中的某一天(001~366)
     %m 月份(01~12)
     %M 分钟(00~59)
     %p 当地的上午或下午的指示符,如:PM
     %S 秒(00~59)
     %U 一年中的某一周,星期日作为一周的开始(00~51)
     %w 一周中的某一天,星期日是第一天(0~6)
     %W 一年中的某一周,星期一作为一周的开始(00~51)
     %x 当地的日期表示,如:05/06/91
     %X 当地的时间表示,如:1:51:32
     %y 不带世纪的年,如:96
     %Y 带世纪的年,如:1996
     %z,%Z 时区全称或缩写,如果不知道时区,则没有字符
     %% 百分号
     SIZEFMT参数:
     <!-- #config sizefmt="bytes" --> '以千字节为单位
    6 .inc文件
     include file
     三ASP的对象(Request,Response,Server,Application,Session)
     五种基本对象:
     Request Object
     Response Object
     Server Object
     Application Object
     Session Object
       ㈠ Request:
         属性:无
         集合:QueryString,Form,Cookies,ServerVariable
         作用:读取提交表单中的数据或者cookies中的数据
          1 QueryString
            当用户在Form中使用GET方法传送数据时,用户提交的数据被附在查询字符串(QueryString)中,一起被提交到服务器端指定的文件,QueryString集合的作用是从查询字符串中读取用户提交的数据
            也可以不是用Form作为浏览器端的输入,可以直接使用语句:
          <a href="time.asp?time=<%=Server.URLEcode(Now())%>"> </a>
          For Example(Form used as the input tools):
          Browser:
          <form action="hometown.asp" method="GET" name="hometown">
          please input all the cities you have lived:
          <input type="text" name="city">
          <input type="text" name="city">
          <input type="text" name="city">
          <input type="submit" >
          </form>
          Server:(hometown.asp)
          <%
          for each item in request.querystring("hometown")
          response.write item
          next
          %>


          2 Form
            当浏览器端使用POST方法将html表单提交给服务器时,表单元素可以作为form集合的成员来检索,这种办法传送的数据比用QueryString要多,所以常用这种办法.
          注意:Request.Form.Count表示表单中被提交的数目
          Request.Form("hobby").Count表示同名("hobby")的表单域被提交的数目
          

          3 Cookies


          4 ServerVariable
          用于提供有关随着http请求一起传递的http头信息,浏览器的请求和服务器的响应都含有headers.使用格式Request.ServerVariable("key")
          keys useful as follows:
          AUTH_TYPE:当用户访问一个被保护的脚本时,判断是否为一个有效的用户
          CONTENT_LENGTH:客户端所提交的正文的长度
          CONTENT_TYPE:正文数据的类型
          GATEWAY_INTERFACE:服务器端使用的CGI修订版本,格式:CGI/修订版本
          LOGON_USER:用户是否是一Windows NT的帐户登录的
          PATH_INFO:客户端的路径信息,用户可以通过物理路径和PATH_INFO来访问脚本
          QUERY_STRING:在一个HTTP请求中的查询信息.就是?以后的部分
          REMOTE_ADDR:包括了发送请求的远程主机的IP 地址
          REMOTE_HOST:发送请求的远程主机名
          REQUEST_METHOD:数据请求的方法,可以是:GET,POST,HEAD等
          s cript_MAP:给出URL的基本部分
          s cript_NAME:当前用户访问的页面(文件)的相对路径
          SERVER_NAME:该服务器的名称DNS的别名,其IP及自己指定URL路径
          SERVER_PORT:数据请求所使用的端口号
          SERVER_PORT_SECURE:端口的安全性.如果数据请求所使用的端口被保护则,返回"1"(是字符不是数字)
          SERVER_PROTOCOL:要求信息的协议及修订版本
          SERVER_SOFTWARE:服务器端运行的软件名称及版本号
          URL:得到系统URL路径
          HTTP_REFERER:到达当前页的来源(是从哪个网页连过来的)
          HTTP_USER_AGENT:用户浏览器的类型
          PATH_TRANSLATED:当前ASP的真实路径
          HTTP_UA_COLOR:浏览器可以显示多少中颜色
          HTTP_UA_CPU:浏览器所在的机器的CPU型号
          HTTP_UA_OS:浏览器所在的机器的操作系统
          HTTP_UA_PIXELS浏览器所在的机器的电脑分辨率

       ㈡ Response:
          属性: Buffer , Cookies , ContentType , Expires , ExpiresAbsolute ,
          Status , IsClientConnected , CacheControl
          方法: Write , Redirect , End , Flush , Cookies , BinaryWrite , AddHeader
          AppendToLog
          作用:向浏览器输出文本\数据和cookies以及控制在传送网页过程中的每一个阶段


          1 Buffer属性:
          指定或得到页面输出时是否需要缓冲区,设置语句应该放在整个文件的最前面
          
           2 ContenType属性:
          "text/html" "image/gif" "application/msword" "text/rtf"

           3 Expires属性:
          用于设置浏览器缓冲区的时间长度(分)
          设置 expires=0 时将要求每次请求是刷新页面,因为response一收到就会过期

           4 ExpiresAbsolute属性:
        如:<%response.expiresabsolute=#oct 1,1999 00:00:00#%>则1999年10月1日 为截止日期

           5 Status属性:
          传递服务器HTTP Response 的状态.
          1xx:
          2xx:     
          3xx:如 301表示主页已经转移到了其它地址
          4xx:如 404 表示所请求的主页是不存在的
          5xx:如 503表示当前服务器遇到了无法应付的错误
          For Example:
          如果有人要访问一个过期的主页,就response.status="401 没有授权"

          6 IsClientConnected属性:
          For Example:
          <%
          dim i
          i=1
          while i=1
          response.write("hello world")
          if not response.isclientconnected then response.end
          wend
          %>


          7 CacheControl属性:
          response.cachecontrol="public"将允许代理服务器把ASP放如缓存.


          8 Write 方法:
          要输出"%>"时,用"%\>"转义字符代替.

          <%
          fontcolor="green"
          response.write "<font color=<%=fontcolor%\>>ou are well</font>"
          %>
          应该为:
          <%
          fontcolor="green"
          response.write "<font color="& fontcolor &">you are well</font>
          %>


          9 Clear 方法:
          如果Response的Buffer 属性被设置成True 则此方法会清除所有缓存区页面.

           10 Flush 方法:
          当调用Flush方法时,缓存的服务器Response 输出信息会立即发送到客户.和Clear方法一样,如果没有事先设定response.buffer=true则会出现一个运行模式的错误.


          11 End 方法:
          用于告知Active Server当遇到该方法时立即停止处理ASP文件,如果buffer=true则将缓存的内容发送到客户,然后清除缓冲区,所以如果要取消向用户的输出,可以先清楚缓冲再用此方法.


          12 BinaryWrite 方法:
          用来向HTTP输出写入二进制信息,通常要与某种需要接受特殊非字符信息的定制客户应用程序一起使用.
          
          13 AddHeader 方法:
          用于增加带有一个要发送到客户应用程序的特殊HTTP头.

          14 AppendLog 方法:
          在Web服务器日志的末尾为这种特殊的要求增加一个表项.
          字符最大长度80,不能用逗号分割.

          15 Cookies 集合:
          属性:
          ExpiresAbsolute:设置为一个日期,过了就无法再使用该Cookie
          Domain:定义该Cookie要传送的唯一的域.如:
          Response.cookies("domain")="www.microsoft.com"
          Path:定义了Cookie只发给指定路径的请求,如果没有被设置,则使用应用软件的缺省路径
          Secure:指定该Cookie能否被客户读取
          HasKeys":如果所请求的Cookie是一个具有多个键值的Cookie字典,则返回True ,它是一个只读属性
          写Cookie:
          response.cookies("cookie名称")[("键名值").属性]=内容(数据)
          读 Cookie:
          request.cookies("cookie名称")[("键名值").属性]=内容(数据)
          Cookie字典:
     ㈢ Server:
         属性:s criptTimeOut
         方法:CreateObject , MapPath , URLEcode , HTMLEcode
         作用:创建COM对象和s cripting组件等
          1 s criptTimeOut 属性:
          指定一个脚本的延时期限(秒)
          2 HTMLEcode 方法:
          3 URLEcode方法:按照URL的格式输出
          4 MapPath 方法:返回指向特定文件的相对路径或物理路径
          5 CreateObject 方法:
     ㈣ Application:
        属性:无
        方法: Lock , Unlock
        作用:用于存放同一应用程序多个用户之间的共享信息
          1 Application没有内置属性,可以自行创建属性
          Application("属性名")=值
          或者:
          Application.Contents("属性名")=值
          2 先Application.Lock
          再 Application.Unlock
          解决并发问题
          3 Application_OnStart()
          Application_OnEnd()
          定义在global.asa文件中
     ㈤ Session:
        属性:SessionID , TimeOut
        方法:Abandon
        作用:为单个用户保持数据
          1 是指访问者从到达某个特定的主页知道离开为止的那段时间,每个访问者都会获得一个Session,弥补了HTTP的在连续响应上的差距
          2 SessionID属性:当前会话的唯一标志符,自动分配.
          3 TimeOut属性:用户Session的时间限制(分),默认20
          4 自定义属性:
          Session("属性名")=值
          5 Session_OnStart()
          Session_OnEnd()
          定义在global.asa 文件中
          6 Abandon 方法:
          消除用户的Session对象并释放其所占有的资源

     ㈥global.asa:
         文件的结构:
          <s cript language=vbs cript runat=server>
          Sub Application_OnStart()
          End Sub
          Sub Application_OnEnd()
          End Sub
          Sub Session_OnStart()
          End Sub
          Sub Session_OnEnd()
          End Sub
          </s cript>


四、ASP数据库连接
     使用Active Data Object(ADO)进行数据库的连接.
     1 开始使用ADO:
     在ODBC数据源管理器中,选择系统DSN,"添加",~~~~
     2 ADOVBS.INC文件:
     <!-- #include virtual="/aspsamp/samples/adovbs.inc" -->
     3 Connection对象:
     连接:
     set con=Server.CreateObject("ADODB.Connection")
     con.Open "DSN=<dsnname>;UID=<uid>;PWD=<pwd>"
     |[con.ConnectionString=" DSN=<dsnname>;UID=<uid>;PWD=<pwd>"
     con.Open]
     con.Close '关闭
     事务操作:
     方法:BeginTrans,CommitTrans,RollbackTrans,
     Execute
     
     Set myRecordset=con.Execute(CommandText,RecordAffected,options)
     '后两项可选
     4 Recordset对象:
     <%
     set myRecordset=Server.CreateObject(ADODB.Record)
     sql="select * from student"
     myRecordset.Open sql," " DSN=<dsnname>;UID=<uid>;PWD=<pwd>"
     %>
     <table border=1>
     <tr>
     <%
     for co=1 to myRecordset.Fields.Count-1
     %>
     <td><%=myRecordset(co).name%></td>
     <%
     next
     %>
     </tr>
     <%
     do while not myRecordset.BOF
     %>
     <tr>
     <%
     for coco=0 to myRecordset.Count-1
     %>
     <td><%=myRecordset(coco)%></td>
     <%
     next
     %>
     </tr>
     <%
     myRecordset.MoveNext
     Loop
     %>
     </table>

     记录游标移动的属性:
     BOF,EOF 判断是否是首记录或末记录
     RecordCount 返回Recordset中的记录数
     Pagesize 当记录集返回到Recordset中时,会被划分为任意大小的页,可以分页显示记录集合
     AbsolutePage 在分页显示数据时,把你想要的那一页赋值给它
     PageCount 返回页数
     数据库的维护:
     EditMode: 0该记录当前已经被编辑;1已被修改但是未提交到数据源
     2当前记录为存入数据库的新记录
     Status: 0 记录更新成功; 1 新记录; 2记录被修改;4记录被删除
     8记录未被修改; 256 操作被取消,记录未保存
     1024 存在记录锁定,新记录未保存; ~~~~~~~~
    方法:
     Open [source],[ActiveConnection],[CursorType],[LockType],[Option]
     Close
     Clone 创建Recordset的一个完全拷贝
     MoveFirst
     MoveLast
     MoveNext
     MovePrevious
     Move <要移动的记录数> 相对当前记录而言
     GetRows(rows,startr,fields) 把数据从数据源取出,存入一个数组
    NextRecordSet 清除当前的Recordset并且把复合声明中的下一条命令返回给Recordset对象,如果没有下一条命令,则返回nothing
     ReQuery 重新运行第一次创建的Recordset的命令或者声明
     Resync 和上一个不同的是:它不再运行Recordset本身,而从数据源取出Recordset中已经存在的记录可以看到其它用户修改过的记录.参数:
     1 只从数据源新当前的记录
     2 表示只有包含在Recordset当前filter中的记录才被刷新
     3 默认值,查看所有记录
     AddNew 增加新记录
     Delete 删除当前记录
     Update <fieldname>,<newvalue>
     CancelUpdate 取消在调用Update以前所做的一切修改

分享到:
评论

相关推荐

    asp学习入门经验谈.chm

    asp学习入门经验谈.chm

    ASP.NET AJAX 入门系列(个人经验谈)

    虽然言语不多,但是俺也是摸着过来的,希望对新手有用^_^

    asp学习入门经验谈【荐】 chm

    ASP 教程,asp入门经验谈 asp学习入门经验谈,当初就是用这篇简短的教程学会了ASP,别不相信哦,比那些长篇大论的教程来的更快些,本教程先简要介绍了VBScript语法,然后切入正题介绍ASP与数据库的基本操作,这比较...

    DevExpress ASP.NET 使用经验谈(9)-Dev控件客户端事件 ClientSideEvents-附件资源

    DevExpress ASP.NET 使用经验谈(9)-Dev控件客户端事件 ClientSideEvents-附件资源

    asp入门的学习资料

    第一章 asp基础入门篇.doc,第二章 asp提高篇.doc,第三章 asp数据库编程.doc,第四章 asp网络编程.doc,第五章 asp优化.doc,第六章 asp编程经验谈.doc,第七章 asp编程实例.doc

    asp.net知识库

    也谈 ASP.NET 1.1 中 QueryString 的安全获取写法 ASP.NET运行模式:PageHandlerFactory 利用搜索引擎引用来高亮页面关键字 网站首页的自动语言切换 应用系统的多语言支持 (一) 应用系统的多语言支持 (二) 自动...

    三种Web开发主流技术ASP-PHP-JSP的评价

    主要是基于我到现在已经使用的以下产品而谈:ASP MS IIS 4/Visuale Interdev 6 PHP Apache 1.2.x/HomeSite 4.5/PHP 4 Java iPlanet Web Server 4.1/JBuilder 3.5/JDK 1.2.2 以上技术本人却实使用过,而且已经使用...

    ASP.NET编程之道.part1.rar

    第2章 编程经验谈6则 经验01 培养编程的兴趣 经验02 编程学习经验谈 经验03 代码规范经验谈 经验04 数据库设计经验谈 经验05 项目实战经验谈 第2篇 陷阱或谬误篇 第3章 不可忽视的30个技术陷阱 陷阱01 版本不一致...

    ASP.NET学习路线图浅谈

    如果你已经有较多的面向对象开发经验,跳过以下这两步: 第一步  掌握一门.NET面向对象语言,C#或VB.NET 我强烈反对在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET。 ASP.NET是一个全面向对象的技术,不懂OO...

    ASP文件中的安全问题

    浅谈ASP的安全问题 先说句牢骚话,我经常看到有人说ASP不安全,比如容易被注入,这种说法我一直感到无法理解。如果你水平不高,那么你用php用ASP.net用JSP都有被注入的可能,这关ASP什么事?ASP只是一种技术,用它...

    浅谈“三层结构”原理与用意

    可是对于asp.net初学者,特别是没有任何开发经验的人,文章阅读起来就感到非常困难,不知文章所云。甚至有些读者对“三层结构”的认识更模糊了……  关于“多层结构”开发模式,存在这样一种争议:一部分学者认为...

    2019 dotNET中国峰会PPT汇总.zip

    当我们在谈.NET Core跨平台时我们在谈什么 发布.NET Core3.0 至 Docker 高性能开发技术 简洁的使用 netcore docker 和 kubernetes 深入浅出Application Insights 使用.NET Core 3.0构建现代化的电子价签管理系统 我...

    ASP.NETMVC3实战系列(一):简单示例

    因为我们项目每次加人的时候,对MVC都不是特别熟悉,有一些人认为这个非常简单,导致写出来的程序完全不是MVC的,所以我就想写个系列总结一下实战中的经验和一些学习的笔记。我们先不谈论MVC的好处,等我们写过一些...

    创建一个ASP通用分页类

    从开始学习到使用ASP到现在也写了不少程序了,最令人头痛的是写数据分页,每次都是由于几...所以趁昨天有空自己写了一个分页的类,自我感觉良好(不要用鸡蛋砸我),在这里和大家分享一下自己的经验(谈不上经验,感想

    ASP.NET中URL Rewrite的具体实现方法

    之前觉得这个话题已经被谈滥了。URL Rewrite早已经被广大开发人员所接受,网上关于URL Rewrite的组件和文章也层出不穷,但是总是让我感觉意犹未尽,于是最终还是忍不住提笔写了这系列文章。这些文章不会谈论URL ...

    非常多的英语学习网站,非常强大,你们该下了

    所有的英语学习网站,强大极了…… ...风土人情 http://www.zhuangzi.com/en/exoticism/index.asp ...学习英语经验谈 http://armysoft.myrice.com/class/main-1.html BBC learning English ………… ………… …………

    简单易懂的三层架构(MVC)

    可是对于asp.net初学者,特别是没有任何开发经验的人,文章阅读起来就感到非常困难,不知文章所云。甚至有些读者对“三层结构”的认识更模糊了……  关于“多层结构”开发模式,存在这样一种争议:一部分学者认为...

Global site tag (gtag.js) - Google Analytics