突然回想一下,两周之后放假回家,三周之后重返学习,四周之后就要真正的面对社会,就这样有好多的舍不得在脑海中回旋,但是又是兴奋的想快点拥有自己的小生活,似乎太多的人在说程序的道路甚是艰难,我不知道我的选择是否是对的,但是我只有一件事情我认为我没有错,那就是无论什么时间带着兴趣去做自己喜欢做的事情就是对的,我不知道自己学习的怎么样,还没有接触真正的项目,但是我感觉好想知道自己和其他人的差别在哪里?每天可以说是在学习着,但是我感觉每天都在退步着,一步步的在向MVC的方向走去,但是好想知道在.net方向学习好的那些友友做程序的技术,然后向他们看齐,有个方向,今天仍然学习的webform,昨天已经详细的总结了webform的认识,但是最后没有保存好就没有啦,所以今天再重新的补充一些有关webform知识,

一.WebForm的对象

1.Request对象以及方法

         Request.UrlReferrer请求的来源,可以根据这个判断从百度搜的哪个关键词、防下载盗链、防图片盗链,可以伪造(比如迅雷)。 (使用全局一般处理程序);
           Request.UserHostAddress获得访问者的IP地址;
          Request.MapPath(virtulPath)将虚拟路径转换为磁盘上的物理路径,Request.MapPath("./a/b.aspx")就会得到D:\2014\WebSites\WebSite4\a\b.aspx。

2.Request对象以及方法(响应缓存的输出)

        Response.Buffer、Response.BufferOutput:经过Reflector反编译,发现两个属性是一样的,Buffer内部就是调用的BufferOutput。这个属性用来控制是否采用响应缓存,默认是true。
        Response.Flush()将缓冲区中的数据发送给浏览器。这在需要将Write出来的内容立即输出到浏览器的场合非常适用。案例:大批量数据的导入,显示正在导入第*条数据,用Thread.Sleep模拟耗时。
        Response.Clear()清空缓存区中的数据,这样在缓存区中的没有发送到浏览器端的数据被清空,不会被发送到浏览器。
        Response.ContentEncoding输出流的编码。
        Response.ContentType 输出流的内容类型,比如是html(text/html)还是普通文本(text/plain)还是JPEG图片(image/JPEG)。
        Response.OutputStream 输出流,在输出图片、Excel文件等非文本内容的时候要使用它
        Response.End()  终止响应,将之前缓存中的数据发给浏览器,End()之后的代码不会被继续继承执行,End方法里调用了Flush()方法。在终止一些非法请求的时候,比如盗链等可以用End()立即终止请求。

3.Server对象以及方法

         Server是上下文对象context的一个属性,是HttpServerUtility类的一个对象;
         Server.HtmlDecode()、Server.HtmlEncode() Server.UrlEncode()、 Server.UrlDecode()是对HttpUtility类中相应方法的一个代理调用。推荐总是使用HttpUtility,因为有的地方很难拿到Server对象,而且Server的存在是为以前ASP程序员习惯而留的。别把HtmlEncode、UrlEncode混了,UrlEncode是处理超链接中的中文问题, HtmlEncode是处理html代码的。还是推荐用HttpUtility.HtmlEncode;
         Server.Transfer(path) 内部重定向请求,Server.Transfer(“Default.aspx”)将用户的请求重定向给Default.aspx处理,是服务器内部的接管(不能重定向到外部网站),浏览器是意识不到这个接管的,不是像Response.Redirect那样经历“通知浏览器‘请重新访问url这个网址’和浏览器接到命令访问新网址的过程”,是一次http请求,因此浏览器地址栏不会变化。因为是内部接管,所以在被重定向到的页面中是可以访问到Request、Cookies等这些来源页面接受的参数的,就像这些参数是传递给他的,而Redirect则不行,因为是让浏览器去访问的。注意Transfer是内部接管,因此不能像Redirect那样重定向到外部网站。(常考)Response.Redirect就可以重定向到外部网站。不能内部重定向到ashx,否则会报错“执行子请求出错”.
         Server.MapPath把相对路径转换为绝对的物理路径。
         其中的一些方法的实例:
