net安全(二)——asp.net

1 环境搭建

        我这里用的是VS2019和C#版本。

1.1 创建asp.net项目

        (1)建一个空的模板项目

        (2)添加Web窗体(Web Forms)

        代码如下

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="aspNetLearing.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
        </div>
    </form>
</body>
</html>
  • AutoEventWireup:指示页面的事件是否自动绑定
  • CodeBehind:指定包含与页关联的类的已编译文件的名称
  • Inherits:页面继承的代码隐藏类
  • runat="server":表示是一个服务器空间
  • .aspx.cs文件:处理请求逻辑,类似于Service+Mapper
  • aspx.designer.cs文件:存放空间的配置信息,用于做控制初始化工作

        (3)简单入门案例


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="aspNetLearing.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <!-- ID为别名  Text为内容 Label标签控件-->
            <asp:Label ID="Label1" runat="server" Text="Hello"></asp:Label>

        </div>
    </form>
</body>
</html>

        运行

        如果在创建窗体时点击了https,可以通过右击项目→属性→web→项目URL来修改

2 常见服务器控件

        asp.net支持多种控件,有点像jsp中的EL等表达式语言,简化前端开发,便有数据传递。

2.1 Label控件

        在上面的案例中,已经使用了Label标签控件:只要是将静态文本输出。但这种是固定值输出,现在使用.aspx.cs文件来修改Label空间Text的内容。

        重载Page_Load(),实现对页面的加载:

2.2 TextBox文本框

        TextBox相当于前端标签<input type=text>、<input type=password>、<textarea>

        常用属性:TextMode:MultiLine、Password和SingleLine

        方法:OnTextChanged

        代码如下,WebForm2.aspx:

        WebForm2.aspx.cs:

2.3 Button按钮控件

        相当于<input type="submit">、<input type="Button">、<input type="reset">

        方法:

  • CommandName:按钮被但单击时,该值用来指定一个命令名称
  • CommandArgument:按钮被但单击时,该值用来传递给Command事件
  • OnClick:引发Click事件
  • OnCommand:引发Command事件

        事件:Click、Command

        Button控件有多种:LinkButton(超链接按钮)、ImageButton(图形化按钮);此外还有RadioButton(单选按钮),但该按钮的方法和事件为:OnCheckChanged\CheckChanged

 2.4 其他按钮

        复选框:<asp:CheckBox ID="cb1" Text="cb" runat="server" OnCheckedChange="Checked_Change"></asp.CheckBox>

        列表:

<asp:BulletedLisrt>
    <asp:ListItem>列表项</asp:ListItem>
</asp:BulletedLisrt>    

 2.5 文件上传控件

        

3 内置对象

        ASP.NET提供了八个内置对象。

        常用内置对象:

  • Page的对象
  • Response对象
  • Request对象
  • Server对象:提供与Web相关的方法和属性

        状态管理对象:

  • Cookie对象:
  • Seesion对象
  • Application对象
  • ViewState对象

        其他对象JSP基本也有,这里主要讲ViewState对象

3.1 ViewState对象介绍

        ViewState是类Control中的一个域,其他所有控件通过继承Control来获得了ViewState功能。它的类型是system.Web.UI.StateBag,一个名称/值的对象集合。同时,ViewState被称为视图状态,就是当前运行页面的一种状态。通常用来保存Web页面信息及所含控件的值。ViewState是ASP.NET中用来保存WEB控件回传时状态值一种机制。在WEB窗体(FORM)的设置为runat="server",这个窗体(FORM)会被附加一个隐藏的属性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的状态值。

        默认情况下,页面和空间都是启用ViewState。可将控件的属性EnableViewState设为false实现某个控件的ViewState禁用;如果是页面禁用ViewState就在@Page指令后添加属性 EnableViewState="false"。

        当请求某个页面时,ASP.NET把所有控件的状态序列化成一个字符串,然后做为窗体的隐藏属性送到客户端。当客户端把页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值。

3.2 使用

        内置对象就是用来数据属性的,只不过是数据的内容和对象作用域不同。

        数据保存进ViewState对象:ViewState[name] = 表达式

        读取ViewState对象数据:ViewState[name] .aspx

        .aspx代码:

        aspx.cs代码:

4 SQL Server基础及程序访问数据库

4.1 SQL Server基础

        SQL Server也称为MSSQL,在2019的版本提供了四个系统数据库,分别为master数据库、model数据库、msdb数据库、tempdb数据库。

  • master数据库:记录系统信息,如所有登录账号、系统配置、其他数据库信息、数据库文件位置等;
  • model数据库:用来创建所有数据库模板,创建新数据库时,新数据库的第一部分通过复制model数据库中的内容创建;
  • msdb数据库:攻SQL Server代理程序调度警报、作业及记录操作。
  • tempdb数据库:保存所有的临时表和临时存储过程。

        SQL Server的语法的MySQL基本一致的。

4.1.1 下载安装

        安装SQL Server2019和Microsoft SQL Server Management Studio 18。

