MVC知识点整理汇总

MVC与ASP.NET MVC基础概念

MVC是Model-View-Controller的缩写.

MVC将应用程序划分为3大组件:模型\视图\控制器.

MVC不是ASP.NET所特有,它只是一种开发理念.java中的struts2也是一种MVC模型.

ASP.NET MVC从2008年发布1.0版以来,截至2014年ASP.NET MVC最新版本已经是5.0.

ASP.NET MVC从1.0版开始,就已经开放源代码(源码地址:aspnetwebstack.codeplex.com).

ASP.NET MVC官网地址:http://www.asp.net/mvc

MVC三大组件的相互关系

在控制器中可以直接调用视图和模型

在视图中可以调用模型.

模型不能调用视图

模型能够限定视图中使用的数据,但视图中使用的模型应由控制器提供

在视图中可以调用控制器(通过视图中表单的提交和点击超链接的方式调用)

4418040-416f544c920d14f0.png

ASP.NET Webform模型和ASP.NET MVC模型的关系

二者都是基于ASP.NET Web框架构建的开发模型.所以ASP.NET中的一些功能可以被二者公用.

Webform编程模型是典型的以事件驱动的web模型,而MVC则不是.

Webform的URL地址是基于文件系统的,而MVC则是基于Action.

4418040-d1a294c2a90af406.png

ASP.NET MVC中的约定

所有的控制器必须放到Controllers文件夹下

所有的控制器类名必须以Controller结尾

所有的模型应该放到Models目录下

所有的视图文件都应该放到Views目录下.

所有的控制器类都应该继承自Controller类(本质上是要继承Icontroller接口)

在控制器类中的public方法被成为Action(行为)

如果在相应的视图目录中没有找到视图文件,那么会寻找Views\Shared目录下名称相同的视图文件

在Action中return view(),默认会返回和Action名称一样的视图文件.

在Global.asax全局应用程序类中注册了默认路由(名称为Default),默认路由指定了Controller默认为Home,Action默认为Index,参数id为可选参数.所以在URL地址中如果不输入controller默认访问Home控制器;如果不输入action默认访问名称为Index的action.

http://localhost:54321/解释:

根据默认路由规则,等价于=> http://localhost:54321/Home/Index

http://localhost:54321/Home/Index/5解释:

数值5会自动映射到action中名称为id的参数中。

Http://localhost:54321/Home/Index/5?name=jack&age=20解释:

其中参数包括id、name和age三个

其他

在视图文件中,有一个名称为Model属性,它指代的是从Action中传递的模型数据.为了使用模型数据,我们还需要在<%@Page  %>指令的Inherits属性中设置模型数据的类型.

ASP.NET MVC进阶一

控制器相关

在Controller类中方法访问级别为public的方法,就是行为(Action).

如果不希望Controller类中的方法成为Action(可以在地址栏中被访问),有两种实现方式:

将方法的访问级别设置为private

在方法上添加特性标记[NonAction]

4418040-08b4ebe29d22c533.png

诸如新增\修改等功能模块,我们往往会创建2个名称相同的Action:一个action用于加载新增\修改页面;另一个action用于处理新增\修改页面提交的表单数据.那么如何区分在何时调用哪个action呢?

我们将加载新增|修改页面时被调用的action,添加[HttpGet]特性标记;将处理页面提交的表单数据时调用的action,添加[HttpPost]特性标记.下面的示例代码演示了如何实现学生的新增(action相关的代码)

4418040-6657a5fd9e438a04.png

如何在Action中获取表单提交的数据?

表单中提交的数据,可以通过Action的参数进行映射.

映射的前提条件:Html标记的name属性值和action中参数的名称要一致.

下面的示例代码演示了映射的过程(注意粉色框标记的部分):

4418040-e10b58d607bf36dc.png
4418040-2676c5ef42ed28a7.png

Action中如何映射复杂对象?

