浅谈对ASP.NET MVC(微软Web开发框架)的理解

今天来总结下y2扩展就业的课程使用asp.netmvc开发企业级应用自学成果。首先ASP.NET是Microsoft公司.NetFramwork框架的一个动态网页开发的核心技术集,他可以帮助.net方向的动态web开发人员快速高效制作动态网页交互,同样支持jquery,js和h5c3,以及实现异步请求服务器达到无刷新效果的ajax技术。MVC是一种应用程序设计的成熟设计模式思想,指的是模型视图和控制器。而ASP.NET MVC就是微软的ASP.NET技术和mvc设计模式的集合,隶属于.net框架。ASP.NET MVC技术就像java的jsp+Servlet技术一样,也有自己的语法,并且有很多相似之处,比如支持小脚本,表达式,指令,声明等,并且有定义的相应的语法规则。ASP.NET MVC技术的核心配置文件是web.config配置文件,在这个配置文件中可以配置整个ASP.NET MVC应用程序的运行环境。ASP.NET MVC应用程序的核心组成部分就是Model模型层,存放实体类,View视图层,存放各种页面视图模板视图分布视图母版视图等,Controller控制器层或者说业务层,存放处理业务的各种控制器和动作方法。ASP.NET MVC也支持拦截器,可以拦截不同的用户请求并调用相应的动作方法处理请求并返回响应,并根据ASP.NET MVC视图寻址规则找到匹配的视图,解析之后呈现页面到客户端。这门课程除了主要讲解ASP.NET MVC以外,还介绍了c#语言的一些新特性和SQlServer数据库的一些拓展知识。以上是从宏观上简要分析了这门课程的脉络,接下来分别做补充说明。第一章介绍了ASP.NET MVC技术的由来,以及开发数据库的一些拓展知识。以上是从宏观上简要分析了这门课程的脉络,接下来分别做补充说明。首先,第一章开篇主要介绍了asp.netmvc技术的由来以及一个asp.netmvc应用程序的基本组成部分,即模型层视图层和业务层或者说控制层,还有配置路由规则的配置文件,web.config核心配置文件,位于appstart目录下的项目启动环境文件。其次介绍了asp.netmvc应用程序遵循的语法规则,以及视图的配置和母版视图,类似jsp的include指令,在了asp.netmvc中使用MVC:content和MVC:contentPlaceholder标签并配置属性后实现页面内容的嵌入和引用,非常灵活方便的达到了页面内容复用的目标。这一章节还有一个重中之重就是介绍了了asp.netmvc内置对象的属性和方法,比如请求Request,处理响应的Response,处理会话的Session,配置cookie缓存的Cookies,作用于整个应用程序的Application,上下文环境对象HttpContext,获取和管理服务器信息的Server等,还有相应的实现转发重定向,往容器存值取值,设置生命周期的方法等等,这些asp.netmvc内置对象api都是实际开发了asp.netmvc应用程序经常用到的核心宝典。第二章到第四章详细介绍了TSQL编程,存储过程和ado.net进阶。T-SQL是SQLServer数据库特有的sql指令集,并对sql语言做了扩展,支持自定义局部变量deface @,给局部变量赋值set.select,输入输出语句print,select,数据类型转换convert,cast,逻辑控制语句顺序beginend分支of else,careend 循环while等,并且提供了一些常用的系统全局变量@@可以直接使用用来获取数据库系统信息,批处理指令go等。存储过程是数据库管理系统中存在的,已经预先编译好的,可以执行的sql程序,是sql语句和控制语句的预编译集合,减少sql注入攻击发生的可能性。特点是模块化程序设计,执行速度快,效率高,具有良好的安全性,并且由于不用每次请求都重新生成sql语句,采用预编译的方式,必然减轻了网络流量传输负担。存储过程分为系统存储过程sp_和用户自定义的存储过程,系统存储过程可以获取数据库表子段约束索引视图等数据库对象的详细信息,系统存储过程中还有一类特殊的系统存储过程,那就是扩展存储过程,常用的比如xp_cmdshell操作dos命令等等,他提供了数据库服务器连接外部应用程序的通用统一的接口。除此之外用户还可以根据实际业务需求自定义存储过程。自定义存储过程可以带参数也可以不带参数,带参数的存储过程又可以分别指定输入参数,即执行存储过程需要的数据,和输出参数,即存储过程执行之后的返回值。ado.net是.netframework用来访问和操作各种关系型数据库的技术,由数据提供程序和dataset组成,数据提供程序有四大核心对象ConnectionCommandDataReaderDataAdapter组成。为了减少对于每次请求都重新获取链接访问数据库造成的数据库资源开支,可以使用using代码块在代码块执行结束时自动调用disponse方法释放对象占用的内存资源,前提是这个对象实现了IDisponsible接口,并不是说有对象创建时都需要使用using进行限定,我们只需要将那些对系统性能有重要影响的对象使用using限定就可以了,其他对象交由垃圾回收器处理。ADO.NET进阶的一个核心语法就是参数化命令,这点主要依靠SqlParameter类和SqlCommand对象的Parameters属性实现,这个属性的类型是SqlParameter对象数组,可以往里面添加参数,sql语句中的参数使用@参数名实现,在创建SqlParameter对象时根据参数名设置参数对应的实际值,最后添加到Parameters属性中即可使用参数化命令执行sql语句,安全可靠更高。除此之外,使用ADO.NET还可以调用数据库中已经定义好的存储过程,重点是要设置好SqlCommand对象的几个属性CommandType指定为枚举值StoredProcedure,设置Parameters 参数,CommandText属性指定存储过程名,如果有输出参数,则通过索引取到Parameters数组中的SqlParameter对象并指定其Direction属性值为ParameterDirection.Output枚举值,最后调用ExecuteNonQuery方法执行即可。接下来说一下第五章路由和数据传递,可以根据在RouteData.xml中定义寻址规则,从而调用不同控制器中的不同动作方法处理相应请求,并且介绍了控制器到视图和视图到控制器的数据传递,控制器传递数据到视图通过ViewData,ViewBag,TempData和Model对象存入数据实现,视图向控制器传递数据方式也有很多,比如通过QueryString请求字符串,RouteData路由数据,Model模型对象等实现视图到控制器的数据传递,再来说下第六章到第八章C#语言的新特性,这些特性和使用c新特性,尤其是委托和扩展方法在这个类中运用的恰到好处,这个类里面定义的方法可以直接生成带有html属性和style样式的表单元素,这些方法实际都是扩展方法,扩展了HtmlHelper类的功能,并且视图可以直接调用HtmlHelper对象的方法动态创建表单元素和生成符合路由规则的url。第十一章介绍了在asp.netmvc中使用ajax,在视图层可以通过调用封装好的Ajax对象的方法动态生成无刷新连接,内部实现是通过客户端异步请求服务器,即客户端发送请求到服务器之后可以在服务器返回响应之前继续执行其他操作,不用刷新页面,也不需要等和依赖服务器实时返回的响应。对于服务器而言,只需要根据需求在动作方法中获取请求需要的数据并通过数据传递传递请求需要的数据到客户端,不用重新加载整合视图页面。第十二章介绍了web开发的安全防御,单元测试和部署asp.netmvc应用程序到IIS服务器中,单元测试是为每个控制器中的动作方法编写相应的方法并传入不同情况下的多种测试数据进行单元测试,还可以计算代码覆盖率,覆盖率越高越能说名单元测试做的越全面,程序的健壮性越强。常见的web攻击类型分为XSS跨站请求脚本攻击,即通过改写页面脚本实现攻击和CSRF跨站请求伪造攻击,即通过伪造表单和请求地址,暗地触发表单提交到某一设计好的圈套地址实现数据窃取,解决方式有使用令牌机制防御和启用NONAction特性标注非动作方法进行防御。asp.netmvc特性类似java中的注解,不同的特性可以实现不同的功能。第十三章讲了拦截器,类似java中的过滤器Filter,可以根据配置的url拦截不同的用户请求并调用相应控制器的相应动作方法进行处理,还可以在请求之间和作出响应之后在不改变原方法代码的情况下增添一些额外的操作,如字符编码的过滤,请求参数的预处理等等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue计算排列布局

