ASP.Net开发基础温故知新学习笔记

申明:本文是学习2014版ASP.Net视频教程的学习笔记,仅供本人复习之用,也没有发布到博客园首页。

一、一般处理程序基础

  (1)表单提交注意点:

    ①GET通过URL,POST通过报文体;

    ②需在HTML中为表单元素设置name;

    ③元素id是给Dom用的,name才是提交给服务器用的;

  (2)请求处理响应模型:

    ①浏览器发出访问请求→②服务器处理访问请求并返回HTML→③浏览器解析HTML并显示页面

  (3)GET与POST的区别(★★★→重点)

    ①GET通过URL传值,而POST通过HTTP报文;

    ②GET传递的数据量有限,POST则没有限制;

    ③POST方式无法通过URL在其他用户中还原;

    ④GET方式URL传特殊字符需要事先进行编码;

  (4)HTTP协议基本理解:

    ①连接(Connection):HTTP不保持连接(请求完成就关闭),如果保持连接会降低客户端并发处理请求数,不保持连接会降低处理速度(建立连接速度很慢);

    ②请求(Request):包含请求类型、请求的数据以及客户端信息等;

    ③响应(Response):包含具体HTML、响应是否成功以及错误码等;

二、模板引擎开发基础

  (1)传统模式的缺点:

    ①没有实现界面和逻辑的分离,美工无法介入;

    ②占位符替换不够灵活,无法进行复杂的替换;

  (2)NVelocity模板引擎:

    ①基本用法:编写模板→提供数据→渲染生成HTML

    ②扩展用法:include与parse的区别?

      →#include("head.htm")代表模板嵌套子模板;#parse("foot.htm")代表模板嵌套子模板,子模板可继承父模板中的参数;

    ③注意之处:

      NVelocity解析JQuery代码$.ajax中的$时把$当做NVelocity中的特殊符号,应对方法是使用jQuery.ajax代替$.ajax;

      如果要将DataTable传递给NVelocity时仅传递DataTable.Rows即可,因为Rows才是一个Collection(集合),可以使用foreach遍历;

      为了减少每次NVelocity解析模板的时间建议启用NVelocity缓存;

三、状态的传递与保持

  (1)经典的URL传递:

    ①优点:简单直接,明确发给谁,数据不会乱;

     ②缺点:无法保密,安全性不高

  (2)隐藏字段传递:

    ①会加大网站流量;

     ②会降低访问速度,想想ViewState

     ③机密数据无法保证安全性;

  (3)Cookie:(★★★→重点)

    ①基本概念:保存在浏览器端,每次向服务器提交请求时都会带上Cookie;服务器返回报文除了Html外还有更新后的Cookie;

     ②生命周期:如果没有设定Expires过期时间,那么关闭浏览器则终止Cookie;如果设定了Expires过期时间,则以过期时间为准作为失效时间;

     ③缺点限制:存储数据量有限,机密信息不能存在Cookie中;无法跨越不同的浏览器,例如:IE、Chorme、Firefox等;可以被清除,不要将不能丢失的数据存到Cookie;

  (4)Session:(★★★→重点)

     ①基本概念:服务器端的“Cookie”,类似于病历本;

     ②生命周期:Session具有自动销毁机制;

     ③使用注意:HttpHandler要使用Session需实现IRequiresSessionState接口;存放在服务器内存中,不要存放大数据;

    ④与Cookie的关系:Session在创建时会依赖于Cookie,实质是Cookie存储一个SessionID作为每次提交服务器请求访问的Key,Session通过这个Key找到具体的Value值;

  (5)Application:

    ①基本概念:应用全局对象,被全局共享;使用操作之前先加Lock,完成之后UnLock;一般放在Global.asax中的Application_Start事件中;

     ②使用注意:很多书举例使用Application统计访问人数会导致网站在大并发量下会很十分卡;建议做网站开发尽量不用Application,也很少需要有用到它的时候;