4.1.2 新建、删除数据库

        可以直接用工具建,或者使用T-SQL语句:CREATE DATABASE dataBaseName;删除数据库就是使用Drop DATABASE dataBaseName;

4.1.3 新建/删除/修改 表格

Use MyTestASPNETDB
GO
CREATE  TABLE StudentInfo
(
  id int PRIMARY KEY IDENTITY(1,1) NOT NULL,
  Name char(20) NULL,
  Phone char(20) NULL
)
GO
#修改
ALTER
#删除
DROP

4.1.4 操作表数据

# 插入
INSERT INTO table_name [(colunm_list)] VALUES(value_list);
# 删除
DELETE FROM table_name [WHERE condition];
# 更新
UPDATE table_name SET colunam_name = new_value[,...] [WHERE condition]; 

# 查询
SELECT *
FROM source_tables
WHERE condition1
GROUP BY condition2
HAVING  condition3
ORDER BY xx
LIMIT count
OFFSET count

4.2 程序访问数据库

4.2.1 ADO.NET概述

        ADO全称ActiveX Data Objects(ActiveX数据对象),作用是在ODBC和OLE DB接口之上建立统一的数据库访问编程模型。ADO.NET就是.NET平台上“标准”的数据库访问编程模型,它支持诸如SQL Server和XML等数据源以及支持OLE DB和ODBC接口的数据源,并提供一致的访问。

4.2.2 .NET Framework的数据提供程序

        .NET Framework中的数据提供程序是一组用于与各种数据源进行交互的组件,包括:连接数据库、执行命令和查询结果。包括以下四个对象:

  • Connection对象:负责处理与数据库的连接;
  • Command对象:表示在数据源上执行语句或执行存储的过程;
  • DataReader对象:用于从数据与中获取需要数据流。只能通过Command.ExecuteReader()来创建该对象;
  • DataAdapter对象:Connection和数据库之间的桥梁,负责通信。

        .NET Framework支持多种数据库,其中**using System.Data.SqlClient;**就对应SQL Server,此时对应的四个对象分别为:SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter。、

4.2.3 数据库连接操作

4.2.4 使用Command执行数据库命令

# 查询
conn.Open();
String sql = "Selecet count(*) from StudentInfo";
SqlCommand sqlcmd = new SqlCommand(sql, conn);
int count = (int)sqlcmd.ExecuteScalar();

# 插入
sqlcmd.ExecuteNonQuery();

4.2.5 使用DataReader读取数据

        Command.ExecuteReader()回返回一个DataReader实例。一般会结合GridView控件在前端展示数据

conn.Open();
String sql = "Select * from StudentInfo";
SqlCommand sqlcmd = new SqlCommand(sql, conn);
SqlDataReader dr = sqlcmd.ExecuteReader();
while (dr.Read())
{
    Console.WriteLine("xxxx");
}

4.3 使用DataSet来访问数据库

        DataSet是一个数据表的集合,它可以独立于任何数据源存在。它提供了对数据的内存中表示,可以与XML数据集成,并且可以同步到数据源。

        DataSet在System.Data.DataSet命名空间下。DataSet常用子类对象有:DataTable、DataColumn、DataRow、Constranint(决定能进入DataTable的数据)、DataRelation(描述不同DataTable的关联)。DataSet中的两个基本对象:DataTableCollection和DataRelationCollection。

        DataTableConllection包含多个DataTable,DataTable由DataColumn集合、DataRow集合和Constraint组成;DataRelationCollection包含对个DataRelation。

4.3.1 创建DataSet对象

{
  DataSet ds = new DataSet();
  String name = ds.DataSetName();    //获取DataSet实例的名字
  bool iscs = ds.CaseSensitive;      // 是否区分大小写
  int c = ds.Tables.Count;           // DataSet中表的个数
}

4.3.2 填充DataSet

SqlConnection conn;
protected void Page_Load(object sender, EventArgs e)
{
    String str = "Server=LAPTOP-6L06T2VR;" + "Database=MyTestASPNETDB;" + "Integrated Security=true;";
    //Server代表数据库实例,也就是数据源; Database代表数据源中的具体数据库;
    //Integrated Security=true就是使用用户凭证登录,false需用账密登录
    conn = new SqlConnection();
    conn.ConnectionString = str;
}

protected void Button_Click(object sender, EventArgs e)
{
    String sql = "SELECT * from StudentInfo" + "SELECT * from Student";
    SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
    DataSet ds = new DataSet(); 
    adapter.Fill(ds);
    
/*    String sql = "SELECT * from StudentInfo";
    SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
    DataSet ds = new DataSet(); 
    adapter.Fill(ds, "table"); */

}

4.4 数据绑定控件

数据绑定是将显示的数据绑定到UI控件。分为静态绑定和动态绑定。

常见绑定控件有:

  • GridView:以表格形式显示、编辑、删除多种不同的数据源中的数据;
  • Reapter:生成各个子项的列表,具体的显示由自己编写;
  • DataList:以自己定义的格式显示各种数据源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值