对于上面的映射代码,我们还可以有另外一种等价的写法,就是将映射的属性定义到一个实体类中,这样我们就可以在action中添加该实体类型的参数,参考代码如下所示:

4418040-57b351d6556a4225.png

如何从一个Action中跳转至另外一个Action?

新增或修改功能完成后,需要跳转至数据列表页面,我们可以通过如下代码实现:

代码=> returnRedirectToAction(“ActionName”, “ControllerName”).

视图相关

在ASPX视图引擎中,可以使用asp服务器控件,但它的作用仅仅局限与生成html代码,而不推荐开发人员使用asp控件的事件.因此建议开发人员手工编写Html标记。

但是手写Html标记比较耗费时间,有没有更好的解决方案?答案就是使用Html辅助方法。

Html辅助方法

Html辅助方法的作用就是通过调用C#方法的方式,快速的生成相应的html标记.

Html辅助方法分为2大类:弱类型html辅助方法和强类型html辅助方法.

其中以For关键字结尾的都是强类型的辅助方法.下面的示例代码演示了二者的调用方式,以及生成的html源码。

4418040-4bb582fa809e8c0a.png
4418040-38454063f115e22a.png

注意:Html辅助方法有很多种重载形式,在开发过程中可以根据实际需要自行选择.比如要实现一个包含class\style\onchange属性和事件的单行文本框,可以参考如下代码:

4418040-3c01bc1b626fc56f.png

强调:如何使用HTML辅助方法生成form标记?

生成form标记的两个Html辅助方法为:Html.BeginForm()和Html.EndForm(),但他们在使用时和其他的Html辅助方法有所不同,下面的示例代码演示了它们的两种用法:

4418040-3020174edc9bfc02.png

如何在URL地址中传递参数?

场景一:将学生ID值映射到名称为id参数上

场景二:将学生ID值映射到名称为stuId参数上

场景三:url地址中包括stuId和name两个参数

这三种场景的使用代码如下所示:

4418040-93c97c63e3e30785.png
4418040-c238ae38ef346e93.png

其他

在实际开发过程中,一个小的功能模块就对应一个控制器.比如学生信息管理就是一个控制器,新增学生\修改学生\查询学生列表\删除学生都可以对应控制器中的Action.

常用Html辅助方法汇总

弱类型

强类型

单行文本框

Html.TextBox()

Html.TextBoxFor()

多行文本框

Html.TextArea()

Html.TextAreaFor()

密码框

Html.Password()

Html.PasswordFor()

复选框

Html.Checkbox()

Html.CheckBoxFor()

单选按钮

Html.RadioButton()

Html.RadioButtonFor()

下拉列表框

Html.DropdownList()

Html.DropdownListFor()

平铺列表框

Html.ListBox()

Html.ListBoxFor()

Label

Html.Label()

Html.LabelFor()

Form表单

Html.BeginForm()     Html.EndForm()

超链接

Html.ActionLink()

如何在视图中使用下拉列表

第一步:在action中构造好下拉列表中需要的数据,数据的类型为IEnumerable。

第二步:将构造好的数据放到Controller中的ViewData(ViewBag|TempData)属性中。

第三步:在视图view中使用Html.DropDownList辅助方法来生成下拉列表,而绑定的数据可以使用视图View中的ViewData来获取(换句话讲就是,Controller中放置到ViewData的数据,可以在视图View中的ViewData属性中提取)。

4418040-65b4eace5cc78e16.png

在视图中使用Html.DropDownList绑定Ienumerable

4418040-8dcafe4101f3d2a9.png

ASP.NET MVC进阶二

数据验证

数据验证的步骤

在模型类中添加与验证相关的特性标记

在客户端导入与验证相关的js文件和css文件

使用与验证相关的Html辅助方法

在服务器端判断是否通过服务器端验证

常用的验证标记

4418040-47462c7fa83843de.png

Required:非空验证

StringLength:验证字符串的长度

RegularExpression:正则表达式验证