PS:很多书中都会这样使用Application,是不是很眼熟?在使用前加Lock,完成之后UnLock虽然是一个比较好的同步操作,但是也正因为如此,加Lock会造成在大并发量的访问情况下网站系统出现卡顿的现象。

 1     void Application_Start(object sender, EventArgs e)
 2     {
 3         // 在应用程序启动时运行的代码
 4         Application["count"] = 0;//初始设置计数从0开始
 5     }
 6
 7     void Session_Start(object sender, EventArgs e)
 8     {
 9         // 在新会话启动时运行的代码
10         Application.Lock();//同步,避免同时写入
11         Application["count"]=(int)Application["count"]+1;//每建立一个会话该全局变量加1
12         Application.UnLock();//同步结束
13     }

四、AJAX基础

  (1)AJAX产生原因:

    ①传统全局刷新导致用户体验不好;  ②IE5中首次引入了XMLHttpRequest;

  (2)AJAX基本概念:

    ①AJAX全称:AsynchronousJavascriptAndXML=异步的JavaScript和XML,一种进行页面局部刷新的技术;

     ②AJAX通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新,从而改善用户体验效果;

  (3)AJAX基本流程:

    ①浏览器HTML中使用JavaScript创建XMLHttpRequest → ②服务器端获取请求进行处理并返回符合AJAX风格的数据(例如Json) → ③浏览器JavaScript解析服务器返回的数据并局部显示或更改信息

  (4)AJAX核心对象:JavaScript对象XMLHttpRequest

    XmlHttpRequest使我们可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。

PS:下面是一段经典的纯手工使用js对象XMLHttpRequest的实例:

function ajax(url, onsuccess)
{
    var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(‘Microsoft.XMLHTTP‘); //创建XMLHTTP对象,考虑兼容性。XHR
    xmlhttp.open("POST", url, true); //“准备”向服务器的GetDate1.ashx发出Post请求(GET可能会有缓存问题)。这里还没有发出请求

    //AJAX是异步的,并不是等到服务器端返回才继续执行
    xmlhttp.onreadystatechange = function ()
    {
        if (xmlhttp.readyState == 4) //readyState == 4 表示服务器返回完成数据了。之前可能会经历2(请求已发送,正在处理中)、3(响应中已有部分数据可用了,但是服务器还没有完成响应的生成)
        {
            if (xmlhttp.status == 200) //如果Http状态码为200则是成功
            {
                onsuccess(xmlhttp.responseText);
            }
            else
            {
                alert("AJAX服务器返回错误!");
            }
        }
    }
    //不要以为if (xmlhttp.readyState == 4) {在send之前执行!!!!
    xmlhttp.send(); //这时才开始发送请求。并不等于服务器端返回。请求发出去了,我不等!去监听onreadystatechange吧!
}

  (5)AJAX优点缺点:

    ①优点:页面无刷新,在页面内与服务器通信,给用户的体验非常好;“按需取数据”,可以最大程度的减少冗余请求和响应对服务器造成的负担;基于XML标准化,并被浏览器广泛支持,不需安装插件等;

     ②缺点:由于AJAX只是局部刷新,所以页面的后退按钮是没有用的(破坏了后退按钮机制);对流媒体还有移动设备的支持不是太好;

五、客户端不可信

  (1)客户端验证不能代替服务端验证:

    ①客户端校验是为了更好的客户端体验,服务端校验是最后一次把关,防止恶意请求

    ②请求报文数据可以修改,例如Http报文中的UserAgent、Referer、Cookie等都是可以造假的;

    ③JQuery Validator+服务端校验是不错的开发方式;

  (2)ValidateRequest:

    ①ASP.Net默认对请求数据进行了校验->防止XSS攻击(跨站脚本攻击)

     ②对于要提交含HTML的文本内容需要关闭校验,在web.config中设置requestValidationMode="2.0"

    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <httpRuntime requestValidationMode="2.0" />
    </system.web>

    利用关闭校验的漏洞可以进行:送奖品的消息框、收集账号和密码;

  (3)CKEditor:经典的Web在线编辑器

    ①除了_samples、_source、*.php、*.asp都放到js/ckeditor文件夹下;

     ②页面中引用ckeditor.js;

     ③页面编辑器的位置使用textarea,在页面onload中或textarea之后使用CKEDITOR.replace(textarea);

总结思维导图

作者:周旭龙

出处:http://www.cnblogs.com/edisonchou/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

ASP.Net开发基础温故知新学习笔记,布布扣,bubuko.com

时间: 2024-10-03 23:54:11

