目录
http协议
get请求
- get请求无请求体;
post
- post比get提交数据安全,post发送的数据要比get大;
重定向
aspx和一般处理程序
- 一般处理程序应用于前端无复杂页面布局的情况;有复杂布局一般使用aspx;
<form id="form1" runat="server">
关于runat server
可以自定义form表单的method和action;<form method="post" action="/test.aspx" >
自定义form表单无法使用现成的控件;
request
request.UrlReferrer;
获取请求的来源,可用于防盗链;request.UserHostAddress;
获得访问者的IP地址;request.MapPath(VirtulPath);
将虚拟路径转换成物理路径;
response
response.Write()
; 并不是每一次write都会立即输出到浏览器上,而是会缓存数据,到一定的时机才会将数据一并flush给浏览器;response.Clear();
将未发送到浏览器中的数据清空;response.End();
终止响应,后边的代码都不会执行;
server
server.transfer();
服务器内部跳转,不会改变url;
服务器状态保持机制Application
- 与cache类似,是所有用户共享的,但是使用时需要手动加锁解锁;
// 使用时必须加锁解锁
Application.Lock();
int count = Convert.ToInt32(Application["userCount"]);
++count;
Application["userCount"] = count;
Application.UnLock();
服务器状态保持机制session
应用场景:用户登录信息
- 在ashx页面中使用session时,应该让其实现接口
IRequiresSessionState
,不然运行时会报错;aspx中默认实现了IRequiresSessionState
接口; - session中可存放各种类型的数据;
- 如果服务器session中有值,当客户端发送请求时,服务器会将sessionId以cookie的形式返回给浏览器,存放在浏览器的内存中;如果将浏览器重启,那么浏览器中的sessionId就会丢失,但是服务器端sessionId对应的值不会一起丢失,只有session到期后才会丢失;所以如果将验证码放到session中,浏览器重启后之前的验证码就会失效,需要重新发送;
- 每个浏览器都有自己的session对象,session的过期时间为20min,是滑动过期时间,20min内不对服务器发送请求就会过期;
客户端状态保持机制cookie
(Microsoft文档)
应用场景:记住密码,匿名用户购物车
- 最多创建20个cookie,但是1个cookie也可以存放多个名称/值(相当于在集合中存放键值对),不过其只能指定一个到期时间;
- 如果浏览器不接收cookie,我们需要给用户一个提示,引导其开启cookie;
- 所有 cookie 值都存储为字符串;
- 不同浏览器cookie的存储位置不同;
AJAX
- 传统的请求-响应模式:当客户端发送请求后,在未接收到服务器的响应之前,不能进行其他操作;客户端接收到的响应是一个完整的html文件,客户端浏览器需要重新渲染网页,所以会有刷新的效果,之前输入的数据也会丢失。
- AJAX:本质上是一个浏览器端的技术,运用js去服务器请求数据,最后再由js来呈现效果,由此省去了页面重载的麻烦,实现了局部刷新。
<script>
$(function(){
$.get("test.ashx",{"name":"aa","age":"123"},function(data){
alert(data);
})
$.post("test.ashx",{"name":"aa","age":"123"},function(data){
alert(data);
})
// 将后台传输过来的数据转换成json格式 (方法一)
$.post("test.ashx",{"name":"aa","age":"123"},function(data){
alert(data.键);
},"json");
// 将后台传输过来的数据转换成json格式 (方法二)
$.post("test.ashx",{"name":"aa","age":"123"},function(data){
serverData = $.parseJSON(data);
alert(serverData.键);
})
// 将后台传输过来的数据转换成json格式 (方法三)get请求
$.getJSON("test.ashx",{"name":"aa","age":"123"},function(data){
alert(data.键);
})
})
</script>
Ajax加载数据,删除数据,绑定事件
-
一定要在数据加载完成后再给其绑定事件;
-
为了区分不同的数据,可以给a标签添加一个自定义的属性来存放当前行的id;
-
删除一行数据后要重新加载;
-
$("tr:gt(0)")
gt是“>",表示查找第二行及以后的数据;
5、展示添加数据页面–jqueryUI
-
serializeArray() ; 序列化表格元素(当有多个参数时可以使用这个)
后台获取:context.request[name];
//name是前端元素的name属性
var fields = $("select, :radio").serializeArray();
// 前端遍历
$.each( fields, function(i, field){
$("#results").append(field.value + " ");
});
// 将数据传送给后台
$.post("test.ashx",fields,function(){});
- 分页时后台既要返回数据,也要返回分页条,可以使用匿名类,将两者序列化后返回;
json
将后台数据转化成json格式进行传递
List<int> list = new List<int>();
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
string str = js.Serialize(list);
context.Response.Write(str);
转换日期格式
function ChangeDateFormat(cellval) {
var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10));
// getMonth()得到的月份是从0开始的,所以要+1;
var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
var currentHours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
var currentMinutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
var currentSecond = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
return date.getFullYear() + "-" + month + "-" + currentDate + " " + currentHours + ":" + currentMinutes + ":" + currentSecond;
}
服务端控件
- 不显示viewState中的内容:在整个页面的第一行配置中添加EnableViewState=“false”,将取消所有控件的viewstate;也可以在单个控件中添加EnableViewState=“false”;
缓存
- 作用:将数据从数据库/文件中取出放在服务器内存中,用户访问时只需从内存中读取即可,降低了数据库访问的压力,提高了用户访问的速度。
- 应用场景:经常被访问,但是不经常改动的数据。
- 使用方法和session相同:
赋值:Cache["userInfo"] = persons; 获取:Cache["userInfo"]
- session和cache的区别:每个用户都有自己的session对象,而cache中的数据是共享的。
- session和cache都是存放在服务器内存中的;
- cache设置过期时间:使用insert给cache赋值
// 设置5秒过期时间
Cache.Insert("userInfo", persons, null, DateTime.Now.AddSeconds(5), TimeSpan.Zero);
global文件(全局应用程序类)
- Application_Start:网站启动时执行,只会执行一次;
protected void Application_Start(object sender, EventArgs e)
{
}
- Application_Error:此方法可以捕获项目中每个文件中的异常,不需要挨个写try-catch了;
/// <summary>
/// 全局异常处理点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Application_Error(Object sender, EventArgs e)
{
// 捕获异常信息
Exception exception = HttpContext.Current.Server.GetLastError();
string msg = exception.Message;
//写入日志
}
- Session_Start :开始会话
// 用户通过浏览器第一次访问网站中的某个页面时执行此方法,之后访问本网站的其他页面不再执行此方法。
// 重启浏览器后访问又会触发这个方法
protected void Session_Start(object sender, EventArgs e)
{
// 一般可应用于访客数量的统计
// 使用时必须加锁解锁
Application.Lock();
int count = Convert.ToInt32(Application["userCount"]);
++count;
Application["userCount"] = count;
Application.UnLock();
}
- Session_End:用户关闭浏览器后不会立刻执行此方法,必须等到session到期后才会执行;
// 会话结束
protected void Session_End(object sender, EventArgs e)
{
}