11月15号

一、using:a、引入命名空间

        b、垃圾自动回收

      c、命名空间别名

二、SQL防注入(a、屏蔽特殊符号 b、参数化)

1. 代码层防止sql注入攻击的最佳方案就是sql预编译
public List<Course> orderList(String studentId)

{
      String sql = "select id,course_id,student_id,status from course where student_id = ?";
      return jdbcTemplate.query(sql,new Object[]{studentId},new BeanPropertyRowMapper(Course.class));
}
      这样我们传进来的参数 4 or 1 = 1就会被当作是一个student_id,所以就不会出现sql注入了。

2. 确认每种数据的类型,比如是数字,数据库则必须使用int类型来存储

3. 规定数据长度,能在一定程度上防止sql注入

4. 严格限制数据库权限,能最大程度减少sql注入的危害

5. 避免直接响应一些sql异常信息,sql发生异常后,自定义异常进行响应

6. 过滤参数中含有的一些数据库关键词

三、ADO.NET中的五个主要对象

Connection:主要用来开启程序和数据库之间的连接,没有利用Connection对象连接数据库,是无法从数据库中取得数据的。Close()和Dispose()的区别就是Close以后还可以Open,但是Dispose是释放了连接,要操作数据库就要重新连接数据库。

Command:主要用来对数据库发出一些指令,例如可以对数据库发出增删改查的指令,或者调用存在数据库中的存储过程等。这个对象是建立在Connection对象之上的,也就是Command对象需要连接到数据库之后才可以操作数据库中的数据。

DataAdapter:主要是在数据源以及DataSet之间执行数据库传输工作,它可以透过Command对象下达命令后,然后将取得的数据通过DataAdapter对象调用Fill()方法填充到DataSet对象中。

DataSet:这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来,DataSet是放在内存中的,DataSet的能力不只是可以存储多个Table而已,还可以透过DataAdapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet对象可以说是ADO.Net中重量级的对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataAdapter对象当作DataSet对象以及数据源间传输数据的桥梁。DataSet包含若干DataTable、DataTable包含若干DataRow。

DataReader:当我们只需要循序的读取数据而不需要其他操作时,可以使用DataReader对象。DataReader对象只是一次一次向下循序读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能(通过游标)读取当前行的数据,而且这些数据是只读的,并不允许其他的操作。因为DataReader在读取数据的时候限制了每次只读取一行,而且只能只读,所以使用起来不但节省资源而且效率很高。使用DataReader对象除了效率较好之外,因为不用把数据全部传回,故可以降低网路的负载。

四、三层架构的基础知识
1、UI(表现层)
通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。用于接收用户输入的数据和显示处理后用户需要的数据。

2、BLL:(业务逻辑层)
UI层和DAL层之间的桥梁。:针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。业务逻辑具体包含:验证、计算、业务规则等等。

3、DAL:(数据访问层)
与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。

原理
用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)

 

 

各层的作用
1、表示层
主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。

2、业务逻辑层
主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

3、数据访问层
主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.

四、原则
1、分层就意味着组建的逻辑分组。例如,对用户界面,业务逻辑和数据访问组建应该使用不同的不同的层。

2、在一个层内组建应该聚合的。如业务层组建仅应提供与业务逻辑相关的操作,而不是提供其他操作。

3、在设计的每一个层接口时要考虑好物理边界。如果通信跨越了物理边界,使用基于消息操作;否则使用基于对象操作。

4、考虑使用接口类型(interface)来定义每层的接口。这将允许你创建该接口的不同实现,提高可测性。

5、对于Web应用程序,在表示层和业务逻辑层之间实现基于消息的接口是一个好主意,即使这两层没有跨越物理边界。基于消息的接口更适合于无状态的Web操作。

6最主要的就是不能跨层调用。各层之间通过参数来传递,也就是实体类。

三层架构的优缺点
(1)优点
1、开发人员可以只关注整个结构中的其中某一层;

2、可以很容易的用新的实现来替换原有层次的实现;

3、结构清晰,耦合度低;

4、有利于标准化;

5、利于各层逻辑的复用。

6、结构更加的明确

7、在后期维护的时候,极大地降低了维护成本和维护时间

(2)缺点
1、降低了系统的性能。

这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

2、有时会导致级联的修改。

这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

3、增加了开发成本。

 

posted @ 2021-11-16 22:37  清零的爱意  阅读(93)  评论(0)    收藏  举报