asp.net

在这里插入图片描述

http协议

get请求

  1. get请求无请求体;
  2. 在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

post

  1. post比get提交数据安全,post发送的数据要比get大;

重定向

在这里插入图片描述

aspx和一般处理程序

  1. 一般处理程序应用于前端无复杂页面布局的情况;有复杂布局一般使用aspx;
  2. <form id="form1" runat="server"> 关于runat server
    可以自定义form表单的method和action;<form method="post" action="/test.aspx" >
    自定义form表单无法使用现成的控件;

request

  1. request.UrlReferrer; 获取请求的来源,可用于防盗链;
  2. request.UserHostAddress; 获得访问者的IP地址;
  3. request.MapPath(VirtulPath); 将虚拟路径转换成物理路径;

response

  1. response.Write(); 并不是每一次write都会立即输出到浏览器上,而是会缓存数据,到一定的时机才会将数据一并flush给浏览器;
  2. response.Clear(); 将未发送到浏览器中的数据清空;
  3. response.End(); 终止响应,后边的代码都不会执行;

server

  1. server.transfer(); 服务器内部跳转,不会改变url;

在这里插入图片描述

服务器状态保持机制Application

  • 与cache类似,是所有用户共享的,但是使用时需要手动加锁解锁;
      // 使用时必须加锁解锁
      Application.Lock();
      int count = Convert.ToInt32(Application["userCount"]);
      ++count;
      Application["userCount"] = count;
      Application.UnLock();

服务器状态保持机制session

应用场景:用户登录信息

  1. 在ashx页面中使用session时,应该让其实现接口IRequiresSessionState,不然运行时会报错;aspx中默认实现了IRequiresSessionState接口;
  2. session中可存放各种类型的数据;
  3. 如果服务器session中有值,当客户端发送请求时,服务器会将sessionId以cookie的形式返回给浏览器,存放在浏览器的内存中;如果将浏览器重启,那么浏览器中的sessionId就会丢失,但是服务器端sessionId对应的值不会一起丢失,只有session到期后才会丢失;所以如果将验证码放到session中,浏览器重启后之前的验证码就会失效,需要重新发送
  4. 每个浏览器都有自己的session对象,session的过期时间为20min,是滑动过期时间,20min内不对服务器发送请求就会过期;

客户端状态保持机制cookie

Microsoft文档
应用场景:记住密码,匿名用户购物车

  1. 最多创建20个cookie,但是1个cookie也可以存放多个名称/值(相当于在集合中存放键值对),不过其只能指定一个到期时间;
  2. 如果浏览器不接收cookie,我们需要给用户一个提示,引导其开启cookie;
  3. 所有 cookie 值都存储为字符串;
  4. 不同浏览器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加载数据,删除数据,绑定事件

  1. 一定要在数据加载完成后再给其绑定事件;

  2. 为了区分不同的数据,可以给a标签添加一个自定义的属性来存放当前行的id;

  3. 删除一行数据后要重新加载;

  4. $("tr:gt(0)") gt是“>",表示查找第二行及以后的数据;
    5、展示添加数据页面–jqueryUI
    在这里插入图片描述

  5. 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(){});
  1. 分页时后台既要返回数据,也要返回分页条,可以使用匿名类,将两者序列化后返回;
    在这里插入图片描述

解决传参异常

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;
        }

服务端控件

  1. 不显示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)
        {

        }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值