Compare:比较两个字段的值是否相等

Range:范围验证

Remote:服务器验证(需要在controller中编写返回值为JsonResult的Action)

自定义验证标记

与验证相关的js文件

在ASP.NET MVC中提供了2套验证框架,分别是微软验证框架和jquery验证框架.默认启用了jquery验证框架.

注意:这些js文件的顺序不能颠倒;其中Site.css文件中定义了数据验证使用的样式.

4418040-145150a6d54fc3ab.png

验证相关的Html辅助方法

注意:1.必须使用Html.ValidationMessage()和Html.ValidationMessageFor()来显示验证失效的提示信息;

2.被验证的控件(如文本框\下拉列表框等)必须使用Html辅助方法生成才有效.

4418040-06fa4518668cea91.png

在服务器端判断模型是否通过了验证(服务器端验证)

页面中如果使用了MVC验证功能,那么在后台对应的Action中必须通过ModelState.IsValid判断是否通过了服务器端验证。只有通过了服务器端验证,才能执行其他的业务逻辑代码。

4418040-a919cf83a24c9d08.png

使用要点:

被验证的标记不能是纯html,必须使用相应的html辅助方法

例如:Html.TextBoxFor(model=>model.UserName),则验证有效;

,则验证无效;

必须使用相应的html辅助方法显示验证消息(Html.ValidationMessage)

被验证的控件必须放在有html.beginform的辅助方法内部(不能是纯标记).

客户端验证是不安全的,容易被禁用或欺骗,所以一定要在服务器端判断ModelState.IsValid是否为true.

Action与View的数据传递

在某些情况下,视图需要显示多份数据(比如被修改的员工信息\岗位列表\部门列表),但是Action在返回视图时,View()方法只能传递1个object类型的数据,那么其他的数据该如何传递?

ASP.NET MVC为我们提供了3种方案:ViewData\TempData\ViewBag.

重要提示:在Controller和View中都有这三个属性,在Controller的相应属性中存放了数据后,就可以在View的相应属性中提取这些数据。

ViewData

ViewData是一个字典类型.向里面添加数据时要以键值对的形式添加.

首先在Action中向ViewData中添加,其次就可以在View中访问ViewData来提取数据.

4418040-2c11764b5d8ceb01.png
4418040-5e6aa2d285b91924.png

ViewBag

ViewBag是一个动态类型的属性。在ASP.NET MVC 3.0中才加入了ViewBag属性.

动态类型:dynamic,就是可以事先不为其定义属性,通过直接给属性赋值的方式就可以随时为它添加新的属性.

下面的代码演示了向ViewBag中存放cls和stu两个对象,这两个对象分别放到了属性ClassInfo和StudentInfo中。

4418040-962ce1c1420a97d5.png
4418040-98d5e939a3a4c7b1.png

TempData

TempData的用法和ViewData很相似,都是字典类型.那他们的区别是什么?

ViewData中存储的数据仅仅对本次访问的当前action有效.而TempData中存储的数据,除了对本次访问的当前action有效外,还对本次访问的其他action有效(比如在Action1中向TempData中存放了数据,即使从Action1跳转至Action2后,仍然可以在Action2中从TempData提取数据。而ViewData和ViewBag都无法做到这一点).因此,TempData中数据的生命周期比ViewData|ViewBag中的生命周期要长.

ActionResult的实现类

在ASP.NET MVC模型中,Action用于响应用户的各种请求,比如向客户端返回html文档、html片段、json数据、纯文本、文件等结果。在ASP.NET MVC中通过在Action(行为或操作)方法中返回ActionResult类型的对象来实现向客户端响应上面的各种结果。

ActionResult类是个抽象类(抽象类无法直接被实例化).

ActionResult有很多实现类,不同的实现类用于响应客户端不同的结果。并且在Controller类中提供了大量的辅助方法,这些辅助方法可以快速的创建各种ActionResult.

