
是一种基于超文本方式工作的信息系统,能够处理声音,图像,视频,文字,提供了以“超文本”、“超媒体”,“超文本传输协议”为主的信息资源
二、B/S?
Browser/Server:浏览器/服务器结构,在这种结构中,客户端不需要开发任何用户界面,而统一采用浏览器的显示方式,将业务处理交给了服务器。
三、C/S?
Client/Server:客户端/服务器结构,客户端需要安装专用的客户端软件,而且服务器通常采用高性能的PC站或者工作站,并采用大型数据库(Oracle,SQL Server等)
四、B/S和C/S的比较
1.开发和维护成本方面:C/S结构的开发和维护成本都比B/S高,因为每当系统更新或者出错的时候,C/S结构要对每一个客户端进行更新、修改;B/S结构就不用了,直接对服务端进行更新修改,然后所有用户通过浏览器访问的页面都是经过了更新的。
2.客户端负载:C/S的客户端不仅负责与用户的交互,收集信息,还需要完成对数据库、文档等信息的处理工作。B/S端则是把事务处理交给了服务器,由服务器进行处理,浏览器只负责显示。这明显表明B/S的客户端负载更低,性能更好。
3.安全性:C/S适合专人使用的系统,B/S适合多人使用的系统,所以C/S结构的安全性更高
五、CSS简介
答:级联样式表,用来定义网页中控件、字体、图像等元素的样式,例如字体的颜色。有两种使用方法:
1.直接在网页中使用:
2.引入外部样式:
六、javascript简介
答:是一种基于事件和对象驱动的具有安全性的解释型脚本语言,不仅可以编写客户端的脚本程序,还可以编写服务器端的脚本程序。有两种使用方法:
1.直接在网页中使用:
2.引入外部js:
七、HTTP
Hyper Text Transfer Proctocal,超文本传输协议:是浏览器和服务器之间的应用层通信协议。HTTP协议是基于TCP/IP的协议,它不仅需要能正确的传输超文本,还要求能控制传输超文本中某一部分的内容,还要求能控制显示超文本中的某一部分内容
八、web系统三层架构
三层架构是指系统的业务应用划分为:逻辑层、表示层、数据层,使得系统更有利于开发、维护、扩展,实现了高内聚,低耦合的目标。
为什么使用?优点?
1.从开发角度和应用角度来看:三层架构比二层架构,单层架构具有更大的优势,适合团队合作,每个人都有自己的分工,协同合作使工作效率倍增。而且只需要少数人对系统有全面的了解,从一定程度上降低了开发的难度。
2.可以更好地支持分布式计算:逻辑层的应用程序可以在多个机器上运行,充分利用网络的计算功能,分布式计算潜力巨大。
3.安全性高:这是三层架构最大的优点,比如必须得经过控制层才能访问数据层(数据安全性),减少了入口点,提升系统安全性。
九、什么是MVC?
(一)Model-View-Controller :mvc包含三个控件:
1.Model:模型层,实体类的定义,包含它的属性、方法等
2.View :表示层,展示数据,用户可以看到并与之交互的界面。
3.Controller:控制层,连接模型层和数据层,用户通过View层发送请求,Controller层调用Model层进行处理,得到结果数据,再次在View层上展示出来
(二)MVC原理:
mvc架构使得程序的输入、处理输出强制性分离,使得软件的可读性、可维护性、可扩展性、可封装性得到了显著提高,mvc包含三个控件
(三)mvc优点:
1.提高代码重用率:多个视图能共享一个模型,因为已经将数据和业务从表示层分离出来,所以可以最大化的重用代码。
2.提高程序的可维护性、可扩展性、可读性、可封装性:各部分相互,互不影响,因为控制层和视图层相分离,所以很容易修改数据层和业务层。
3.有利于团队开发:因为有良好的项目框架,可以减少编码工作量,部分模型(model)和存储过程一般可以用工具自动生成
十、asp.net的优势:
1.高效的运行性能:采用页面脱离代码技术,以及采用缓存机制,提高性能
2.简易性、灵活性:很多asp.net功能都可以扩展,可以轻松的将自定义功能添加到程序当中
3.可管理性:asp.net中新增的功能使得管理程序更加方便
4.开发效率:内置大量服务器控件,可高效快速的创建asp.net网站
十一、asp.net网站的运行原理
asp.net网站运行时,当一个HTTP请求被IIS服务器接受到以后,IIS首先通过客户端请求的页面类型为其加载相应的dll文件,然后在处理过程中将这条请求发送给能处理这条请求的模块(mvc中的模块层model)。在asp.net中,这个模块叫做HTTPHandler(HTTP处理程序组件),之所以aspx这样的文件可以被服务器处理,就是因为在服务器中有专门的HTTPHandler去处理aspx文件。
当然,在发送到HttpHandler之前,还要经过HttpModule,有四个原因:一、为了某些必须得过程;二、安全性;三、为了提高效率;四、为了用户能在更多的环节上进行控制,增加用户的控制能力。
十二、asp.net网站的运行机制
Http请求-->IIS服务器(由于安装.NET FrameWork时,注册了ISAPI扩展功能(aspnet_isapi.dll))-->asp.net
接下来asp会判断站点是否是第一次被访问,如果是第一次被访问,则运行初始化工作(如加载bin目录中的dll动态链接库等)。asp运行时还要创建HttpContext上下文实例响应HttpTextWriter实例,然后就是寻找合适的HttpHandler,并等待其经过处理然后返回的结果。最后还要一些后续工作(如保存session),再通过IIS把响应结果返回给客户端。
十三、.net框架,两个主要的组件
1.公共语言运行库(Common language Runtime )(CLR):是所有.net程序的执行引擎,为每一个.net程序准备了一个、安全、稳定的执行环境,包括内存管理、安全控制、代码执行、代码完全验证.....
2.类库(Class Library):是所有.net程序的一个公共的基础类库,程序开发人员只要思考程序的逻辑部分,其他(如数学计算、数据库操作)等各种复杂功能,利用这些类库实现即可。
十四、asp.net内置对象包括:
1.request:响应对象,是HttpRequest类的一个实例,它提供对当前页请求的访问,包括标题,Cookie...
2.response:请求对象,将数据从服务器发送回浏览器,它允许将数据作为请求的结果发送至浏览器中,并提供有关相应的信息。
3.application:全局应用对象,用于共享应用程序级信息,即多个用户共享一个Application对象
4.session:会话对象,session对象和application对象有些类似,都是用来存储跨网页程序的变量或者对象。
5.cookie:保存信息对象,用于保存浏览器访问的服务器页面,也可以用它存放非敏感的用户信息。
6.server:服务器信息处理对象,提供对服务器上属性和方法的访问,用于访问服务器上的资源
7.Page
7.Request.From和Request.QueryString对应的是Form提交时的两种不同提交方法 _取得客户端在FROM表单中所输入的信息方法和 _从查询字符串中读取用户提交的数据方法
8. Application提供两个事件 _ ApplicationOnStart Application开始的时候调用该事件__ Application_OnEnd _____ Application结束时调用该事件
大题:
一、在iis上发布asp.net程序:使用Vs2008的IDE自带的发布功能, 进行发布操作.
a. 在经过VS调试且运行正常的ASP.NET网站项目中, 右键点击网站项目, 选择"发布网站"后点击"目标路径"后便的Browser按钮(就那个...按钮), 将弹出一个"发布网站"对话框.
b. 在弹出的对话框中, 先点击左侧的"本地IIS", 然后在右侧的"资源管理器"上方, 点击"创建新Web应用程序"后(也可以点击"创建虚拟目录"), 输入应用程序的名字, 之后一路ok就可以了
二、编程题:关于DataTable、DataView(10分)
1.简述 DataSet,DataTable,DataView三者之间的关系。
(1)一个DataSet对象包括一组DataTable对象和DataRelation对象,其中,每个DataTable对象由DataColumn、DataRow和DataRelation对象组成。
(2)在ADO.NET中,DataTable对象用于表示DataSet中的表。DataTable表示一个内存内关系数据的表
(3)在ADO.NET中,DataView对象表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图;另外,可以自定义DataView来表示DataTable中数据的子集。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
2.连接数据库并调用指定存储过程
// 连接数据库
SqlConnection conn =new SqlConnection(@"server=.;
database=ccc;Integrated Security=True");
SqlCommand cmd = new SqlCommand("p_student", conn);
// 指定类型为存储过程
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
// 数据集
DataSet ds = new DataSet();
sda.Fill(ds);
this.dataGridView1.DataSource =
ds.Tables[0];
3.手动构造DataTable对象 ,并显示数据
private void button1_Click(object sender, EventArgs e)
{
#region 手动构造DataTable对象 数据表
DataTable dt = new DataTable("student");
// 产生列 id
DataColumn col = new DataColumn("id");
// 添加到表的列集合中
dt.Columns.Add(col);
// 产生列 name
DataColumn colname = new DataColumn("name");
// 添加到表的列集合中
dt.Columns.Add(colname);
// 产生列 sex
DataColumn colsex = new DataColumn("sex");
// 添加到表的列集合中
dt.Columns.Add(colsex);
// 产生数据 保存到dt中
DataRow row = dt.NewRow();
// 赋值 1 张三 男
row[0] = 1;// 等价于 row["id"]=1;
row[1] = "张三";
row["sex"] = "男";// 等价于 row[2]="男";
// 添加到集合中
dt.Rows.Add(row);
DataRow row2 = dt.NewRow();
// 赋值 2 张三 男
row2[0] = 2;
row2[1] = "李四";
row2["sex"] = "女";
// 添加到集合中
dt.Rows.Add(row2);
#endregion
#region DataView对象 数据视图对象
// 主要用于对DataTable表中数据的筛选和排序
DataView dv = new DataView(dt);
// 数据筛选 where
// 查询所有姓李的学生信息
// dv.RowFilter = "name like '李%'";
// 排序 order by 列名 asc/desc 升序/降序 默认升序
dv.Sort = "id desc";
#endregion
// DataSet 内存数据库 数据集
DataSet ds = new DataSet();
// 将数据表添加到数据库中
ds.Tables.Add(dt);
// 显示到界面上
this.dataGridView1.DataSource = ds.Tables[0];
}
4.构造DataSet对象,并显示数据
private void button1_Click(object sender, EventArgs e)
{
// 构造DataSet对象
DataSet ds = new DataSet();
#region 构造一个DataTable对象
DataTable dt = new DataTable("stu");
// 产生几个列
DataColumn col = new DataColumn("id");
// 添加到表中
dt.Columns.Add(col);
DataColumn col2 = new DataColumn("name");
// 添加到表中
dt.Columns.Add(col2);
DataColumn col3 = new DataColumn("sex");
// 添加到表中
dt.Columns.Add(col3);
// 数据行
DataRow row = dt.NewRow();
// 给行中的数据赋值
row[0] = "1";// 等价于 row["id"] = "1";
row[1] = "张三";
row[2] = "男";
// 将数据行添加到dt中
dt.Rows.Add(row);
DataRow row2 = dt.NewRow();
// 给行中的数据赋值
row2[0] = "2";// 等价于 row["id"] = "2";
row2[1] = "李四";
row2[2] = "男";
// 将数据行添加到dt中
dt.Rows.Add(row2);
#endregion
// 将表dt添加到ds中
ds.Tables.Add(dt);
// DataView对象
DataView view = new DataView(dt);
// 排序
//view.Sort = " id desc";// asc/desc 升序/降序 默认升序
// 筛选
view.RowFilter = "len(name)=2 ";//"name like '张%'";
// 显示数据到DataGridView中
this.dataGridView1.DataSource = view;
}
5.通过sql语句查询数据库,并通过datagridview显示数据
private void button1_Click(object sender, EventArgs e)
{
// 查询数据库
SqlConnection conn =new
SqlConnection(@"Data Source=.;
Initial Catalog=CCC;
Integrated Security=True");
// 查询语句
string sql = "select * from student";
// 适配器对象
SqlDataAdapter sda =
new SqlDataAdapter(sql, conn);
// 数据集对象
DataSet ds = new DataSet();
sda.Fill(ds);
this.dataGridView1.DataSource =
ds.Tables[0];
}
6.通过存储过程查询数据库,并通过datagridview显示数据
private void button2_Click(object sender, EventArgs e)
{
// 查询数据库
SqlConnection conn = new
SqlConnection(@"Data Source=.;
Initial Catalog=CCC;
Integrated Security=True");
// 查询语句
// 适配器对象
SqlDataAdapter sda =
new SqlDataAdapter("p_select", conn);
// 指定命令类型为 存储过程
sda.SelectCommand.CommandType =
CommandType.StoredProcedure;
// 数据集对象
DataSet ds = new DataSet();
sda.Fill(ds);
this.dataGridView1.DataSource =
ds.Tables[0];
}
三、文件流操作(10分)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
1.打开会话窗口,获取某一个文件夹的路径
private void button1_Click(object sender, EventArgs e)
{ // 弹出文件夹浏览对话框
FolderBrowserDialog f = new FolderBrowserDialog();
// 显示出来
DialogResult dr = f.ShowDialog();
if (dr == DialogResult.OK)
{// 选择了打开
// 获取选中的路径
string path = f.SelectedPath;
this.textBox1.Text = path;
}
}
2.显示某一个文件夹下的所有文件
private void button2_Click(object sender, EventArgs e)
{
string condition = this.textBox2.Text;
// 获取文件夹下的所有子文件
string path = this.textBox1.Text;
// 创建文件夹对象
DirectoryInfo dir =
new DirectoryInfo(path);
// 获取所有的子文件
FileInfo[] fs = dir.GetFiles(condition);
// 循环显示到ListView中
//for(int a : arr)
// 清空
this.listView1.Items.Clear();
foreach (var item in fs)
{
ListViewItem lvi =
new ListViewItem(item.Name);
lvi.SubItems.Add(item.Extension);
lvi.SubItems.Add(item
.CreationTime.ToString());
// 添加到ListView中
this.listView1.Items.Add(lvi);
}
}
2.调用存储过程
SqlConnection conn = new SqlConnection("server=.;database=master;integrated security=true");
SqlCommand cmd = new SqlCommand("test1", conn);
// 指定类型为存储过程
cmd.CommandType = CommandType.StoredProcedure;
// 查询结果
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0];
3.IO流读取操作
//1.创建文件流
FileStream fsRead =new FileStream("1.txt",FileMode.Open);
//2.创建缓冲区,正常情况下,是不会直接等于文件大小的。这里只有读,所以就这么干了。
byte[] bytes =new byte[fsRead.Length];
//3.开始读取, 返回值是读取到的长度。
int r =fsRead.Read(bytes,0,bytes.Lenght);
//4.关闭释放流
fsRead.Close();
fsRead.Dispose();
4.IO流写入操作
//1.创建写入的文件流
FileStream fsWrite fsWrite =new FileStream(@"xxx",FileMode.OpenOrCreate);
//2.创建缓冲区
String msg ="HelloWorld";
byte[] bytes =Enconding.UTF8.GetBytes(msg);
//3.开始写入
fsWrite.Write(bytes,0,bytes.Length);
//4.关闭
fsWrite.Close();
fsWrite.Dispose();
1.在文件流写入的时候,经常需要string和byte[]数组之间的转换
1.1.string到byte[]数组
string msg ="HelloWorld";
//使用UTF8编码
byte[] bytes =System.Text.Encoding.UTF8.GetByte(msg);
//使用系统默认编码
byte[] bytes =System.Text.Encoding.Default.GetByte(msg);
2.2.byte[]到string:
string newMsg =System.Text.Encoding.UTF8.GetString(bytes);
5.StreamWriter和StreamReader,按行读取数据
public void readtxt()
{
string strLine = "";
int i = 0;
try
{
String Path=Server.MapPath("4.txt");
StreamReader sr = new StreamReader(Path, Encoding.GetEncoding("GB2312"));
strLine = sr.ReadLine();
while (strLine != null)
{
Response.Write(strLine + "
");
strLine = sr.ReadLine();
i++;
}
Response.Write(i);
sr.Dispose();
sr.Close();
}
catch
{
}
}