ASP.Net开发基础温故知新学习笔记的相关文章

蓝鸥Unity开发基础——类型转换学习笔记

蓝鸥Unity开发基础--类型转换学习笔记 类型转换包括:自动转换+强制转换 一.自动转换 自动转换:由系统自动完成,不会导致数据精度丢失,只能从低精度类型转换高精度类型. 二.强制转换 强制转换:从高精度转向低精度类型需要强制转换,会丢失精度,需要显式地进行转换. 源代码: using System; namespace Lesson07{    class MainClass    {        public static void Main (string[] args)       

ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘

开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行走于天下.但这样真的就可以走一辈子吗?实际上,ASP.Net经常被喷的诟病就在于WebForm以及只会拖控件的ASP.Net程序员,往往大型互联网系统也没有采用WebForm的模式进行开发.但是,WebForm并不是一无是处,而是我们没有用好,还有很多东西我们知其然不知其所以然,现在我们就来对这些平

一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移

不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.supervisor.mysql环境搭建搭建好了.net core linux的相关环境,今天就来说说ef core相关的配置及迁移: 简介: Entity Framework(以下简称EF) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,EF Core是Entity

《Spring3.X企业应用开发实战》学习笔记--DAO和事务

本篇是"<Spring3.X企业应用开发实战>,陈雄华 林开雄著,电子工业出版社,2012.2出版"的学习笔记的第二篇,关于DAO和事务. 本篇从DAO操作,以及事务处理的基本知识谈起,介绍事务本身,以及Spring如何通过注解实现事务. DAO 近几年持久化技术领域异常喧嚣,各种框架如雨后春笋般地冒出,Sun也连接不断的颁布了几个持久化规范. Spring对多个持久化技术提供了持久化支持,包括Hibernate,iBatis,JDO,JPA,TopLink,另外,还通过S

ARM基础知识学习笔记

/*****************数电知识*******************/ PN结(Positive-Negative) 三极管:BJT(双极结型三极管Bipolar Junction Transistor)               FET(场效应管Field Effect Transistor)          (单极结型) 1.MOSFET (金属氧化物半导体Metal Oxide Semiconductor FET)               2.JFET(结型Junct

黑马程序员_JAVA 基础加强学习笔记

一.面向对象 (一)继承  1.继承的好处: (1) 提高了代码的复用性. (2) 让类与类之间产生了关系,提供了另一个特征多态的前提. 注意: 子类中所有的构造函数都会默认访问父类中的空参数的构造函数,因为每一个子类构造内第一行都有默认的语句super();  如果父类中没有空参数的构造函数,那么子类的构造函数内,必须通过super语句指定要访问的父类中的构造函数. 如果子类构造函数中用this来指定调用子类自己的构造函数,那么被调用的构造函数也一样会访问父类中的构造函数. 2.final特点

java 集合基础1 学习笔记

集合特点: 1.用于存储对象的容器. 2.集合的长度是可变的. 3.集合中不可以存储基本数据类型值. Collection接口常见方法: 1.添加 boolean add(obj); boolean addAll(Collection coll); 2.删除 boolean remove(obj); boolean removeAll(Collection coll); void clear();//清空集合 3.判断 boolean contains(obj); boolean contain

java基础 异常学习笔记

1.异常是导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序中断执行,造成不必要的损失,所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序正确的执行. 2.一旦产生异常之后,异常之后的语句并不会执行,而是直接结束程序,并将错误报告给用户. 3.在计算机发展史有两大杀手:断电,被除数为0(结果为无穷大,则程序内容会被全部占满). 处理异常的格式: try{// 可能出现异常的语句} catch(异常类异常对象){//编写异常的处理语句} ca

C++基础知识学习笔记

基本语法 C面向过程思想:程序=(数据结构)+(算法) 数据结构与算法分离,以算法(函数)为主. C++面向对象思想:程序=(数据结构+算法) 数据结构(属性)与算法(操作)绑成一个类,定义一个个对象对象=(数据结构+算法)  ,程序=(对象+对象+对象+--) 面向对象程序设计的程序员有两类:1.面向对象应用程序设计2.类库的设计 头文件:类的声明            ---类的外部接口       (成员函数在类声明中实现时,一般很简短,默认为内联函数)源文件:类的成员函数定义     -