在实际开发中,我们更多的是使用Controller类中的辅助方法,而非自己手工创建ActionResult的实现类。

ViewResult类

ViewResult类的作用是向客户端响应View目录中一个视图文件.

Controller类中提供了View()方法,来快速的返回一个ViewResult类对象.

ContentResult类

该类用于向客户端返回一段文本内容(纯文本\HTML...).

在Controller类中的辅助方法为:Controller.Content(string  content);

4418040-83bfb2d9ede96c9a.png

RedirectToRouteResult类

该类的作用是从当前action跳转至其他action.

在Controller类中的辅助方法为:RedirectToAction(“ActionName”,“ControllerName”)

RedirectResult类

在服务器端从当前Action跳转到其他URL地址.

在Controller类中的辅助方法为:Controller.Redirect(string  url)

4418040-012f25823da8bf3c.png

JsonResult类

该类用于向客户端返回一段Json格式的字符串.

在Controller类中的辅助方法为:Controller.Json(object  data);

注意:默认情况下mvc拒绝响应以get方式发送的ajax请求,需要使用JsonRequestBehavior.AllowGet。

4418040-ef19ae636274b791.png

PartialViewResult类

该类的作用是向客户端响应Views目录的一个分部视图文件。分部视图就是只包含html片段的视图文件.

在Controller类中的辅助方法为:Controller.PartialView();

4418040-6da32e4329526ed4.png

FilePathResult类

该类用于实现文件下载.

在Controller类中的辅助方法为:Controller.File(string  filePath,  string  contentType, string  fileName);

4418040-d8db3bf57e134f2f.png

EmptyResult类

该类用于向客户端响应一个空结果。

HttpStatusCodeResult类

该类用于向客户端相应指定的状态码.

HttpNotFoundResult类就是HttpStatusCodeResult的子类,表示404这一状态码。

下面的是一些常用的http状态码:

404:资源未找到(表示客户端请求服务器的资源地址不存在)

500:服务器内部错误(以5XX开头的表示服务器端在处理过程中出现的错误)

200:成功(表示客户端发送的请求被服务器成功的处理和响应)

其他

如何在aspx页面中导入命名空间?

方式一:在指定的页面添加<%@ Import Namespace=”命名空间”%>

4418040-f7a16e8f97c5973a.png

方式二:在项目的web.config配置文件中添加pages---namespaces----add

4418040-e75b6486c709670a.png

通过方式二添加的命名空间可以在所有的aspx页面中使用;而方式一添加的命名空间只能在当前页面中使用.

ASP.NET MVC进阶三

ASP.NET MVC中的AJAX应用

首先,在ASP.NET MVC中使用自带的ajax功能,必须要导入2个js文件(顺序不能颠倒):

4418040-118936dd0087fa32.png

ASP.NET MVC提供了2个常用的ajax辅助方法.

Ajax.ActionLink

该辅助方法用于在页面上生成具有ajax功能的超链接.

4418040-984c480ce13316dd.png

在该辅助方法中有一个AjaxOptions类型的参数,它包括如下属性:

Confirm:在发送ajax请求前,弹出确认对话框,该属性就是设置对话框中的提示消息

HttpMethod:用于设置请求的类型:Get|Post

UpdateTargetId:用于设置服务器响应的结果更新到页面中目标元素ID

InsertionMode:用于设置服务器相应的结果如何插入到被更新的元素中,它的值可以包括3种:

InsertionMode.Replace:用新值替换旧值(默认值)

InsertionMode.InsertAfter:将新值插入到目标元素的底部

InsertionMode.InsertBefore:将新值插入到目标元素的顶部

OnBegin:当执行ajax请求前,执行的js函数

OnSuccess:当执行ajax请求成功时,执行的js函数

OnFailure:当ajax请求失败时,执行的js函数

OnComplate:当ajax请求完成后,执行的js函数(不管请求失败或成功,都会执行)

