浅析ASP.NET系列(二)

本节目标:
<%%>及<%=%>表达式
客户端请求对象 Request
服务器响应对象 Response
服务器信息获取 Server
服务器用户会话对象 Session
客户端用户会话对象 Cookie
服务器全局缓存对象 Application
 
1.<%%>及<%=%>表达式:
在ASPX页面中,我们使用<%%>用来编写程序的代码部分。在其中可以声明变量和代码。如:
<%
            if (Application["ApplicationCount"] == null)
            {
                Application["ApplicationCount"] = 1;
            }
%>
<%=%>是用来向输出流中输出变量的值其用法如下:
<% int i = 6; %>
<%=i %>
 
2.在我们叙述ASP.NET中的对象时先要让大家了解一些知识如下:
对于APS.NET来说,我们上边所提到的这对象并不是像JSP或ASP.NET的早期版本中提到的内置对象而是System.Web.UI.Page这个类中的一些属性。
对于WEB服务器来说,处理客户端请求用的是HTTP协议,然而HTTP是处于无状态的,它并不记录上次发送请求的是谁,所以只有当客户端主动请求服务端才会有响应。我们接着看在ASP.NET使用客户请求。
 
3.ASP.NET客户端请求使用Request 对象:
Request 对象封装客户端请求页面或提交表单时提供的信息。这些信息包括:
 
以上这些属性在MSDN中都可以找到,我们主要来看一下Form及QueryString属性的用法,首先看Form:
这是ASPX页面中的代码,请注意两个input表单的名称。
 

< table width ="50%" border ="0" align ="center" cellpadding ="5" cellspacing ="1" bgcolor ="#663399" >
     < tr >
         < td width ="60" bgcolor ="#FFFFFF" >用户名: </td>
         < td bgcolor ="#FFFFFF" > < input type ="text" name ="UserName" />  </td>
     </tr>
     < tr >
         < td bgcolor ="#FFFFFF" >密   码: </td>
         < td bgcolor ="#FFFFFF" > < input type ="text" name ="UserPwd" />  </td>
     </tr>
     < tr >
         < td bgcolor ="#FFFFFF" >操   作: </td>
         < td bgcolor ="#FFFFFF" > <asp:Button ID="Button1" runat="server" Text="登录"    
                        onclick="Button1_Click" /> </td>
     </tr>
</table>
 
以下是.CS文件也就是类中的代码(写在Button1的单击事件调用的方法中):
InBlock.gifLabel1.Text = Request.Form[ "UserName"]; //用Request对象的Form集合属性访问到其中的元素
InBlock.gif                Label2.Text = Request.Form[ "UserPwd"];
 
label1与label2是两个文本标签控件,我将Request属性得到的变量赋值给了文本标签,从这里可以看出,我们可以跟据html代码中表单的name来得到其俱体的值。在这里我们用到了POST请求方式。我们来了解一下POST请求方式的概念。
在WEB中,客户端请求体现有两种方式:
Get和Post方式
这两种方式都可以通过设置Form表单的method属性,不过一般来讲Form表单都使用Post方式提交,而Get方式则用于在地址栏提交如:
InBlock.gifhttp: //www.xy8.cn/Admin.aspx?name=张三&pwd=123
 
从以上地址我们能看出,跟在?号后边的就是变量与其俱体的值,如果要有多个变量的话,需要在中间用&符分隔。
 
接下来的代码体现了如何接收Get方式请求的值:
InBlock.gif //Label1.Text = Request.QueryString["name"];//接收客户端请求(get方式的)
InBlock.gif //Label2.Text = Request.QueryString["pwd"];
 
4.ASP.NET中服务器端响应使用Response:
每次客户端发出一个请求的时候,服务器就会用一个响应对象来处理这个请求,处理完这个请求之后,服务器就会销毁这个相应对象,以便继续接受其它客服端请求。Response常用属性和方法如下:
 
 
常用的方法Redirect与Write:
使用Response对象的Redirect()的方法,转到admin页面,并且使用get方法将Form表单得到的值传递到新的页面中:
InBlock.gifResponse.Redirect( "Admin.aspx?name=" + Request.Form[ "UserName"] + "&pwd=" + Request.Form[ "UserPwd"]);
 
InBlock.gifResponse.Write( "欢迎访问本页面"); //向客户端输出文本
 
5.获取服务器相关信息我们使用Server对象
它常用方法如下:
 