Response.Write("<script>alert('登陆成功')</script>");
Page.RegisterClientScriptBlock(Guid.NewGuid().ToString(), "<script>docment.write('登陆成功')</script>"); //可以使用此方法来弹出提示框,由于Response.Write方法的输出是在最开始的位置,所以并不好
Page.RegisterStartupScript(Guid.NewGuid().ToString(), "<script>docment.write('登陆成功')</script>"); //也可以使用此方法来弹出提示框,但是这两种方法现在都已经被否决
Response.Redirect("123.ashx");//这里的方法是临时重定向,发送的请求代码是302
Response.RedirectPermanent("123.ashx");//这里的方法是永久重定向,发送的请求代码是301
string url = Request.UserHostAddress; Response.Clear(); Response.Write(url); //获取客户端地址
string rawurl = Request.RawUrl; Response.Write(rawurl); //获取请求的相对地址
string useragent = Request.UserAgent; Response.Write(useragent);//获取浏览器版本
string hostaddress = Request.UserHostAddress; Response.Write(hostaddress);//获取客户端地址
string hostname = Request.UserHostName; Response.Write(hostname); //获取客户端名字

二.状态保持方式

                 1.ViewStateASP.NET 的 .aspx页面特有,页面级的;就是在页面上的一个隐藏域中保存客户端单独使用的数据的一种方式;服务器端控件的值都自动保存在ViewState中;

         2.Cookie:HTTP协议下的一种方式,通过该方式,服务器或脚本能够在客户机上维护状态信息;就是在客户端保存客户端单独使用的数据的一种方式;就像你的病历本一样,医院直接给你带回家;
         3.Session:现在指的是进程内Session,在服务器端保存客户端单独使用的数据的一种方式;
         4.Application:服务器端保存共享数据的一种方式;
                今天简单的学习了cookie的使用方法,下面就到简单的使用在一个小程序中,我就直接使用昨天的登录界面修改,可以看下的前台类和后台类在不添加cookie时间和现在的区别,下面具来看下登录界面的程序:
         
public partial class fmLogin : System.Web.UI.Page
{
UsermessBll bll = new UsermessBll();
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies["context"] != null) //判断是否存在cookie,如果存在,直接跳转用户详情页,否则重新登录即可
{
Response.Redirect("UserMess.aspx");
}
else
{
if (Request.HttpMethod == "POST") //登录时间判断是get方式请求还是post方式请求
{
string context = this.txtname.Value;
string pwd = this.txtpwd.Value;
string checkbox = Request.Form["checkbox"];
if (bll.GetLogin(context, pwd)) //bll层的返回值是一个bool类型,当不为空时间调用方法
{
if (!string.IsNullOrEmpty(checkbox)) //这里是判断checkbox中是否被选中,选中时间会存在value值
{
HttpCookie cookie = new HttpCookie("cookietext", context); //创建cookie,它是键值对的形式存在
cookie.Expires = DateTime.Now.AddDays(); //给他一个时间7天,可以是7小时或者7分钟
Response.Cookies.Add(cookie); //添加cookie,记得使用的是Response对象,而不是Request
Response.Redirect("UserMess.aspx");
}
}
else
{
Response.Write("<script>alert('登陆失败')</script>");
}
}
}
}
}

下面就来看下UserMess页面,获取cookie:

public partial class UserMess : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie cookie = Request.Cookies["cookietext"]; //获取cookie
if (cookie != null) //当存在cookie时间
{
this.span.InnerHtml = "<a href=''>" + cookie.Value + "</a>&nbsp&nbsp&nbsp<a href='DelCookie.aspx'>退出</a>";//创建了一个退出的连接
}
}
}

看下DelCookie页面,删除一个cookie:

public partial class DelCookie : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie cookie = Request.Cookies["cookietext"]; //获取cookie
if (cookie != null)
{
cookie.Expires = DateTime.Now.AddDays(-); //这里是让cookie过期,即不存在cookie,即退出
//Request.Cookies.Clear(); //这里是使用clear方法清除cookie
Request.Cookies.Add(cookie);
Response.RedirectPermanent("fmLogin.aspx");
}
}
}