LoadingElementId:在ajax请求期间,可以显示一段友好的提示,该属性用于设置提示元素的ID

LoadingElementDuration:提示元素在显示和隐藏时,可以执行一段动画,该属性用于设置提示元素的动画执行时间

4418040-786e056599690e83.png
4418040-f9740ad0ac24623b.png

Ajax.BeginForm

该ajax辅助方法用于以ajax方式提交表单数据.

4418040-03ee8c4fb6fef46c.png

其他

如何在页面中加载分部视图?

方式一:调用Html.RenderPartial(“viewName”)

4418040-72fe37fc2003b299.png

方式二:调用Html.RenderAction(“actionName”)

何时使用RenderAction,何时使用RenderPartial?

如果需要向视图中传递数据,而原视图中又没有需要传递的数据时,就需要调用RenderAction.

注意:Html.RenderPartial有多种重载形式,下面列举它的2种常用形式:

Html.RenderPartial(“分布视图的名称”)

Html.RenderPartial(“分部视图的名称”,  object模型数据)

如何从服务器获取一段json格式的字符串?

服务器的Action方法返回值类型为JsonResult,并且在方法内部可以调用Controller.Json()辅助方法.

ASP.NET MVC进阶四

ASP.NET MVC中使用母版页

ASPX视图引擎的母版页功能

Aspx视图引擎中母版页的用法,在webform模型和Mvc模型中,都是一样的.

Aspx视图有2个很重要的标记:

asp:ContentPlaceHolder标记

asp:Content标记

asp:Content用于替换母版页中的asp:ContentPlaceHolder.

在母版页中应该根据实际需要,定义多个asp:ContentPlaceHolder,而非默认的2个.

注意:在mvc中添加母版页时一定要选择MVC3视图母版页,而不能选择下面的母版页和嵌套的母版页.

4418040-9a5cbda36b37e245.png

在MVC中,没有提供嵌套的母版页模版文件,需要用户自行定义:

4418040-a87239c215e422a1.png

Razor视图引擎

Razor视图引擎的宗旨:将键盘的敲击次数降到最低

Razor基本语法

定义变量:

4418040-7b089d6e62217c76.png

输出变量的值:

4418040-42ce2844cf8b86e6.png

如何在页面中原样输出@符号

4418040-3224614cb6b374ce.png

如何在页面中输出hisageis5.

4418040-e63523fdcf67ddb5.png

if-else的写法:

4418040-7b674f9a1b7bef14.png

for|foreach的写法:

4418040-27f5ef6f3914c233.png

注意:如果在for循环中需要进行条件判断,不需要在if前加@符号.

4418040-3935806d396c67b3.png

Html辅助方法的使用:

注意:@Html.TextBox()后面不能有分号.

4418040-d3c55a866a10c91b.png

在razor视图页面中定义数据模型的类型信息:

4418040-4d9334577451809f.png

在razor视图页面中加载分部视图或加载其他action:

注意:@{}里面的分号不能省略.

4418040-fe4f3704a285679d.png

在Razor视图中如何生成form标记:

4418040-1567946bfd4654db.png

Razor视图引擎中母版页的用法

Razor视图中母版页功能称之为布局页.

Razor视图的布局页文件名必须以下划线_开头.

Mvc项目中如何添加Razor布局页:

4418040-1a1c5ec14f6e0234.png

Razor视图中布局页的默认代码如下:

4418040-88231e75ac664260.png

@RenderBody的作用同aspx视图中的asp:ContentPlaceHolder相似,用于加载内容页.

Razor视图引擎中,如何让内容页继承布局页?

在内容页中使用Layout属性指定要继承的布局页.代码如下:

4418040-0e0991f0395be027.png

其中ViewBag.Title是用于设置布局页中的页面title.

如果不需要内容页继承布局页,只需要将Layout属性的值设置为null.

