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会造成在大并发量的访问情况下网站系统出现卡顿的现象。
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application["count"] = ;//初始设置计数从0开始
} void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Application.Lock();//同步,避免同时写入
Application["count"]=(int)Application["count"]+;//每建立一个会话该全局变量加1
Application.UnLock();//同步结束
}
四、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 == ) //readyState == 4 表示服务器返回完成数据了。之前可能会经历2(请求已发送,正在处理中)、3(响应中已有部分数据可用了,但是服务器还没有完成响应的生成)
{
if (xmlhttp.status == ) //如果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);
总结思维导图
ASP.Net开发基础温故知新学习笔记的更多相关文章
- 一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移
不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.superviso ...
- 《疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践》学习笔记
<疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践>学习笔记 二〇一九年二月十三日星期三2时28分54秒 前提:本书适合有初步HTML.CSS.JavaScri ...
- Objective-c基础知识学习笔记
Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...
- linux基础命令学习笔记(二)
linux基础命令学习笔记(二) 1.kill :终止进程 kill pid (唯一标示一个进程) kill -9 强制终止 kill -15 命令未结束不能终止 # ps aux 查看所有进程 ...
- ASP.NET Core快速入门--学习笔记系列文章索引目录
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 抓住国庆假期的尾巴完成了此系列课程的学习笔记输出! ASP.NET Core快 ...
- ASP.NET Core MVC 网站学习笔记
ASP.NET Core MVC 网站学习笔记 魏刘宏 2020 年 2 月 17 日 最近因为” 新冠” 疫情在家办公,学习了 ASP.NET Core MVC 网站的一些知识,记录如下. 一.新建 ...
- ASP.NET MVC5 及 EF6 学习笔记 - (目录整理)
个人从传统的CS应用开发(WPF)开始转向BS架构应用开发: 先是采用了最容易上手也是最容易搞不清楚状况的WebForm方式入手:到后面就直接抛弃了服务器控件的开发方式,转而采用 普通页面+Ajax+ ...
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建
作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...
随机推荐
- 「转载」关于Service常驻内存不被清理
http://www.cnblogs.com/fangyucun/p/3533731.html 作个记录
- Quartz.Net简单使用
Quartz.Net为开源的作业调度框架,使用方便,实现IJob接口,及相关配置,即可实现调度. 项目包安装: install-package Quartz install-package log4n ...
- windows下指定格式文件转移
#放在目录下执行 1.bat 作用:将该目录下所有mp4格式的文件转移至该目录下的target目录下 须保证target目录不存在@echo off md target\ for /f "d ...
- PHP 汉字拼音互转
<?PHP function Pinyin($_String, $_Code='gb2312'){ $_DataKey = "a|ai|an|ang|ao|ba|bai|ban|ban ...
- Angular表单验证
novalidate 去掉html5自带的验证 ng-minlength 规定输入文本的最小长度 ng-maxlength 规定输入文本的最大长度 ng-submit 接收一个方法名 ...
- PB12.5.2安装
一.从12.5升级到12.5.2_build5550安装步骤: 1.安装VS2010及SP1 2.安装12.50(可以只装PB)DV68538-65-1250-01.zip 3.安装EBF20963 ...
- 北京电子科技学院(BESTI)实验报告5
北京电子科技学院(BESTI)实验报告5 课程: 信息安全系统设计基础 班级:1452.1453 姓名:(按贡献大小排名) 郑凯杰.周恩德 学号:(按贡献大小排名) 20145314.20145217 ...
- Web API返回JSON数据
对Web API新手来说,不要忽略了ApiController 在web API中,方法的返回值如果是实体的话实际上是自动返回JSON数据的例如: 他的返回值就是这样的: { "Conten ...
- [转]oracle分析函数Rank, Dense_rank, row_number
oracle分析函数Rank, Dense_rank, row_number 分析函数2(Rank, Dense_rank, row_number) 目录 ==================== ...
- T-SQL Recipes之Separating elements
Separating elements Separating elements is a classic T-SQL challenge. It involves a table called Arr ...