1、效果 2、html <div class"databubble"><div ref"content"><divv-for"(item, index) in databubble"ref"contentPage":key"index"class"contentPage"><div><span class"title&…

2023年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——解析版

文章目录 2023年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题三、逻辑推理真题(2023-26)真题(2023-27)真题(2023-28)真题(2023-29)真题(2023-30)真题(2023-31-32)真题(2023-33)真题(2023-34)真题(2023-35)真题(2023-36)真题(2023-37-38

Vue2+echarts 实现图表的简单绘制

Echarts是一个基于JavaScript的开源可视化库&#xff0c;由百度开发和维护。它通过简单的配置方式&#xff0c;就可以实现各种复杂的数据可视化和图表展示。Echarts支持多种图表类型&#xff0c;包括柱状图、折线图、饼图、散点图、漏斗图等&#xff0c;同时还支持地图可视化和…

SQL自学通之表达式条件语句与运算

目录 一、目标 二、表达式条件语句 1、表达式&#xff1a; 2、条件 2.1、WHERE 子句 三、运算 1、数值型运算: 1.1、加法() 1.2、减法 (-) 1.3、除法&#xff08;/&#xff09; 1.4、乘法 &#xff08;*&#xff09; 1.5、取模 &#xff08;%&#xff09; 优先级别…

HTTP缓存

需求开发中不断的往项目中添加图片、字体等这些静态资源使得项目打包体积越来越大。 打包后这些静态资源占据了包体积的大部分。 基于此&#xff0c;我们准备将静态资源从项目中移出来放到 oss 云服务上&#xff0c;这样项目的体积会缩小很多&#xff0c;打包速度也会快很多 …

[论文笔记] tiktoken中的gpt4 tokenizer

亲测可用!!!!! 注意是bytelevel的BPE!! 只有vocab.json是不ok的,只能encode单字节的字符,对于中文这种会encode之后tokens,ids都是[]。 gpt-tokenizer - npm GitHub - openai/tiktoken: tiktoken is a fast BPE tokeniser for use with OpenAIs models. GitHub - …

Android studio版本对用的gradle版本和插件版本(注意事项)

简介 Android Studio 构建系统以 Gradle 为基础&#xff0c;并且 Android Gradle 插件添加了几项专用于构建 Android 应用的功能。虽然 Android 插件通常会与 Android Studio 的更新步调保持一致&#xff0c;但插件&#xff08;以及 Gradle 系统的其余部分&#xff09;可独立于…

接口测试很难?1分钟带你入门接口自动化测试

1、什么是接口&#xff1f; 接口是连接前台和后台的桥梁&#xff0c;前台通过接口调用后端已完成的功能&#xff0c;而无需关注内部的实现细节。借助于接口&#xff0c;可以实现前后台分离&#xff0c;各自完成开发工作后&#xff0c;进行联调&#xff0c;提高工作效率 2、接…

系列十三、SpringBoot的自动配置原理分析

一、概述 我们知道Java发展到现在功能十分的强大&#xff0c;生态异常的丰富&#xff0c;这里面离开不了Spring及其家族产品的支持&#xff0c;而作为Spring生态的明星产品Spring Boot可以说像王者一般的存在&#xff0c;那么的耀眼&#xff0c;那么的光彩夺目&#xff01;那么…

分享66个菜单导航JS特效,总有一款适合您

分享66个菜单导航JS特效&#xff0c;总有一款适合您 66个菜单导航JS特效下载链接&#xff1a;https://pan.baidu.com/s/1dpGGbptx6hEKcBnTMNLIdA?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…

聚焦工业生产安全,汉威科技推出最轻最小迷你便携式单气体检测仪

有毒有害气体、可燃气体等是工业生产中常见的危险因素。我国已经出台了多项法律法规、行业标准&#xff0c;在石油、化工、钢铁冶金、危化品、矿业等行业以及有限空间相关场所作业&#xff0c;应当佩戴便携式气体检测仪&#xff0c;以保障作业人员的安全。 然而&#xff0c;近年…

SSM项目实战-前端-将uid存放在pinia中

https://pinia.vuejs.org/zh/getting-started.html 1、安装pinia npm install pinia {"name": "pro20-schedule","private": true,"version": "0.0.0","type": "module","scripts": {"d…

什么是中间人攻击

中间人攻击 1. 定义2. 中间人攻击如何工作3. 常见中间人攻击类型4. 如何防止中间人攻击 1. 定义 中间人攻击&#xff08;Man-in-the-Middle Attack&#xff0c;简称MITM&#xff09;&#xff0c;是一种会话劫持攻击。攻击者作为中间人&#xff0c;劫持通信双方会话并操纵通信过…

全球与中国汽车电力电子市场:增长趋势、竞争格局与前景展望

目前&#xff0c;世界各国都致力于转向更环保、更永续的传统交通替代方案。 电动车满足所有要求&#xff0c;因为它们具有零废气排放、改善空气品质、减少温室气体排放并创造更清洁、更健康的环境。此外&#xff0c;电动车的运作成本比传统内燃机驱动的汽车低&#xff0c;因为…

企业微信群发助手:实现高效触达的关键利器

在当今的商业环境中&#xff0c;流量已经成为了每个企业争夺的宝贵资源&#xff0c;这也导致了获客成本的不断上升。为了解决这个问题&#xff0c;越来越多的企业开始转向私域流量的运营&#xff0c;通过私域来吸引和维护客户。以电商为例&#xff0c;商家通过客服引导用户添加…

【大连民族大学C语言CG题库练习题】——输入10个实数入数组,然后依次输出前1个实数和、前2个实数和、…、前10个实数和

【问题描述】输入10个实数入数组&#xff0c;然后依次输出前1个实数和、前2个实数和、…、前10个实数和 【输入形式】输入10个实数 【输出形式】依次输出前1个实数和、前2个实数和、…、前10个实数和 【样例输入】 1.2 3.4 4.4 3.8 5.1 6.2 7.3 4.3 9.4 2.5 【样例输出】 …

RabbitMQ 的七种消息传递形式

文章目录 一、RabbitMQ 架构简介二、准备工作 三、消息收发1. Hello World2. Work queues3. Publish/Subscrite3.1. Direct3.2. Fanout3.3. Topic3.4. Header 4. Routing5. Topics 大部分情况下&#xff0c;我们可能都是在 Spring Boot 或者 Spring Cloud 环境下使用 RabbitMQ&…

[C国演义] 第二十三章

第二十三章 两个字符串的最小ASCLL删除和最长重复子数组 两个字符串的最小ASCLL删除和 力扣链接 求 删除字符的ASCLL和的最小值 ⇒ 正难则反 ⇒ 求公共子序列的ASCLL和的最大值 两个数组的dp问题 ⇒ 分区间讨论 ⇒ dp[i][j] -- nums1数组的[0, i] 区间 和 nums2数组的[0, j] …

vue3学习网站

官方网站&#xff1a;Vue.js - 渐进式 JavaScript 框架 | Vue.js 中文文档: 简介 | Vue.js Webpack 入门教程&#xff1a;Webpack 入门教程 | 菜鸟教程 vue3知识宝库&#xff1a;Vue3

@Transactional事务以及相关的注解,事务的传播行为

Transactional是一个用于声明式事务管理的注解&#xff0c;通常用在 Spring 框架中。 当一个方法被 Transactional 注解时&#xff0c;表示该方法需要进行事务管理。如果方法执行过程中出现异常&#xff0c;那么事务会自动回滚&#xff1b;如果方法正常执行完毕&#xff0c;那…