如果没有将Layout设置为null,而是将其删除掉,那么内容页仍然有可能会继承一个默认的布局页.因为在Views目录中存在一个名称为:_ViewStart.cshtml的文件,该文件是视图的默认配置文件,它里面设置了默认的布局页面,示例代码如下:

4418040-f2859f992555ad6a.png

嵌套的布局页,在mvc中也没有提供默认的模版文件,需要用户自行添加.

Html.RenderSection()

该辅助方法用于加载html片段.该段Html代码可以是本页面中定义的,也可以是内容页面中定义的.

示例代码如下:

4418040-1b8afe282b23b51a.png
4418040-76401a8274d9053d.png

Razor视图中如何自定义辅助方法

使用@helper来定义辅助方法.示例代码如下:

4418040-538de60d038d54e1.png

在ASP.NET MVC中如何实现模块化开发?

对于一个系统而言,往往包含前台和后台两大块.比如,前后台都包含用户登录功能,它们的控制器都叫Account,对应的登录方法也都叫Login,那么如何区分哪个是后台的,哪个是前台的???

ASP.NET MVC在2.0中就添加了Area(区域)的功能,用来解决上面的问题.

通过Area功能可以将一个大的软件项目划分为N个功能模块,每个功能模块中都可以相同名称的控制器和视图文件.

首先,右击项目,在弹出的右键菜单中选择----添加----区域

4418040-4cd0913368b28ded.png

ASP.NET MVC数据分页

Aspx视图引擎和razor视图引擎中如何实现分页功能

主要使用了第三方的一个分页控件MvcPager.dll

分页功能分三步实现:

第一步是在项目中导入MvcPager.dll,并导入相应的命名空间:Webdiyer.WebControls.Mvc

第二步是在Action中组织要分页的数据

4418040-5417d6667666ef3d.png

第三步是在页面中生成页码信息

4418040-e8d777a3cda527f8.png

注意:MvcPager.dll包括非ajax和ajax两种使用模式.ajax模式下需要使用Ajax.Pager辅助方法.

其他

如何在页面中加载静态文件(图片\css\js)?

使用Url.Content(“filePath”)方法.

4418040-0bb5b2f56441775d.png

Aspx视图引擎

4418040-55969ae2e60ebad3.png

Razor视图引擎

添加新的Area后,访问报错的解决办法:

4418040-3a3c7dfa5c9b6add.png

修改Global.ashx文件中注册的默认路由

4418040-0de6ae5b41909b48.png

ASP.NET MVC进阶五

重写Controller类的虚方法

OnActionExecuting\OnActionExecuted

OnActionExecuting:该方法在执行目标Action之前被调用

OnActionExecuted:该方法在执行目标Action之后被调用

4418040-59bcfbf1f1a71cc3.png

OnResultExecuting\OnResultExecuted

OnResultExecuting:该方法在执行目标视图之前被调用

OnResultExecuted:该方法在执行目标视图之后被调用

OnAuthorization

该方法用于验证用户的授权信息.因此如果要进行身份的验证,应该在该方法中进行.

4418040-eb7fc438ad3b6a9f.png

OnException

当访问Action出现异常时,该方法会自动被调用.

下面的示例代码演示了如何自动捕获系统异常,并将异常信息记录到日志文件中.

4418040-82e7fb8f6875d187.png

ASP.NET MVC中的过滤器

过滤器是指在用户发送请求时,MVC框架可以对用户的请求进行拦截,根据特定的条件对这些请求进行筛选过滤.

ASP.NET MVC中提供了下面几种过滤器,他们的作用和上面将的重写方法功能类似,但是这些过滤器是全局的,默认对所有的Action请求都有效.

IAuthorizationFilter

授权过滤器

4418040-f954521dda81491a.png

IActionFilter

行为过滤器

4418040-2fd84ba36f43a0db.png

IResultFilter

结果过滤器

4418040-faa78c6b81d36d30.png

IExceptionFilter

异常过滤器

4418040-60a049312d8cfdb1.png