在这里只是实现了aspx.cs类的程序和aspx类的程序,如果测试的话可以看昨天的bll层的代码和dal层以及SQLHelper类的程序(http://www.cnblogs.com/dyxd/p/4251686.html),嘿嘿,今天就写到这里啦,每天告诉自己,要继续努力,加油!!!

webform的学习(2)的更多相关文章

  1. MVC&WebForm对照学习:文件上传(以图片为例)

    原文  http://www.tuicool.com/articles/myM7fe 主题 HTMLMVC模式Asp.net 博客园::首页::  ::  ::  ::管理 5 Posts :: 0 ...

  2. ASP.Net WebForm温故知新学习笔记:二、ViewState与UpdatePanel探秘

    开篇:经历了上一篇<aspx与服务器控件探秘>后,我们了解了aspx和服务器控件背后的故事.这篇我们开始走进WebForm状态保持的一大法宝—ViewState,对其刨根究底一下.然后,再 ...

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

    开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...

  4. MVC&WebForm对照学习:ajax异步请求

    写在前面:由于工作需要,本人刚接触asp.net mvc,虽然webform的项目干过几个.但是也不是很精通.抛开asp.net webform和asp.net mvc的各自优劣和诸多差异先不说.我认 ...

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

    开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...

  6. MVC&WebForm对照学习:文件下载

    说完了WebForm和MVC中的文件上传,就不得不说用户从服务器端下载资源了.那么今天就扯扯在WebForm和MVC中是如何实现文件下载的.说起WebForm中的文件上传,codeshark在他的博文 ...

  7. MVC&WebForm对照学习:传值方式

    刚从webform开发转到mvc,如果说像路由这样稍微复杂一点的知识点还可以暂时先放一放(前提是默认的路由规则基本满足大部分需求),那有个问题在快速开发中,我想是必须要当即解决的,那就是webform ...

  8. WebForm 基础学习

    C/S   客户端应用程序(Client/Server)  客户端——服务器端 两种技术      WinForm       WPF                                 ...

  9. .NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标

    文章出自:http://www.cnblogs.com/ice-river/p/3475041.html 一 .NET平台技术体系梳理 .NET平台应用领域众多(桌面开发,web开发,移动开发),不断 ...

随机推荐

  1. HashMap的最大容量为什么是2的30次方?

    今天看HashMap的底层实现,发现HashMap的最大容量规定为: // 最大容量(必须是2的幂且小于2的30次方,传入容量过大将被这个值替换) static final int MAXIMUM_C ...

  2. 【转】【Android】Android Drawable Shape 组合画田字格

    使用layer-list组合多个Shap <?xml version="1.0" encoding="utf-8"?> <layer-list ...

  3. 【Python】python3.6 操作mysql

    1.首先安装mysqldb 下载 mysqldb 使用命令 pip3 install mysqlclient-1.3.12-cp36-cp36m-win32.whl 下载地址: mysqlclient ...

  4. Mybatis系列(四):Mybatis缓存

    一.MyBatis缓存介绍 MyBatis 提供了一级缓存和二级缓存的支持        1. 一级缓存: 默认开启,基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se ...

  5. Eclispe IDE集成Maven

    Eclipse提供了一个很好的插件m2eclipse 无缝将Maven和Eclipse集成在一起. m2eclipse一些特点如下 您可以从Eclipse运行Maven目标. 可以使用其自己的控制台查 ...

  6. ISAPI和CGI限制中没有ASP.NET v4.0 ; vS2013检测到在集成的托管管道模式下不适用的 ASP.NET 设置。

    统确实自带了ASP.NET v4.0,但是ISAPI中没有这个选项,导致服务器开不起来 解决方法如下: 1.确保安装IIS时确实安装了ASP.NET,如果没有的话,勾上重新装一下,一般出现404.2时 ...

  7. Java虚拟机性能管理神器 - VisualVM(1) 简介 - JVM轻量级监控分析神器

    目录(?)[-] 一VisualVM是什么 二如何获取VisualVM 三获取那个版本 四VisualVM能做什么 显示JAVA应用程序配置和运行时环境 显示本地和远程JAVA应用程序运行状态 监控应 ...

  8. Spring-core中的cglib小用法

    对象复制听说用这个更高效 /** * 拷贝对象 * @param src 源对象 * @param dist 需要赋值的对象 */ public static void copy(Object src ...

  9. Redis系列-php怎么通过redis扩展使用redis

    From: http://blog.csdn.net/love__coder/article/details/8691679 通过前面几篇blog,我们应该对redis有个大致的认识,这里再讲解下,p ...

  10. iOS: 定义 Block

    定义 typedef void (^RFAudioBasicBlock) (void); typedef void (^RFAudioSuccessBlock) (BOOL flag); typede ...