我们经常会用Server对象来获取一些服务器的信息,如下代码:
InBlock.gifLabel3.Text = Server.MachineName;     //获取服务器名称
InBlock.gifLabel4.Text = Server.MapPath( "Admin.aspx"); //获取服器路径
 
 
6.服务端用户会话使用Session来实现:
Session中的数据保存在服务器端。
客户端请求时Session被创建,请求结束后Session被注消。
Session是保存在服务器中的,如果每一个用户访问都创建一个Session的话服务器将难以承受,所以Session是俱有生命周期的Session的默认生命周期为20分种我们可以通过Session的Timeout来设置。
InBlock.gif //赋值:
InBlock.gifSession[“UserName”]=”张剑”;
InBlock.gif //取值:
InBlock.gif string userName;    
InBlock.gif if(Session[ "UserName"]!= null)    
InBlock.gif{    
InBlock.gif //当指定名称的Session存在时,获取指定Session的值    
InBlock.gifuserName=( string)Session[ "UserName"];    
InBlock.gif}
 
7.客户端用户会话我们使用Cookie对象:
Cookie不同与Session它是保存在客户端而不是服务器上的。
Cookie中只能保存字符串类型的数据。
Cookie也有其默认生命周期,也可以手动设置,最大可设置成50年之后过期。
设置Cookie就是在服务器响应对象Response的Cookie集合中增加Cookie,Response对象会把这个Cookie集合发送客户端。
设置Cookie:
InBlock.gif //两种方式可以设置Cookie的值,以下为第一种方式    
InBlock.gif                                HttpCookie cookie = new HttpCookie( "aa");    
InBlock.gif                                cookie.Value = Request.Form[ "UserName"].ToString();    
InBlock.gif                                cookie.Expires = DateTime.Now.AddDays(3);    
InBlock.gif                                Response.AppendCookie(cookie);    
InBlock.gif    
InBlock.gif //第二种方式    
InBlock.gif                                Response.Cookies[ "User"][ "Name"] = Request.Form[ "UserName"].ToString();    
InBlock.gif                                Response.Cookies[ "User"].Expires = DateTime.Today.AddDays(3);    
InBlock.gif                                    
InBlock.gif                                Response.Redirect( "Admin.aspx");
 
读取Cookie:
InBlock.gif             if (Request.Cookies[ "aa"] != null)
InBlock.gif                {
InBlock.gif                        Label1.Text = Request.Cookies[ "aa"].Value.ToString();
InBlock.gif                        
InBlock.gif                        
InBlock.gif                }
 
注意: 经常有朋友想要用Cookie的Expires属性来取得Cookie保存在客户端的有效期,然而这是不可取的,因为当浏览器向服务器发送 Cookie 信息时,并不包括有效期信息。
 
8.Session PK Cookie
Session是保存在服务器端相对较安全,虽然时间限制较短,但是非常适合用来做为一个网站的后台用户登录。
Cookie是保存在客户端的,虽然只能保存文本,但是保存时间超长,可以做为网站或者论坛社区的前台用户登录。
 
9.服务器全局缓存对象(应用程序状态Application):
Application也是存储在服务器端的。
Application保存的是全局的共有的信息。
比如计数器的功能(页面的打开次数)
如果我们使用Session保存的话只能针对单个用户,使用Application可以记录或访问每个用户登录的次数。例如:
InBlock.gif if (Application[ "Count"] == null)
InBlock.gif                {
InBlock.gif                        Application[ "Count"] = 1;
InBlock.gif                }
InBlock.gif                 else
InBlock.gif                {
InBlock.gif                        Application[ "Count"] = ( int)Application[ "Count"] + 1;
InBlock.gif                }
InBlock.gif
InBlock.gif                 if (Session[ "Count"] == null)
InBlock.gif                {
InBlock.gif                        Session[ "Count"] = 1;
InBlock.gif                } else
InBlock.gif                {
InBlock.gif                        Session[ "Count"] = ( int)Session[ "Count"] + 1;
InBlock.gif                }
 
InBlock.gif Label6.Text = Application[ "Count"].ToString();
InBlock.gifLabel7.Text = Session[ "Count"].ToString();
 
我们将以上代码放到Page_Load方法中,在每次关闭浏览器打开页面时会发现Label6中的值在不断的累加,而label7中的值只要关了IE重新打开后就变回为1了。
 
10.最后我们对比一下三者的区别:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值