注意:过滤器需要在Global.asax文件中进行注册后方能起效.

4418040-8548ae05d97ef45c.png

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

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

相关文章

第三次作业——结对编程

成员&#xff1a;031302439 031302415 本次实践中我们是用phpmysql来实现所需功能的&#xff0c;其中使用到的软件有PowerDesigner和WampServer 一. PowerDesigner使用过程 1. 运行程序&#xff0c;进入主界面&#xff0c;新建一个Model&#xff0c;设置DBMS属性。我们…

NET比较常用的性能优化技巧

现在很多客户也慢慢开始注重网站的性能了&#xff0c;同时有很多运营网站的公司也不像以前那样特别在意网站是否非常漂亮&#xff0c;而把更多的精力放在了网站性能优化上面&#xff0c;提供更快更稳定的浏览速度&#xff0c;在这个基础上面进行网站功能上的扩充和完善&#xf…

js修改mysql数据库数据_Node.js操作mysql数据库增删改查

关于node.js操作mysql数据库的相关介绍请阅读全文吧。下文介绍的非常详细&#xff0c;具体内容如下所示&#xff1a;安装mysql模块npm install mysql数据库准备mysql server所在的机器IP地址是192.168.0.108&#xff0c;登录账户就用root123456在mysql中创建test数据库在test数…

Win10 注册IIs4.0的解决方案

随着Win10的出现&#xff0c;越来越多的人装上了Win10&#xff0c;尤其是程序员&#xff0c;由于Win10是一个新的操作系统&#xff0c;但现有软件的兼容性等各方面都是未知&#xff0c;难免会存在很多坑&#xff0c;就拿IIS来说&#xff0c;我刚装完win10系统&#xff0c;然后装…

DotNet 资源框架整理

目录 框架 应用模板&#xff08;Application Templates&#xff09; 人工智能&#xff08;Artificial Intelligence&#xff09; 程序集处理&#xff08;Assembly Manipulation&#xff09; 资源&#xff08;Assets&#xff09; 认证和授权&#xff08;Authentication an…

oracle9

约束 维护数据的完整性 数据的完整性用于确保数据库数据遵从一定的商业和逻辑规则&#xff08;比如年纪不能为-1&#xff0c;性别不能为非男女&#xff09;&#xff0c;在oracle中&#xff0c;数据完整性可以使用约束、触发器、应用程序&#xff08;过程、函数&#xff09;三种…

公司来了个傻员工,改变了所有聪明的员工

公司来了个新员工&#xff0c;有点土&#xff0c;但很听话。其它员工都把所有得工作堆给他做&#xff0c;新员工不介意&#xff0c;默默地帮他们都完成。主管看到他勤快&#xff0c;叫他帮忙跟着做很多事情&#xff0c;可他一点都不介意&#xff0c;可他帮主管做事都是义务的。…

mysql 交叉连接的用法_sql中内连接与外连接与交叉连接用法

文章介绍了在mysql中的内连接与外连接与交叉连接用法与举例说明了&#xff0c;有需要了解的朋友可以参考一下下。(一)内连接SQL INNER JOIN 关键字在表中存在至少一个匹配时&#xff0c;INNER JOIN 关键字返回行。内连接查询操作列出与连接条件匹配的数据行&#xff0c;它使用比…

使用JAXP对XML文档进行DOM解析

一、XML解析方式分为两种&#xff1a;dom和sax dom&#xff1a;&#xff08;Document Object Model,即文档对象模型&#xff09;是W3C组织推荐的解析XML的一种方式。sax&#xff1a;&#xff08;Simple API for XML)不是官方标准&#xff0c;但它是XML社区事实上的标准&#xf…

tfpose与openpose区别_人体姿态识别--Openpose+Tensorflow

