讲义15:服务器端编程:Request&Response

一、内容提要

B/S模型

Reponse对象

Request 对象

二、内容及操作步骤

1. B/S模型

Browser: 浏览器

Server: Web 服务器,IIS

2.Web 开发环境的组成部分

(1) 浏览器:呈现HTML,提供输入表单UI,与用户进行交互

(2) WEB服务器:获取浏览器请求,并作出响应。响应数据通常来自数据库服务器

(3) 数据库服务器:存储数据的地方,通常可理解为装为Sql Server 的电脑

注意:

B/S之间基于HTTP协议通信

HTTP协议是请求-应答的协议,无状态。无状态是指两次请求-应答之间无相关性。

Web服务器通过Session会话对象管理浏览器与服务器之间多次请求-应答的相关性。

Session对象默认的生命期只有20分钟

3. 服务器端编程需解决的3个问题

(1) 服务端如何处理浏览器请求与应答问题:Request对象、Response对象

(2) 服务端如何管理与浏览器会话的问题:Session对象、Application对象、Cache对象

(3) 处理服务端变量、资源问题 :Server对象

4. 服务器编程相关的对象

(1) Request对象:在服务端,服务器用来获取浏览器请求的数据

类所在名称空间:System.Web.HttpRequest

是 页面对象Page 的属性

Request对象的成员:

属性:

QueryString: key-value 获取浏览器地址栏传入的参数信息,如: 1.aspx?id=100&type=1

Form : key-value 获取浏览器以表单的形式传入的参数信息

Cookies

Browser: 浏览器的版本号等信息

RawUrl : 浏览器的url串

UserHostAddress : 浏览器电脑的IP地址

(2) Response对象:在服务端,服务器用来向浏览器回应数据的对象

是 httpResponse类的实例

是 页面对象Page 的属性

Response对象的成员:

属性:

方法:

Redirect : 跳转

Write: 写入浏览器

问:页面对象?

Asp.net程序页面在服务端的实例,每一次请求一个ASPX页面的时候,服务端都会产生一个该页面对象的实例。

举例:用户登录过程分析

Login.htm => Login.aspx

[1] 浏览器第一次请求:在地址栏输入 Login.htm

[2] Web服务器将Login.htm的内容响应给浏览器

[3] 浏览器中呈现了一个用户登录界面,第一次会话结束

[4] 用户服在浏览器中输入登录信息并提交Login.aspx,发生第二次请求

[5] 服务器获取浏览器传入的登录信息,验证登录信息,如果成功,回应成功,否则回应失败

[6] 浏览器回应服务验证的结果界面,第二会话结束

三、常见错误

找不到项目文件存放位置

四、内容提要

集合:哈唏表、字典

Requst对象:QueryString、Form

Reponse对象:跳转、js输出

五、内容及操作步骤

1

集合:哈唏表、字典

1.1哈唏表:Hashtable 类

(1) 概述:是一种集合数据类型,每个成员是一个key-value对,键值对

(2) 类名:System.Collections.Hashtable

(3) 属性成员

方法成员:

1.2 字典类:Dictionary

(1) 概述:是一种集合数据类型,每个成员是一个key-value对,键值对

(2) 类名:System.Collections.Generic.Dictionary

(3) 属性成员

方法成员:

举例:

4

Request&Response对象的访问

(1) 是Page对象的属性:

在Web窗体的*.aspx.cs文件中,可以直接调用,也可以通过this关键字调用

(2)通过HTTP上下文对象访问

上下文对象:Context

上下文对象的类名:

System.Web.HttpContext

上下文类的静态成员:Current 可获得当前上下文对象的实例

举例:

5

Session对象

(1) 概述:在WEB服务器端用于管理浏览器与WEB服务端的会话状态,当新开一个浏览窗口向服务器发送请求时,服务器端就创建了一个Session对象,默认生命期20分钟。Session对象就一个全局唯一ID叫 SessionID,存储在浏览端的Cookie中,Cookie也是有生命期的。可将Session对象视为键值对集合。

(2) 类名:

System.Web.SessionState.HttpSessionState

(3) 属性:

(4) 方法:

(5) 举例:演示系统登录制作,思路如下:

制作登录页面,包括:用户名、密码、角色选择;提交

服务器端获取用户提交的信息:账号、密码、角色

验证:用户提交的账号口令与系统中存储的账号口令是否匹配

通过验证:

根据用户账号查询该用户其他信息,如:真实姓名、icon、角色名称、部分名称等,封闭为一个对象,如:CurrentUser

将CurrentUser类的对象写入到Session键值对中去。

写登录日志、获取用户权限等

没有通过验证:

提示错误请重试,更新出错计数器

检查出错计数器是否达到阀值,如达到:限制登录

六、常见错误

找不到项目文件存放位置

感谢阅读

关注“熊哥是程序猿”

学习更多知识

本文来自企鹅号 - 熊哥是程序员媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Danny的专栏

ASP.NET中利用Application和Session统计在线人数、历史访问量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

31030
来自专栏晨星先生的自留地

django(2)setting配置文件详解

19230
来自专栏小二的折腾日记

《redis 设计与实现》--总结

Redis自己构建了简单动态字符串(Simple Dynamic String,SDS)来作为默认的字符串表示。 SDS的构造如下:

39440
来自专栏小二的折腾日记

《redis 设计与实现》--总结

Redis自己构建了简单动态字符串(Simple Dynamic String,SDS)来作为默认的字符串表示。 SDS的构造如下:

10220
来自专栏智能合约

PHP性能分析之Xhprof数据说明

16160
来自专栏LinXunFeng的专栏

Swift 掌控Moya的网络请求、数据解析与缓存

解决的方案有很多,不过我比较习惯使用 MoyaMapper ,不仅可以解决上述问题,还提供了多种模型转换、数据互转、多种数据类型任意存储的便捷方法。掌控Moya...

26230
来自专栏大内老A

WCF技术剖析之三十一: WCF事务编程[中篇]

[续《上篇》]通过将TransactionFlowAttribute特性应用在服务契约的某个操作之上,并指定相应的TransactionFlowOption枚举...

23450
来自专栏小怪聊职场

安全|API接口安全性设计(防篡改和重复调用)

API接口的安全性主要是为了保证数据不会被篡改和重复调用,实现方案主要围绕Token、时间戳和Sign三个机制展开设计。

1.1K30
来自专栏大内老A

WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇]

在[第2篇]中,我们深入剖析了单调(PerCall)模式下WCF对服务实例生命周期的控制,现在我们来讨轮另一种极端的服务实例上下文模式:单例(Single)模式...

22090
来自专栏大内老A

我的WCF之旅(1):创建一个简单的WCF程序

为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。对...

22780

扫码关注云+社区

领取腾讯云代金券