zoukankan      html  css  js  c++  java
  • 使用分层实现业务处理

    1:技能总结:

    request对象主要用于处理客户端用户提交的请求信息

    response对象用于响应客户请求并向客户端返回响应信息

    JSP提供了文件引用指令include

    将共性内容写入单独的文件中,通过include指令引用该文件,从而降低代码的冗余、利于代码维护

    2:什么是JNDI ?

    Java Naming and Directory Interface,Java命名和目录接口

    通过名称将资源与服务进行关联

    3:JNDI的作用与优点

    在应用与Java对象或资源之间建立松耦合的逻辑关联,简化应用对于资源的配置及维护工作

    可以在更大范围、不同应用之间共享资源

    4:在Tomcat中发布Web应用程序使用:

    先进行发布信息的修改

    修改Tomcatconfcontext.xml文件

    在<Context>中添加

    <Environment name="tjndi" value="hello JNDI" type="java.lang.String" />语句

    用lookup()进行查找

    <Environment>元素用于配置命名的值,所配置的值作为环境条目资源,对整个Web应用可见,包含的属性有:name,type,value

    name:环境条目的名称,

    type:环境条目的JAVA类名全称

    value:通过JNDI context请求时,返回给应用的参数值,该值必须转化成type 属性定义的JAVA类型

    5:使用JNDI的步骤:

    配置资源

    通过Context的lookup()方法查找资源

    6:为什么使用连接池?

    传统数据库连接方式的不足 需要经常与数据库建立连接,在访问结束后必须关闭连接释放资源 当并发访问数量较大时,

    执行速度受到极大影响 系统的安全性和稳定性相对较差

    7:DataSource与连接池

    javax.sql.DataSource接口的实现类

    负责管理与数据库的连接 以连接池的形式对数据库连接进行管理

    DataSource中事先建立多个数据库连接,这些数据库连接保存在连接池中。JAVA程序访问数据库时,只需要从连接池中取出空闲的状态的数据库连接

    当程序访问数据库结束时,再将数据库连接返回给连接池,这样做可以提高访问数据库的效率

    获取DataSource

    Tomcat支持将DataSource实现发布为JNDI资源 Web应用通过JNDI获得DataSource引用

    得到DataSource对象后,可以通过DataSource的getConnection()方法来获的数据库连接对象。

    Connection conn=ds.getConnection();

    当程序结束访问数据库后,应该调用Connecton的close()方法及时将Conncetion返回给数据库连接池,使Connection恢复空闲状态

    8:使用连接池实现数据库连接

    配置context.xml文件

    配置web.xml文件

    添加数据库驱动文件

    进行代码编写,查找并获取数据源

     由于数据源由Tomcat创建并维护,所以必须把数据驱动文件放到Tomcat的lib目录下

    ps:

    C3p0: 开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate、Spring等。

    单线程,性能较差,适用于小型系统,代码600KB左右。

    DBCP (Database Connection Pool):由Apache开发的一个Java数据库连接池项目, Jakarta commons-pool对象池机制,Tomcat使用的连接池组件就是DBCP。

    单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar,预先将数据库连接放在内存中,

    应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完再放回。单线程,并发量低,性能不好,适用于小型系统。

    Tomcat Jdbc Pool:Tomcat在7.0以前都是使用common-dbcp做为连接池组件,但

    是dbcp是单线程,为保证线程安全会锁整个连接池,性能较差,

    dbcp有超过60个类,也相对复杂。Tomcat从7.0开始引入了新增连接池模块叫做Tomcat jdbc pool

    基于Tomcat JULI,使用Tomcat日志框架,完全兼容dbcp,通过异步方式获取连接,支持高并发应用环境,超级简单核心文件只有8个,支持JMX,支持XA Connection。

    BoneCP:官方说法BoneCP是一个高效、免费、开源的Java数据库连接池实现库。

    设计初衷就是为了提高数据库连接池性能,

    根据某些测试数据显示,BoneCP的速度是最快的,要比当时第二快速的连接池快25倍左右,

    完美集成到一些持久化产品如Hibernate和DataNucleus中。

    BoneCP特色:高度可扩展,快速;连接状态切换的回调机制;允许直接访问连接;自动化重置能力;

    JMX支持;懒加载能力;支持XML和属性文件配置方式;较好的Java代码组织,100%单元测试分支代码覆盖率;代码40KB左右。

    Druid:Druid是Java语言中最好的数据库连接池,

    Druid能够提供强大的监控和扩展功能,是一个可用于大数据实时查询和分析的高容错、高性能的开源分布式系统,

    尤其是当发生代码部署、机器故障以及其他产品系统遇到宕机等情况时,Druid仍能够保持100%正常运行。

    主要特色:为分析监控设计;快速的交互式查询;高可用;可扩展;Druid是一个开源项目,源码托管在github上。

    9:访问数据源:

    name:

    指定Resource的JNDI名称

    auth:

    指定管理Resource的Manager

    type:

    指定Resource所属的Java类

    maxActive:

    指定连接池中处于活动状态的数据库连接的最大数目

    maxIdle:

    指定连接池中处于空闲状态的数据库连接的最大数目

    maxWait:

    指定连接池中的连接处于空闲的最长时间

    10:添加数据库驱动文件

    把数据库驱动jar文件,加入到Tomcat的lib中

    配置应用程序的web.xml文件

    在web.xml中配置<resource-ref>

    11:三层模式的划分

                    表示层   :与用户交互收集数据展示结果

    实体类: 业务逻辑层:根据业务需要控制执行过程,进行事务管理

                    数据访问层:提供与业务无关的数据访问操作

    表示层:用户能够直接访问,用于显示数据和接收用户输入的数据,为用户提供交互式操作页面

    业务逻辑层:提供对业务逻辑处理的封装

    数据访问层:实现对数据的保存和读取操作(数据访问,可以访问关系数据库,文本文件或XML文档)

    表示层向业务逻辑藏层发出请求,业务逻辑层向数据访问层发出请求

    数据访问层在向业务逻辑层进行响应,业务逻辑层在向表示层进行响应

    12:编写数据访问层组件 :数据库连接的开闭由业务层统一管理

    13:编写业务逻辑层组件 :封装业务流程并统一管理数据库连接和事务

    14:分层原则:

    上层依赖其下层,依赖关系不跨层

    表示层不能直接访问数据访问层 上层调用下层的结果,取决于下层的实现

    下一层不能调用上一层

    下一层不依赖上一层

    上层的改变不会影响下一层

    下层的改变会影响上一层得到的结果

    在上一层中不能出现下一层的概念

    分工明确,各司其职

    15:三层开发的特点:

    下层不知上层的存在

    每一层仅知它下一层的存在,而不知另外的下层

    上层使用下层提供的服务,并为下层提供数据

    16:三层开发的优点:

    职责划分清晰

    利用面向对象的特性进行无损替换

    复用代码

    降低了系统内部的依赖程度

    17:三层开发的缺点:

    会将原本很直接的操作变得复杂化

    功能的修改难度大、

    功能定义变动的可能性很小

     18:分页如何实现:
    limit字句:(limit后加int类型的数字参数,第一个数字表示起始位置,第二个表是显示数量  eg:0,3)

    x-1*每页页数=起始位置

    做分页必须知道当前页码

    每页显示条数

    总页数,

    总条数(select  count  (1)from usejob )count 计数

    ceil向上取整。

  • 相关阅读:
    tomcat的一些知识
    WebHttpBinding的流传输模式让我头大了
    实体类编程的最佳伴侣——高效的实体类复制
    MySQL导入导出CSV
    WPF下的事件延迟触发
    WCF使用Json传输的一个BUG
    WCF大文件断点下载示例
    比较DataTable和实体类
    WPF下的右键菜单隐藏
    MySql Workbench中的BUG
  • 原文地址:https://www.cnblogs.com/zjx-959/p/13367683.html
Copyright © 2011-2022 走看看