目的复现代码完成视频中的人体姿态识别复现过程视频来源&#xff1a;https://www.youtube.com/watch?vcMhWNGBW1Xg​www.youtube.com视频动图检测结果下载的画质本来就不高&#xff0c;再加上两次录屏&#xff0c;画质比较渣。首先确认工程所需要的依赖&#xff1a;python3ten…

让 步( 写的太好了!)

一个不懂得为亲人让步&#xff0c;为朋友让步&#xff0c;为爱人让步&#xff0c;为合作伙伴让步的人&#xff0c;是缺乏胸襟的人&#xff0c;最无能和不可交的人。试问一个连自己人都斤斤计较的人可交往吗&#xff01;长不大的人最重要的标志&#xff0c;就是跟自己人&#xf…

Android学习手记(2) Activity生命周期

1. 单个Activity的生命周期 当只有一个Activity的时候&#xff0c; 首先执行onCreate->onStart->onResume。 这时&#xff0c; 窗口便显示在屏幕上了。 然后我们按返回键退到桌面的时候&#xff0c;便执行onPause->onStop。这时候&#xff0c; 如果我们在最近使用程序…

墙角的父亲(一篇让千万人潸然泪下好文)

前言&#xff1a;拥有思想的瞬间&#xff0c;是幸福的&#xff1b;拥有感受的快意&#xff0c;是幸福的&#xff1b;拥有父爱也是幸福的。帮老乡大将搬家。在整理一堆旧书籍的时候&#xff0c;大将蹲在地上呜呜大哭起来。大将打开的是一个笔记本&#xff0c;上面记着日常开支&a…

react遍历对象的值_React 原理之实现 createElement 和 render 方法

前言在 React 中&#xff0c;我们都知道可以写 jsx 代码会被编译成真正的 DOM 插入到要显示的页面上。这具体是怎么实现的&#xff0c;今天我们就自己动手做一下。实现 createElement 方法这个方法平时开发我们并不会用到&#xff0c;因为它是经 babel 编译后的代码&#xff0c…

成熟就是深谙世故却不世故

对于一个打小在农村长大的孩子而言&#xff0c;被夸作“早熟”是一种荣耀。它意味着你足够懂事&#xff0c;可以分担父母的一些忧愁。但这也是一个怪圈&#xff0c;因为你常要背负这种光环去做一些超乎自己年龄的事&#xff0c;强迫自己变得坚忍、不可战胜。那年&#xff0c;我…

什么叫工作到位?很深刻!

1、汇报工作说结果不要告诉老板工作过程多艰辛&#xff0c;你多么不容易&#xff01;老板不傻&#xff0c;否则做不到今天。举重若轻的人老板最喜欢&#xff0c;一定要把结果给老板&#xff0c;结果思维是第一思维。2、请示工作说方案不要让老板做问答题&#xff0c;而是要让老…

react 给一个引用的组件添加新属性_高阶组件在React中的应用

高阶组件的定义接受React组件作为输入&#xff0c;输出一个新的React组件。概念源自于高阶函数&#xff0c;将函数作为参数&#xff0c;或者输出一个函数&#xff0c;如map&#xff0c;reduce&#xff0c;sort。 用haskell的函数签名来表示&#xff1a; hocFactory:: W: React.…

好好的活,简简单单过!

生命&#xff0c;每个人只有一次&#xff0c;或长或短&#xff1b;生活&#xff0c;每个人都在继续&#xff0c;或悲或欢&#xff1b;人生&#xff0c;每个人都在旅途&#xff0c;或起或伏。人无完人&#xff0c;事无完美&#xff0c;有些小人&#xff0c;你不须计较&#xff0…

lunixs 退出mysql_MySQL的基本操作

1、数据库登录格式&#xff1a;mysql -h主机地址 -u用户名 -p用户密码 -P端口 -D数据库 -e “SQL内容”[rootwulaoer ~]# mysql -uroot -p2、修改密码格式&#xff1a;mysqladmin -u用户名 -p旧密码 password 新密码[rootwulaoer ~]# mysqladmin -uroot password 123456注&…