J2EE相关技术

Servlet的生命周期
servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 Servlet被服务器实例化后,
容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,
服务完成后就销毁,所以效率上低于servlet。
  2.Struts
     struts是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
    在Model 1 架构中,JSP 直接处理Web 浏览器送来之请求( Request ),并辅以JavaBean 处理应用相关逻辑。Model 1 架构单纯编写比较容易,
但在Model 1 中JSP 可能同时肩负View 与Controller 角色,两类程序代码有可能混杂而不易维护。而Model 2 中将Servlet 纳入架构中扮演前端Controller 角色,
将Web 浏览器送出之请求集中送至Servlet ,Servlet 可集中管理使用者登入、权限控制、多国语言转换等前置处理,再视需求转向给对应之JSP 处理。Model 2 中采用了较佳之MVC 模式,
但增加了编写复杂度。
    Model部分
  由JavaBean组成,ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionFrom里面的请求参数处理用户的请求。
  JavaBean则封装了底层的业务逻辑,包括数据库访问等。
    View部分
  该部分采用JSP实现。
  Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。  Controller组件
  Controller组件有两个部分组成——系统核心控制器(ActionServlet),有struts提供,继承HeetServlet,该控制器负责拦截所有的Http请求。 
  业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。
    框架
  struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。
    Struts2和Struts1的对比
  通过上面对Struts2体系结构的了解,我们发现Struts2对Struts1进行了巨大的改进。主要表现在如下几个方面:
  在Action的实现方面:Struts1要求必须统一扩展自Action类,而Struts2中可以是一个普通的POJO。
    线程模型方面:Struts1的Action工作在单例模式,一个Action的实例处理所有的请求。Struts2的Action是一个请求对应一个实例。没有线程安全方面的问题。
Servlet依赖方面:Struts1的Action依赖于Servlet API,比如Action的execute方法的参数就包括request和response对象。这使程序难于测试。Struts2中的Action不再依赖于Servlet API,
    有利于测试,并且实现TDD。封装请求参数:Struts1中强制使用ActionForm对象封装请求的参数。Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。
    表达式语言方面:Struts1中整合了EL,但是EL对集合和索引的支持不强,Struts2整合了OGNL。绑定值到视图技术:Struts1使用标准的JSP,Struts2使用“ValueStack”技术。
    类型转换:Struts1中的ActionForm基本使用String类型的属性。Struts2中使用OGNL进行转换,可以更方便的使用。数据校验:Struts1中支持覆盖validate方法或者使用Validator框架。
    Struts2支持重写validate方法或者使用XWork的验证框架。Action执行控制的对比:Struts1支持每一个模块对应一个请求处理,但是模块中的所有Action必须共享相同的生命周期。
    Struts2支持通过拦截器堆栈为每一个Action创建不同的生命周期。
  3.Hibernate:
    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC
    的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。核心接口简介
  Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。Session接口
  Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。
    同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。
    SessionFactory接口
  SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,
    一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
    Configuration接口
  Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
    Transaction接口
  Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
    Query和Criteria接口
  Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
    缓存管理
  Hibernate 中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;
    第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。
    Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。
    一级缓存的管理
  当应用程序调用Session的save()、update()、saveOrUpdate()、get()或load(),以及调用查询接口的 list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,
    Hibernate就会把该对象加入到第一级缓存中。当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。 Session为应用程序提供了两个管理缓存的方法: evict(Object obj):
    从缓存中清除参数指定的持久化对象。 clear():清空缓存中所有持久化对象。
    二级缓存的管理
  3.1. Hibernate的二级缓存策略的一般过程如下:
  1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。
  2) 把获得的所有数据对象根据ID放入到第二级缓存中。
  3) 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。
  4) 删除、更新、增加数据的时候,同时更新缓存。
  Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query Cache。
  3.2. 什么样的数据适合存放到第二级缓存中? 1 很少被修改的数据 2 不是很重要的数据,允许出现偶尔并发的数据 3 不会被并发访问的数据 4 参考数据,指的是供应用参考的常量数据,
    它的实例数目有限,它的实例会被许多其他类的实例引用,实例极少或者从来不会被修改。
  3.3. 不适合存放到第二级缓存的数据? 1 经常被修改的数据 2 财务数据,绝对不允许出现并发 3 与其他应用共享的数据。
    Hibernate与延迟加载
    lazy的使用,默认false,表示立即加载,true则为延迟加载。
4.Spring
   Spring 也表示是一个开源框架,是为了解决企业应用程序开发复杂性创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集
   成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring
   中受益。  
  特点
  ◆方便解耦,简化开发
  通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的 需求编写代码,可以更专注于上层的应用。
  ◆AOP编程的支持
  通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
  ◆声明式事务的支持
  在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
  ◆方便程序的测试
  可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。
  ◆方便集成各种优秀框架
  Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hession、Quartz)等的直接支持。
  ◆降低Java EE API的使用难度
  Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。
  ◆Java 源码是经典学习范例
  Spring的源码设计精妙、结构清晰、匠心独用,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你收到意想不到的效果.
    好处
  总结起来,Spring有如下优点:
  ◆低侵入式设计,代码污染极低
  ◆ 独立于各种应用服务器,可以真正实现Write Once,Run Anywhere的承诺
  ◆Spring的DI机制降低了业务对象替换的复杂性
  ◆Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部 
    Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,
  组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:1、核心容器:核心容器提供 Spring 框架的基本功能。
    核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
    IOC和AOP
  控制反转模式(也称作依赖性注入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。
    容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。


下表列出了 IOC 的一个实现模式。
    IOC容器
  Spring 设计的核心是 org.springframework.beans 包,它的设计目标是与 JavaBean 组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是 BeanFactory 接口,它是工厂设计模式的实现,允许通过名称创建和检索对象。BeanFactory 也可以管理对象之间的关系。
  BeanFactory 支持两个对象模型。
  1、单态 模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。Singleton 是默认的也是最常用的对象模型。对于无状态服务对象很理想。
  2、原型 模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。
  bean 工厂的概念是 Spring 作为 IOC 容器的基础。IOC 将处理事情的责任从应用程序代码转移到框架。

   5.JDBC
   JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
   对B/S和C/S模式的支持

  JDBC API 既支持数据库访问的两层模型(C/S),同时也支持三层模型(B/S)。在两层模型中,Java applet或应用程序将直接与数据库进行对话。这将需要一个JDBC驱动程序来与所访问的特定数据库管理系统进行 通讯。用户的SQL语句被送往数据库中,而其结果将被送回给用户。数据库可以位于另一台计算机上,用户通过网络连接到上面。这就叫做客户机/服务器配置,其中用户的计算机为客户机,提供数据库的计算机为服务器。网络可以是 Intranet(它可将公司职员连接起来),也可以是 Internet。
  在三层模型中,命令先是被发送到服务的"中间层",然后由它将SQL 语句发送给数据库。数据库对 SQL 语句进行处理并将结果送回到中间层,中间层再将结果送回给用户。MIS 主管们都发现三层模型很吸引人,因为可用中间层来控制对公司数据的访问和可作的的更新的种类。中间层的另一个好处是,用户可以利用易于使用的高级API,而中间层将把它转换为相应的低级调用。最后,许多情况下三层结构可提供一些性能上的好处。
  到目前为止,中间层通常都用 C 或 C++ 这类语言来编写,这些语言执行速度较快。然而,随着最优化编译器(它把 Java 字节代码转换为高效的特定于机器的代码)的引入,用 Java 来实现中间层将变得越来越实际。这将是一个很大的进步,它使人们可以充分利用 Java 的诸多优点(如坚固、多线程和安全等特征)。JDBC 对于从Java的中间层来访问数据库非常重要。
    SQL的一致性

  结构化查询语言 (SQL) 是访问关系数据库的标准语言。困难之处在于:虽然大多数的 DBMS (数据库管理系统)对其基本功能都使用了标准形式的 SQL,但它们却不符合最近为更高级的功能定义的标准 SQL 语法或语义。例如,并非所有的数据库都支持储存程序或外部连接,那些支持这一功能的数据库又相互不一致。人们希望 SQL 中真正标准的那部份能够进行扩展以包括越来越多的功能。但同时 JDBC API 又必须支持现有的 SQL。
  JDBC API 解决这个问题的一种方法是允许将任何查询字符串一直传到所涉及的 DBMS 驱动程序上。这意味着应用程序可以使用任意多的 SQL 功能,但它必须冒这样的风险:有可能在某些 DBMS 上出错。事实上,应用程序查询甚至不一定要是 SQL,或者说它可以是个为特定的 DBMS 设计的 SQL 的专用派生物(例如,文档或图象查询)。
  JDBC 处理 SQL 一致性问题的第二种方法是提供 ODBC 风格的转义子句,这将在后续部分中讨论。转义语法为几个常见的 SQL 分歧提供了一种标准的 JDBC 语法。例如,对日期文字和已储存过程的调用都有转义语法。
  对于复杂的应用程序,JDBC 用第三种方法来处理 SQL 的一致性问题它利用 DatabaseMetaData 接口来提供关于 DBMS 的描述性信息,从而使应用程序能适应每个 DBMS 的要求和功能。
  由于 JDBC API 将用作开发高级数据库访问工具和 API 的基础 API,因此它还必须注意其所有上层建筑的一致性。"符合JDBC标准TM" 代表用户可依赖的 JDBC 功能的标准级别。要使用这一说明,驱动程序至少必须支持 ANSI SQL-2 Entry Level(ANSI SQL-2 代表美国国家标准局 1992 年所采用的标准。Entry Level代表SQL功能的特定清单)。驱动程序开发人员可用 JDBC API 所带的测试工具包来确定他们的驱动程序是否符合这些标准。
  "符合 JDBC 标准TM" 表示提供者的 JDBC 实现已经通过了JavaSoft 提供的一致性测试。这些一致性测试将检查 JDBC API中定义的所有类和方法是否都存在,并尽可能地检查程序是否具有SQL Entry Level 功能。当然,这些测试并不完全,而且 JavaSoft 目前也无意对各提供者的实现进行标级。但这种一致性定义的确可对JDBC实现提供一定的可信度。随着越来越多的数据库提供者、连接提供者、Internet 提供者和应用程序编程员对 JDBC API 的接受,JDBC 也正迅速成为 Java 数据库访问的标准。
PHP 指 PHP:超文本预处理器(译者注:PHP: Hypertext Preprocessor,递归命名)
PHP 是一种服务器端的脚本语言,类似 ASP
PHP 脚本在服务器上执行
PHP 支持很多数据库(MySQL、Informix、Oracle、Sybase、Solid、PostgreSQL、Generic ODBC 等等)
PHP 文件可包含文本、HTML 标签以及脚本
PHP 文件向浏览器返回纯粹的 HTML
PHP 文件的文件后缀是 ".php"、".php3" 或 ".phtml"


MVC
MVC 架构的核心思想是:将程序分成相对独立,而又能协同工作的三个部分。通过使用MVC 架构,可以降低模块之间的搞合,提供应用的可扩展性。另外, MVC 的每个组件只关心组件内的逻辑,不应与其他组件的逻辑混合。
MVC 是Model 、View 、Controller 三个词的缩写,三个词分别代表应用的三个组成部分:模型、视图与控制器。三个部分以最少的稿合,协同工作,从而提高应用的可扩展性及可维护性。
在经典的MVC 模式中,事件由控制器处理,控制器根据事件的类型改变模型或视图,反之亦然。具体地说,模型维护一个视图列表,这些视图为获得模型变化通知,通常采用观察者模式登记给模型。当模型发生改变时,模型向所有登记过的视图发送通知:接下来,视图从对应的模型中获得信息,然后更新自己。
概括起来, MVC 有如下特点。
.多个视图可以对应一个模型。按MVC 设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护。
·模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,例如使用JSP 页面、Velocity 模板或者直接产生Excel 文档等。
·应用被分隔为三层,降低了各层之间的稿合,提供了应用的可扩展性。
·控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求。因此,控制层可以说是包含了用户请求权限的概念。
·MVC 更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。


JFreeChart
JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写, 是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联
WWW的发展使得基于因特网的应用程序不再局限于静态或者简单的动态内容提供。传统的一些以软件包形式发布应用程序例如报表系统等都在逐渐搬到因特网上。但是这 两者之间有着天壤之别,虽然对于数据获取、业务处理等方面基本类似,但是最大的差别在于用户界面。为了能在web浏览器上显示要求用户界面使用 HTML以及图片的方式来展现数据,而传统的一些利用操作系统本身的控件来开发的用户界面无法适应琳琅满目的客户端,因此在这里也变得无能为力。回到本文 的题目上来,为了创建一个可以在web浏览器上查看到图表一般有两种做法:第一种就是使用applet利用java本身对图形的支持来显示一个图表;第二 种就是直接在web服务器端生成好图表图片文件后发送给浏览器。第一种方式显然对于客户端要求太高,随着现在主流浏览器放弃对JAVA的支持后,这种方式 只适合一些局域网的应用,而对于因特网的环境就显得不太适合。JAVA的图表引擎JFreeChart用来产生基于WEB的图表。

JavaScript
JavaScript 被设计用来向 HTML 页面添加交互行为。
JavaScript 是一种脚本语言(脚本语言是一种轻量级的编程语言)。
JavaScript 由数行可执行计算机代码组成。
JavaScript 通常被直接嵌入 HTML 页面。
JavaScript 是一种解释性语言(就是说,代码执行不进行预编译)。
所有的人无需购买许可证均可使用 JavaScript。
   JScript 是 Microsoft 公司对 ECMA 262 语言规范(ECMAScript 编辑器 3)的一种实现。除了少数例外(为了保持向后兼容),JScript 完全实现了 ECMA 标准。本概述的目的就是引导您学习使用 JScript。
  JScript 是一种解释型的、基于对象的脚本语言。尽管与 C++ 这样成熟的面向对象的语言相比,JScript 的功能要弱一些,但对于它的预期用途而言,JScript 的功能已经足够大了。
   JScript 不是其他语言的精简版(例如,它只是与 Java 有点模糊而间接的关系),也不是任何事物的简化。不过,它有其局限性。例如,您不能使用该语言来编写独立运行的应用程序,并且没有对读写文件的内置支持。此外,JScript 脚本只能在某个解释器或“宿主”上运行,如 Active Server Pages(ASP)、Internet 浏览器或者 Windows 脚本宿主。
JScript 是一种宽松类型的语言。宽松类型意味着您不必显式定义变量的数据类型。事实上 JScript 更进一步。您无法在JScriot上明确地定义数据类型。此外,在大多数情况下,JScript 将根据需要自动进行转换。例如,如果将一个数值添加到由文本组成的某项(一个字符串),该数值将被转换为文本。
JavaScript 是一种新的描述语言,此一语言可以被箝入 HTML 的文件之中。透过 JavaScript 可以做到回应使用者的需求事件 (如: form 的输入) 而不用任何的网路来回传输资料,所当一位使用者输入一项资料时,它不用经过传给伺服端 (server)处理,再传回来的过程,而接可以被客户端 (client) 的应用程式所处理。你也可以想像成有一个可执行程式在你的客端上执行一样!目前已有一些写好的程式在Internet 上你可以连过去看看,以下有一些计算器的例子,在 Nescape 上。JavaScript 和 Java 很类似,但到底并不一样! Java 是一种比 JavaScript 复杂许多的程式语言,而 JavaScript 则是相当容易了解的语言。JavaScript 创者可以不那麽注重程式技巧,所以许多 Java 的特性在 Java Script 中并不支援。
JavaBean
JavaBean是一个可重复使用、且跨平台的软件组件(SoftWare Component),它可以在软件开发工具如:Borland JBuilder \ Oracle JDeveloper 或是 Sun ONE Studio 等等里,以可视化的开发方式来开发。
    首先,你可以将JAVABEAN视为一个黑盒子(Black Box),虽然知道这个软件组件所具备的功能,却不知其内部是如何运作的。笔者提供给读者一个假象的情况:有一个黑盒子,只知道它上面有一个按钮,你只要按下去经过十分钟,就会掉下一张一千元的钞票,不过你看不见其内部任何的构造,而这就是JAVABEAN最重要的特性,它将许多的信息都封装了起来,用户无需知道黑盒子如何产生出钞票,只需知道按下那个按钮,然后等十分钟,超片就会自动产生出来。
    一般而言,JAVABEAN可分为:有用户接口(user interface)的javabean和没有用户接口的javabean,通常JSP是搭配没有UI的JAVABEAN,因此后面所提到的JAVABEAN都知识单纯处理一些食物,如:数据运算,连接数据库和数据处理,等等,至于有用户接口的JAVABEAN部分,请读者自己参考JAVABEAN的相关书籍。
    通常一个标准的JAVABEAN有如下几项特性:
    (1)javabean是一个公开的(public)类;
    (2)javabean类必须有一个无传入参数(zero-argument)的构造函数(constructor);
    (3)取得或设置属性时,必须使用getXXX方法或setXXX方法。

在Java程序或JSP程序中,其实有很多的代码段是可以重复使用的,比如对数据库的操作、用户的有效性检查及某些项特定功能的实现等。为了很好的解决这个问题,提高开发效率,Sun公司推出了JavaBean,简言之,JavaBean这是一个实现了某个功能且供重复使用的Java类。
  在JSP中使用JavaBean后,可实现HTML与Java代码的分离,使JSP更易于开发和维护。因此JavaBean成了JSP程序员的必备利器之一。
  虽然JavaBean是Java类,同时它也具有自己的一些特征:
1、 JavaBean是一个public的类
2、 JavaBean有一个不带参数的构造方法
3、 JavaBean中的属性通过getXXX()和setXXX()进行操作
按着Sun公司的定义,JavaBean是一个可重复使用的软件组件。实际上JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。由于javabean是基于java语言的,因此javabean不依赖平台,具有以下特点:
? 可以实现代码的重复利用
 易编写、易维护、易使用
可以在任何安装了Java运行环境的平台上的使用,而不需要重新编译。


POI
Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。最新的3.5版本有很多改进,加入了对采用OOXML格式的Office 2007支持,如xlsx,docx,pptx文档。

POI组成部分概览:
POIFS:POIFS是该项目的最古老,最稳定的一部分,它同时支持读写功能,所有的组件最终都依赖于它的定义。
HSSF和XSSF:
HSSF:MS-Excel 97-2003(.xls),基于BIFF8格式的JAVA接口。
XSSF:MS-Excel 2007+(.xlsx),基于OOXML格式的JAVA接口。
HWPF和XWPF:
HWPF:MS-Word 97-2003(.doc),基于BIFF8格式的JAVA接口。只支持.doc文件简单的操作,读写能力有限。本API为POI项目早期开发,很不幸的是主要负责HWPF模块开发的工程师-“Ryan Ackley”已经离开Apache组织,现在该模块没有人维护、更新、完善。
XWPF:MS-Word 2007+(.docx),基于OOXML格式的JAVA接口,较HWPF功能完善。

1、jsp
在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
Java Servlet 是JSP的技术基础(JSP可用一种简单易懂的等式表示为:HTML+Java=JSP。)

2、servlet
一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。Java Servlet技术为这些应用程序定义了一个特定于HTTP的 servlet类。

3、jsp和servlet的区别
SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。
  后来SUN推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网页的设计和修改。新型的网络语言如ASP,PHP,JSP都是镶嵌型的SCRIPT语言。
  从网络三层结构的角度看,一个网络项目最少分三层:data layer,business layer, presentation layer。当然也可以更复杂。SERVLET用来写business layer是很强大的,但是对于写presentation layer就很不方便。JSP则主要是为了方便写presentation layer而设计的。当然也可以写business layer。写惯了ASP,PHP,CGI的朋友,经常会不自觉的把presentation layer和business layer混在一起。就象前面那个朋友,把数据库处理信息放到JSP中,其实,它应该放在business layer中。
  根据SUN自己的推荐,JSP中应该仅仅存放与presentation layer有关的东东,也就是说,只放输出HTML网页的部份。而所有的数据计算,数据分析,数据库联结处理,统统是属于business layer,应该放在JAVA BEANS中。通过JSP调用JAVA BEANS,实现两层的整合。
  实际上,微软前不久推出的DNA技术,简单说,就是ASP+COM/DCOM技术。与JSP+BEANS完全类似,所有的presentation layer由ASP完成,所有的business layer由COM/DCOM完成。通过调用,实现整合。
为什么要采用这些组件技术呢?因为单纯的ASP/JSP语言是非常低效率执行的,如果出现大量用户点击,纯SCRIPT语言很快就到达了他的功能上限,而组件技术就能大幅度提高功能上限,加快执行速度。
  另外一方面,纯SCRIPT语言将presentation layer和business layer混在一起,造成修改不方便,并且代码不能重复利用。如果想修改一个地方,经常会牵涉到十几页CODE,采用组件技术就只改组件就可以了。

4、Servlet的生命周期
一个servlet的生命周期由部署servlet的容器来控制。当一个请求映射到一个servlet时,该容器执行下列步骤。
1.如果一个servlet的实例并不存在,Web容器
a.加载servlet类。
b.创建一个servlet类的实例。
c.调用init初始化servlet实例。该初始化过程将在初始化servlet中讲述。
2.调用service方法,传递一个请求和响应对象。


EJB
1,分布式问题:如果你有几台服务器,跑的都是同一套系统,分别在北京,上海,广州,如果北京有个用户改了他的资料,那么要发通知上海和广州的机器也做同样的事,否则他跑到广州一看,怎么改了的还是没有变呀。这就涉及到一个普遍的分布式处理问题了,如果你自己写网络通信实现,写一大堆SOCKET,复杂的要死,还出错。你这时多么希望有个中间件能帮你解决这些问题呀,没错,想到EJB!
2,事务问题:如果你在做了一个内部人员管理系统,现在有一个人首先到人事部登记,登记完有去财务部登记,忽然这个时候,系统掉电了。结果这个人在人事部有记录,但是他没有工资,因为他没有成功录入进财务部数据库。这个时候就要面临一个事务问题了,希望它要么一次都成功,要么一次都不成功。怎么做呢,如果你自己用其他办法实现,写一大堆代码,复杂的要死,还出错。你这时多么希望有个中间件能帮你解决这些问题呀,没错,想到EJB!
其他还有多线程,安全等等问题。
等你发现用了EJB,头不痛了,心不烦了,程序变简单了,可以专注于系统的业务实现了,那你就会说:我呀,一直用EJB,EJB呀,天天见!

EJB组件技术及应用
1  EJB组件的特点
    EJB的个称足Enterprise JavaBean,足由SUN公司提出的一种基于组件模型的分布式对象标准构架,EJB组件足基于EJB标准构架的部件和对象,通常也称为企业Beam‘ I。在这种结构中,通过EJB容器提供了适合于EJB组件开发、部署以及运厅u时管理的环境。在企业应用中,EJB组件的作用就足实现系统业务过程,它能将业务逻辑封装起来,并具有中间件的功能,当应用运行时,EJB组件就驻留在EJB容器中。一个基于J2EE的应用就足由个或多个这样的EJB组件构成的,因此开发J2EE结构应用的最主要问题就足开发基于EJB结构的部件}“]。
    在J2EE体系结构中,一个EJB组件具有调用另外的EJB组件的特点,而且这''}} EJB组件不仅允许部署在同个EJB容器中,而且还允许跨EJB容器或应用服务器进厅」二部署。一此人型的应用系统结构如图1所不。
    这种结构为应用开发提供了多方面好处,主要体现在:
    ①简易性。在这种结构下,应用开发者可以仅花少量的时间和精力来开发和部署企业应用,因为写}JB组件儿乎与写一个Java类一样简中,其次,在开发过程中应用开发者不必心系统级事项,如安个管理、事务处理、多线程、分布式设计、连接资源管理等问题。
    ②可移植性。因为基于}JB的应用可以部署在任何与J2}}兼容的服务器卜,因此只要应用服务器兼容,就能够将应用移植过来。
    ③部件可重用性。因为每一个}JB组件都足可重用的部件,从而可以实现一次开发多次使用。酬更于团队开发。当明确了各}JB组件的作用和功能后,就可以分头开发各部件。当软件需要维打’或进厅了功能扩充时,也很方便。
      牙}J建复杂系统能力。由于企业应用足由一个或多个}JB组件构成的,而}JB组件又有部件特点,因此构建一个人型应用过程就足不断开发}JB组件并将它们进厅」二叠加组合的过程。
    基于卜述优点,因此对于一此功能庞人、结构复杂的系统,采用}JB组件技术进厅了开发足理想的选择。
2  EJB组件的结构
    EJB组件主要包括会话Bean } SPSSnn  Bean)和实体BPHTI} En[1[V  BPHTI}两种类型(新I'}}本中增加了消息驱动Bean)l3Bean) I  I o  Bean足一种作为中用户执行的对象,一此复杂的计算和业务逻辑就放在这}-}' BPan中。
    会话BPan足客户端应用程序的扩展,负责管理整个执厅了过程或任务,包括与实体Bean之间的交互。当应用运厅了时,EJB组件就驻留在EJB容器中,EJB容器会白动生成所需的数据访问逻辑。客户端通过调用会话Bean的功能实现与J2EE服务器的通信。会话BPan在客户会话期间,通过方法的调用,来获得用户的信息。
    而实体BPan则代表业务处理对象,负责企业信息的维打’和管理,这此对象通常足数据库中的一此持久记录,例如:一个实体BPan能够模拟数据库表中泞了相关的数
据。实体BPan根据管理持久性的方式不同可分为容器管f}的Bean }a M P]和Fb Bean管f}的BPdn C BM。容1u T管f}的Bean由EJB容器白动管f}它们的持久性,通过在部署文件中的描述,容器知道BPan实例的字段足怎样映射到数据库中去的,并白动管理插入、更新和删除数据库中与实体有关的数据;使用Bean管理持久性的BPan需要开发者编写相应代码来操作数据库,EJB容器只i1-.诉Bean实例什么时候可以在数据库中安个地插入、更新和删除数据,除此之外,它不提供任何别的帮助,BPan实例需白己完成所有的持久性上作。每个实体BPan都具有一个惟的对象标识符,称为主键;实体Bean之间也可以具有关系,关系的实现也分别由Bean代码或部署描述项完成,从而保证了数据完整性和关系完整性。

JavaMail
JavaMail API是一种可选的、能用于读取、编写和发送电子消息的包(标准扩展)。您可使用这种包创建邮件用户代理(Mail User Agent ,MUA)类型的程序,它类似于Eudora、Pine及Microsoft Outlook这些邮件程序。其主要目的不是像发送邮件或其他邮件传输代理(Mail Transfer Agent,MTA)类型的程序那样用于传输、发送和转发消息。换句话说,用户可以与MUA类型的程序交互,以阅读和撰写电子邮件。MUA依靠MTA处理 实际的发送任务。
    JavaMail API的设计是,为收发信息提供与协议无关的访问。方式是把该API划分成两个部分:
    · 该API的第一个部分是本课程的重点。基本上是如何发送和接收独立于提供程序/协议的消息。
    · 第二个部分则使用特定的协议语言,如:SMTP、POP、IMAP和NNTP。如果要让JavaMail API与服务器通信,就需要为之提供协议。


AJax
AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML)。
您应当具备的基础知识
  在继续学习之前,您需要对下面的知识有基本的了解:
  HTML / XHTML JavaScript 如果您希望首先学习这些项目,请在我们的首页访问这些教程。
  AJAX = 异步 JavaScript 及 XML(Asynchronous JavaScript and XML) AJAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。
  通过 AJAX,您的 JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象,您的 JavaScript 可在不重载页面的情况与 Web 服务器交换数据。
  AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。
  AJAX 可使因特网应用程序更小、更快,更友好。
  AJAX 是一种独立于 Web 服务器软件的浏览器技术。
AJAX 基于 Web 标准
  AJAX 基于下列 Web 标准:
  JavaScript XML HTML CSS 在 AJAX 中使用的 Web 标准已被良好定义,并被所有的主流浏览器支持。AJAX 应用程序独立于浏览器和平台。
AJAX 是更优秀的应用程序
  Web 应用程序较桌面应用程序有诸多优势;它们能够涉及广大的用户,它们更易安装及维护,也更易开发。
  不过,因特网应用程序并不像传统的桌面应用程序那样完善且友好。
  通过 AJAX,因特网应用程序可以变得更完善,更友好。
今天您就可以使用 AJAX
  没有什么新东西可学。
  AJAX 基于已有的标准。这些标准已被大多数开发者使用多年。


CVS系统
简介
  CVS是一个C/S系统,是一个常用的代码版本控制软件。主要在开源软件管理中使用。与它相类似的代码版本控制软件有subversion。   工作模式如下:   CVS服务器(文件版本库)   CVS(Concurrent Versions System)版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。Concurrent有并发的、协作的、一致的等含义。实际上CVS可以维护任意文档的开发和使用,例如共享文件的编辑修改,而不仅仅局限于程序设计。CVS维护的文件类型可以是文本类型也可以是二进制类型。CVS用Copy-Modify-Merge(拷贝、修改、合并)变化表支持对文件的同时访问和修改。它明确地将源文件的存储和用户的工作空间独立开来,并使其并行操作。CVS基于客户端/服务器的行为使其可容纳多个用户,构成网络也很方便。这一特性使得CVS成为位于不同地点的人同时处理数据文件(特别是程序的源代码)时的首选。   所有重要的免费软件项目都使用CVS作为其程序员之间的中心点,以便能够综合各程序员的改进和更改。这些项目包括GNOME、KDE、THE GIMP和Wine等。   CVS的基本工作思路是这样的:在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。由源代码库管理员统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码库里的项目文件下载到本地,然后用户可以在本地任意修改,最后用CVS命令进行提交,由CVS源代码库统一管理修改。这样,就好像只有一个人在修改文件一样,既避免了冲突,又可以做到跟踪文件变化等。   CVS是并发版本系统(Concurrent Versions System)的意思,主流的开放源码网络透明的版本控制系统。CVS对于从个人开发者到大型、分布团队都是有用的。   它的客户机/服务器存取方法使得开发者可以从任何因特网的接入点存取最新的代码。它的无限制的版本管理检出(check out:注1)的模式避免了通常的因为排它检出模式而引起的人工冲突。 它的客户端工具可以在绝大多数的平台上使用。   CVS被应用于流行的开放源码工程中,像Mozilla,GIMP,XEmacs,KDE和GNOME等。 那么它到底怎么样?   你可能会说,它非常棒,但是对于"我"来说它能做什么?首先,基本的 :一个版本控制系统保持了对一系列文件所作改变的历史记录。对于一个开发者来说,那就意味着在你对一个程序所进行开发的整个期间,能够跟踪对其所作的所有改动的痕迹。对你来说,有没有出现过由于在命令行上按错键而导致一天的工作都白费的情况呢?版本控制系统给了你一个安全的网络。   版本控制系统对任何人都有用,真的。(毕竟,谁不愿意使用一个安全的网络呢?)它们经常被软件开发团队使用。在团队中工作的开发者需要能够调整他们的各自的修改;一个集中式版本控制系统允许那样做。
代码集中的配置
 

EXT
ExtJS是一种主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。  功能丰富,无人能出其右。  无论是界面之美,还是功能之强,ext的表格控件都高居榜首。  单选行,多选行,高亮显示选中的行,推拽改变列宽度,按列排序,这些基本功能咱们就不提了。  自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能。  再加上可编辑grid,添加新行,删除一或多行,提示脏数据,推拽改变grid大小,grid之间拖拽一或多行,甚至可以在tree和grid之间进行拖拽,啊,这些功能实在太神奇了。更令人惊叹的是,这些功能竟然都在ext表格控件里实现了。






JNI
一、概念:
       JNI是Java Native Interface的缩写,中文可译为Java本地调用。Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。

二、作用:
        JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。

三、为什么要使用JNI?
    Java程序有其本身的缺陷,那就是其效率问题。由于Java是一种介于解释型和编译型之间的语言,其对内存的是通过JVM虚拟机来实现的,同样的程序,如果用编译型语言C来实现,其运行速度一般要比Java快得多。因此,提高Java的性能就显得十分重要。

四、何时使用:
        (1)将已有的C、C++应用程序或现有系统集成到Java应用程序中;

    (2) 在已有语言C、C++集成Java虚拟机;

    (3)实现Java虚拟机;

    (4)理解语言集成的具体细节,例如如何垃圾回收、如何实现多线程、如何实现SWT中的某些细节…

五、使用JNI的优势和劣势:大大提高程序的性能,但是却破坏了Java的可移植性,也对Java的安全带来了一定的隐患。


PowerDesigner    

一、简介
      PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。 利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设备模型进行控制。 它可与许多流行的数据库设计软件,例如:PowerBuilder,Delphi,VB等相配合使用来缩短开发时间和使系统设计更优化。

二、主要包含的模块
    PowerDesigner包含六个紧密集成的模块,允许个人和开发组的成员以合算的方式最好地满足他们的需要。
    这六个模块是:   
        PowerDesigner ProcessAnalyst,用于数据发现。
          PowerDesigner DataArchitect,用于双层,交互式的数据库设计和构造。
        PowerDesigner AppModeler,用于物理建模和应用对象及数据敏感组件的生成。
        PowerDesigner MetaWorks,用于高级的团队开发,信息的共享和模型的管理。
        PowerDesigner WarehouseArchitect,用于数据仓库的设计和实现。
          PowerDesigner Viewer,用于以只读的、图形化方式访问整个企业的模型信息。

三、PowerDesigner 主要包括以下几个功能部分
  (1) DataArchitect   
       这是一个强大的数据库设计工具,使用DataArchitect 可利用实体-关系图为一个信息系统创建"概念数据模型"-CDM(Conceptual Data Model)。并且可根据CDM 产生基于某一特定数据库管理系统(例如:Sybase System 11)的"物理数据模型"-PDM(Physical Data Model)。还可优化PDM,产生为特定DBMS 创建数据库的SQL 语句并可以文件形式存储以便在其他时刻运行这些SQL 语句创建数据库。另外,DataArchitect还可根据已存在的数据库反向生成   PDM,CDM 及创建数据库的SQL脚本。
  (2) ProcessAnalyst  
     这部分用于创建功能模型和数据流图,创建"处理层次关系"。
  (3) AppModeler
      为客户/服务器应用程序创建应用模型。
  (4) ODBC Administrator  
     此部分用来管理系统的各种数据源。
  (5)XML文件   
    可以使用工具生成相应的XML文件,或者用XML文件生成相关模型

四、PowerDesigner 的4 种模型文件
 (1)概念数据模型 (CDM):CDM 表现数据库的全部逻辑的结构,与任何的软件或数据储藏结构无关。一个概念模型经常包括在物理数据库中仍然不实现的数据对象。 它给运行计划或业务活动的数据一个正式表现方式。  
 (2)物理数据模型 (PDM) :PDM 叙述数据库的物理实现。藉由 PDM ,你考虑真实的物理实现的细节。它进入帐户两个软件或数据储藏结构之内拿。 你能修正 PDM 适合你的表现或物理约束。  
 (3)面向对象模型 (OOM) :一个OOM包含一系列包,类,接口 , 和他们的关系。这些对象一起形成所有的( 或部份) 一个软件系统的逻辑的设计视图的类结构。 一个OOM 本质上是软件系统的一个静态的概念模型。你使用 PowerDesigner 面向对象模型建立面向对象模型.(OOM) 你能为纯粹地对象- 导向的靠模切目的建立一个OOM, 产生Java 文件或者PowerBuilder 文件,或你能使用一个来自OOM的物理数据模型(PDM)对象 , 来表示关系数据库设计分析。  (4)业务程序模型 (BPM) :BPM 描述业务的各种不同内在任务和内在流程,而且客户如何以这些任务和流程互相影响。BPM 是从业务合伙人的观点来看业务逻辑和规则的概念模型,使用一个图表描述程序,流程,信息和合作协议之间的交互作用。
 (5)信息流模型(ILM):ILM是一个高层的信息流模型,主要用于分布式数据库之间的数据复制。

WebService总结
I  什么是WebService
     1,Web Service 是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。 Web Service是一种应用程序,它可以使用标准的互联网协议,像超文本传输协议(HTTP)和XML,将功能纲领性地体现在互联网和企业内部网上。可将Web服务视作Web上的组件编程。
       2,web广泛用到的技术:
   ◆ TCP/IP:通用网络协议,被各种设备使用
   ◆ HTML:通用用户界面,可以使用HTML标签显示数据
   ◆ Java:写一次可以在任何地方运行的通用编程语言
   ◆ XML :通用数据表达语言,在web上传送机构化数据的容易方法
他们的特点是其开放性,跨平台性,开放性正是Web services的基础。
       3,webService的作用
   ◆ 内容更加动态:一个web service必须能合并从多个不同源来的内容,可以包括股票,天气,新闻等,在传统环境中的内容,如存货水平,购物订单或者目录信息等,都从后端系统而来
   ◆ 带宽更加便宜:web services可以分发各种类型的内容(音频,视频流等)
   ◆ 存储更便宜: web services必须能聪明地处理大量数据,意味着要使用数据库,LDAP目录,缓冲,和负载平衡软件等技术保持可扩展能力
   ◆普遍式计算更重要:web services不能要求客户使用某一版本的windows的传统浏览器,必须支持各种设备,平台,浏览器类型,各种内容类型。
       4 ,webService的实现
   ◆ XML XML是在web上传送结构化数据的伟大方式,Web services要以一种可靠的自动的方式操作数据,HTML不会满足要求,而XML可以使web services十分方便的处理数据,它的内容与表示的分离十分理想
   ◆ SOAP SOAP使用XML消息调用远程方法,这样web services可以通过HTTP协议的post和get方法与远程机器交互,而且,SOAP更加健壮和灵活易用。
其他象UDDI和WSDL技术与XML和SOAP技术紧密结合用于服务发现。


Flex
Flex的技术框架
  Flex技术包括以下几个主要技术框架:   
1. 描述应用程序界面的XML语言(MXML);   
2. 符合ECMA规范的脚本语言(ActionScript),处理用户和系统的事件,构建复杂的数据模型;  
3. 一个基础类库;   
4. 运行时的即时服务;   
5. 由MXML与ActionScript文件生成swf文件的编译器。
什么是用RIA?
  传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表现层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了。而富互联网应用(Rich Internet Applications,缩写为RIA)的出现就是为了解决这个问题。     RIA面向用户
富互联网应用程序是下一代的将桌面应用程序的交互式用户体验与传统的WEB应用的部署灵活性和成本分析结合起来的网络应用程序。富互联网应用程序中的富客户技术通过提供可承载已编译客户端应用程序(以文件形式,用 HTTP传递)的运行环境,客户端应用程序使用异步客户/服务器架构连接现有的后端应用服务器,这是一种安全、可升级、具有良好适应性的新的面向服务模型,这种模型由采用的WEB服务所驱动。结合了声音、视频和实时对话的综合通信技术,使富互联网应用程序(RIA)具有前所未有的网上用户体验。   Adobe RIA技术封装让现有的WEB技术得到了极大的保留,核心价值在于大大提高了产品设计师和开发工程师的“开发体验”,强化了设计端和开发端的整合。设计师和开发工程师们可以方便地将自己的代码平移到新的平台上,并且发布、部署的方式比之前的任何一款开发工具都方便得多,从而使RIA应用有更广大的开发者基础。   Adobe RIA技术也将带来新的桌面革命——“Desktop 2.0”,内容从Flash, HTML/CSS/JS,到PDF,几乎涵盖了时下最流行的WEB内容载体。此外,“可离线”应用模式能让用户更加安全、舒适地进行工作和娱乐。用户们不必再抱怨因网络故障而造成的信息损失,而且也可以借助本地资源更好地节省网络资源。因此,Adobe RIA技术可以让用户将WEB 2.0应用带回桌面,创造的商业应用价值和用户体验价值将超过以往任何技术。
  

1.ibatis简单介绍
iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。
ibatis本是apache的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名为mybatis
iBATIS是以SQL为中心的持久化层框架。能支持懒加载、关联查询、继承等特性。
iBATIS不同于一般的OR映射框架。OR映射框架,将数据库表、字段等映射到类、属性,那是一种元数据(meta-data)映射。iBATIS则是将SQL查询的参数和结果集映射到类。
所以,iBATIS做的是SQL Mapping的工作。
它把SQL语句看成输入以及输出,结果集就是输出,而where后面的条件参数则是输入。iBATIS能将输入的普通POJO对象、Map、XML等映射到SQL的条件参数上,同时也可以将查询结果映射到普通POJO对象(集合)、Map、XML等上面。
iBATIS使用xml文件来映射这些输入以及输出。
相对Hibernate和Apache OJB 等"一站式"ORM解决方案而言,ibatis 是一种"半自动化"的ORM实现。所谓"半自动",可能理解上有点生涩。纵观目前主流的ORM,无论Hibernate 还
是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate或
者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。
Ibatis最直接的好处就是不但为程序员提供了对象与关系数据库之间的映射,同时提供操作方法与SQL间的直接影射,设计者可以直接为一个方法指定一条SQL语句,从而取得更加
准确的数据,同时为优化查询、连接查询提供了方便。

2.ibatis的优缺点:
    优点:iBATIS入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验   iBATIS有很好的可控性和表现。
    缺点:框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改

3.ibatis与hibernate的区别:
    (1)ibatis入门比较简单,容易学门槛较低,而hibernate门槛较高
    (2)ibatis需要手写sql语句,也可以生成一部分,而hibernate基本上可以全部生成,有时会写一些hql。故同样的雪球,ibatis的工作量比hibernate要大的多。
    (3)如果涉及到数据库字段的修改时,hibernate修改的地方很少,而ibatis要把那些sql mapping一一修改。
    (4)ibatis可以进行细粒度的优化(比如说要查询某个表的几个字段时,若使用ibatis就只是select 列名... from 表名 而在一般情况下hibernate默认加载所有的字段增大了数据的传输量)
    (5)在不考虑cache的情况下,ibatis应该会比hibernate快一些或很多。
    (6)开发方面:从开发效率上将两者差不多。可维护性方面ibatis更好一些因为ibatis的sql都保存在单独的文件中。而hibernate在有些情况下可能会在java代码中保存sql和hql。相对hibernate而言,ibatis以Sql开发的工作量和数据库移植性上的让步,为系统涉及提供了更大的自由空间。


Dojo

Dojo是一个用javascript语言实现的开源DHTML工具包。它是在几个项目捐助基础上建立起来的(nWidgets,Burstlib,f(m)),这也是为什么叫它a"unified"toolkit的原因。Dojo的目标是解决开发DHTML应用程序遇到的那些,长期存在、历史问题。historicalproblemswithDHTML跨浏览器问题。

定义
  Dojo是一个用JavaScript语言实现的开源DHTML工具包。它是在几个项目捐助基础上建立起来的(nWidgets, Burstlib, f(m)),这也是为什么叫它a unifined toolkit的原因。Dojo的目标是解决开发DHTML应用程序遇到的那些、长期存在 、历史问题,以及DHTML 跨浏览器问题。   Dojo能够让你更容易使Web页面具有动态能力,或者在任何能够稳定支持JavaScript语言的环境中发挥作用。
编辑本段Dojo基金会和赞助者
  dojo基金会是一个在501条款下组建的非赢利性组织用来帮助开源项目的开发。该基金会的宗旨是鼓励企业来应用它旗下的开源项目,并鼓励基金会资助的项目之间的合作。   IBM和Sun都宣布了对dojo的官方支持,包括向dojo开源项目贡献代码。   Zend公司,PHP核心代码背后的公司,也宣布了与dojo基金会的合作关系,表示要将它引入Zend框架   基金会的赞助者和成员包括   IBM   Sun Microsystems   JotSpot   SitePen   Renkoo   TurboAjax   OpenLaszlo   Nexaweb   Bea Systems   dojo基金会也资助dojo toolkit之外的下列项目:   Persevere   OpenRecord   Cometd   DWR   Lucid Desktop

  Dojo有以下的特征:   

        1、利用Dojo提供的组件,你可以提升你的web应用程序可用性、交互能力以及功能上的提高。   2、也可以更容易的建立互动的用户界面。同时Dojo提供小巧的动态处理工具。   3、利用它的低级API和可兼容的代码,能够写出轻便的、单一风格(复杂)的JavaScript代码。Dojo的事件系统、I/O的API以及通用语言形式是基于一个强大编程环境。   4、通过Dojo提供的工具,你可以为你的代码写命令行式的单元测试代码。   5、Dojo的扩展包能够使你自己的代码更容易维护,耦合性更低。   Dojo通过很少的代码完成了以上的功能。当你写脚本时,只需要包含很少的js文件,也可以选择的(包含)下载dojo提供的庞大的功能。   

DWR
关于DWR简介:

DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。


它包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容.   DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)一样;但是Java代码运行在WEB服务器端而且可以自由访问WEB 服务器的资源.出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用.   这个从JAVA到JavaScript的远程功能方法给DWR的用户带来非常像传统的RPC机制,就像RMI或者SOAP一样,而且拥有运行在WEB上但是不需要浏览器插件的好处.   DWR不认为浏览器/WEB服务器协议是重要的,而更乐于保证编程界面的简单自然.对此最大的挑战就是把AJAX的异步特性和正常JAVA方法调用的同步特性相结合.在异步模式下,结果数据在开始调用之后的一段时间之后才可以被异步访问获取到.DWR允许WEB开发人员传递一个回调函数,来异步处理Java函数调用过程.   另处 .dwr还是文件的一种格式: 比如以Dreamweaver软件里有查找和替换,经常用的查找和替换内容可以保存,保存的文件就是以 .dwr结尾的文件。这种文件用记事本打开后可以看到它的内容。

使用方法
  1.1、dwr.xml的配置
  <dwr>  
 <allow>
  <create creator="new" javascript="testClass" >  
 <include method="testMethod1"/>
  </create>   
</allow>  
 </dwr>  


 <allow>标签中包括可以暴露给javascript访问的东西。   <create>标签中指定javascript中可以访问的java类,并定义DWR应当如何获得要进行远程的类的实例。creator="new"属性指定java类实例的生成方式,new意味着DWR应当调用类的默认构造函数来获得实例,其他的还有spring方式,通过与IOC容器Spring进行集成来获得实例等等。javascript=" testClass "属性指定javascript代码访问对象时使用的名称。   标签指定要公开给javascript的java类名。   <include>标签指定要公开给javascript的方法。不指定的话就公开所有方法。   <exclude>标签指定要防止被访问的方法。  



mySQL
百科名片
   MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购.对于Mysql的前途,没有任何人抱乐观的态度.目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

一、连接MYSQL 二、修改密码 三、增加新用户 四、操作技巧 五、显示命令 六、一个建库和建表以及插入数据的实例 七、将文本数据转到数据库中安全指南管理工具展开

自身特性
  1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性  
 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统  
 3.为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
  4.支持多线程,充分利用CPU资源  
 5.优化的SQL查询算法,有效地提高查询速度  
 6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名  
 7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径   
8.提供用于管理、检查、优化数据库操作的管理工具  
 9.可以处理拥有上千万条记录的大型数据库


存储引擎
  MyISAM Mysql的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务   InnoDB 事务型数据库的首选引擎,支持ACID事务,支持行级锁定   BDB 源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性   Memory 所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失   Merge 将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用   Archive 非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差   Federated 将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用   Cluster/NDB 高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用   CSV 逻辑上由逗号分割数据的存储引擎   BlackHole 黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继   另外,Mysql的存储引擎接口定义良好。有兴趣的开发者通过阅读文档编写自己的存储引擎。
编辑本段应用架构
  单点(Single),适合小规模应用   复制(Replication),适合中小规模应用   集群(Cluster),适合大规模应用Mysql架构及应用(3张)  MySQL4.1版本中增加了不少新的性能,包括对主键的更高速度的缓存,对子查询的更好的支持,以及应网络约会网站所要求的,基于地理信息的查询。   其同步开发的5.0版本则把目标对准了企业用户,对于4.1版本中的所有新特性,5.0版本悉数收入囊中,并且独具以下特点:对外键的良好支持;系统自动报错机制以及对存储过程的充分支持。



  [1]索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。   从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。   
    1、InnoDB数据表的索引   与InnoDB数据表相比,在InnoDB数据表上,索引对InnoDB数据表的重要性要大得多。在InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE命令以及INSERT、UPDATE和DELETE命令。出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。  
 2、限制   如果WHERE子句的查询条件里有不等号(WHEREcoloum!=),MySQL将无法使用索引。类似地,如果WHERE子句的查询条件里使用了函数(WHEREDAY(column)=),MySQL也将无法使用索引。在JOIN操作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。   如果WHERE子句的查询条件里使用比较操作符LIKE和REGEXP,MySQL只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。比如说,如果查询条件是LIKE'abc%‘,MySQL将使用索引;如果查询条件是LIKE'%abc’,MySQL将不使用索引。   在ORDERBY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快ORDERBY方面也没什么作用)。如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。   MySQL 普通索引、唯一索引和主索引  

 1、普通索引   普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。   
2、唯一索引   普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个“员工个人资料”数据表里可能出现两次或更多次。   如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。   
3、主索引   在前面已经反复多次强调过:必须为主键字段创建一个索引,这个索引就是所谓的“主索引”。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是PRIMARY而不是UNIQUE。  
 4、外键索引   如果为某个外键字段定义了一个外键约束条件,MySQL就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件。  
 5、复合索引   索引可以覆盖多个数据列,如像INDEX(columnA,columnB)索引。这种索引的特点是MySQL可以有选择地使用一个这样的索引。如果查询操作只需要用到columnA数据列上的一个索引,就可以使用复合索引INDEX(columnA,columnB)。不过,这种用法仅适用于在复合索引中排列在前的数据列组合。比如说,INDEX(A,B,C)可以当做A或(A,B)的索引来使用,但不能当做B、C或(B,C)的索引来使用。   
6、索引的长度   在为CHAR和VARCHAR类型的数据列定义索引时,可以把索引的长度限制为一个给定的字符个数(这个数字必须小于这个字段所允许的最大字符个数)。这么做的好处是可以生成一个尺寸比较小、检索速度却比较快的索引文件。在绝大多数应用里,数据库中的字符串数据大都以各种各样的名字为主,把索引的长度设置为10~15个字符已经足以把搜索范围缩小到很少的几条数据记录了。在为BLOB和TEXT类型的数据列创建索引时,必须对索引的长度做出限制;MySQL所允许的最大索引全文索引文本字段上的普通索引只能加快对出现在字段内容最前面的字符串(也就是字段内容开头的字符)进行检索操作。如果字段里存放的是由几个、甚至是多个单词构成的较大段文字,普通索引就没什么作用了。这种检索往往以的形式出现,这对MySQL来说很复杂,如果需要处理的数据量很大,响应时间就会很长。   这类场合正是全文索引(full-textindex)可以大显身手的地方。在生成这种类型的索引时,MySQL将把在文本中出现的所有单词创建为一份清单,查询操作将根据这份清单去检索有关的数据记录。全文索引即可以随数据表一同创建,也可以等日后有必要时再使用下面这条命令添加:   ALTERTABLEtablenameADDFULLTEXT(column1,column2)有了全文索引,就可以用SELECT查询命令去检索那些包含着一个或多个给定单词的数据记录了。下面是这类查询命令的基本语法:   SELECT*FROMtablename   WHEREMATCH(column1,column2)AGAINST(‘word1','word2','word3’)   上面这条命令将把column1和column2字段里有word1、word2和word3的数据记录全部查询出来。   注解:InnoDB数据表不支持全文索引。

  [2]查询和索引的优化   只有当数据库里已经有了足够多的测试数据时,它的性能测试结果才有实际参考价值。如果在测试数据库里只有几百条数据记录,它们往往在执行完第一条查询命令之后就被全部加载到内存里,这将使后续的查询命令都执行得非常快--不管有没有使用索引。只有当数据库里的记录超过了1000条、数据总量也超过了MySQL服务器上的内存总量时,数据库的性能测试结果才有意义。   在不确定应该在哪些数据列上创建索引的时候,人们从EXPLAINSELECT命令那里往往可以获得一些帮助。这其实只是简单地给一条普通的SELECT命令加一个EXPLAIN关键字作为前缀而已。有了这个关键字,MySQL将不是去执行那条SELECT命令,而是去对它进行分析。MySQL将以表格的形式把查询的执行过程和用到的索引等信息列出来。   在EXPLAIN命令的输出结果里,第1列是从数据库读取的数据表的名字,它们按被读取的先后顺序排列。type列指定了本数据表与其它数据表之间的关联关系(JOIN)。在各种类型的关联关系当中,效率最高的是system,然后依次是const、eq_ref、ref、range、index和All(All的意思是:对应于上一级数据表里的每一条记录,这个数据表里的所有记录都必须被读取一遍——这种情况往往可以用一索引来避免)。   possible_keys数据列给出了MySQL在搜索数据记录时可选用的各个索引。key数据列是MySQL实际选用的索引,这个索引按字节计算的长度在key_len数据列里给出。比如说,对于一个INTEGER数据列的索引,这个字节长度将是4。如果用到了复合索引,在key_len数据列里还可以看到MySQL具体使用了它的哪些部分。作为一般规律,key_len数据列里的值越小越好。   ref数据列给出了关联关系中另一个数据表里的数据列的名字。row数据列是MySQL在执行这个查询时预计会从这个数据表里读出的数据行的个数。row数据列里的所有数字的乘积可以大致了解这个查询需要处理多少组合。   最后,extra数据列提供了与JOIN操作有关的更多信息,比如说,如果MySQL在执行这个查询时必须创建一个临时数据表,就会在extra列看到usingtemporary字样。   

一、连接MYSQL
  格式: mysql -h主机地址 -u用户名 -p用户密码   1、例1:连接到本机上的MYSQL。   首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>   2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:   mysql -h110.110.110.110 -uroot -pabcd123   (注:u与root可以不用加空格,其它也一样)   3、退出MYSQL命令: exit (回车)   注意:想要成功连接到远程主机,需要在远程主机打开MySQL远程访问权限   方法如下:   在远程主机中以管理员伙身份进入   输入如下命令   mysql>GRANT ALL PRIVILEGES ON *.* TO 'agui'@%'IDENTIFIED BY '123' WITH GRANT OPTION;   FLUSH PRIVILEGES;   //赋予任何主机访问数据的权限   mysql>FLUSH PRIVILEGES   //修改生效   agui为我们使用的用户名   密码为123   即:在远程主机上作好设置,我们即可通过mysql -h110.110.110.110 -uagui -p123连接进远程主机
二、修改密码
  格式:mysqladmin -u用户名 -p旧密码 password 新密码   1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令   mysqladmin -uroot -password ab12   注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。   2、例2:再将root的密码改为djg345。   mysqladmin -uroot -pab12 password djg345
三、增加新用户
  (注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)   格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”   例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:   grant select,insert,update,delete on *.* to test1@“%” Identified by “abc”;   但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。   例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。   grant select,insert,update,delete on mydb.* to test2@localhost identified by “abc”;   如果你不想test2有密码,可以再打一个命令将密码消掉。   grant select,insert,update,delete on mydb.* to test2@localhost identified by “”;   下面来看看MYSQL中有关数据库方面的操作。注意:必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。





四、操作技巧
  1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。   2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。
五、显示命令
  1、显示数据库列表。   show databases;   刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。   2、显示库中的数据表:   use mysql; //打开库,学过FOXBASE的一定不会陌生吧   show tables;   3、显示数据表的结构:   describe 表名;   4、建库:   create database 库名;   5、建表:   use 库名;   create table 表名 (字段设定列表);   6、删库和删表:   drop database 库名;   drop table 表名;   7、将表中记录清空:   delete from 表名;   8、显示表中的记录:   select * from 表名;
六、一个建库和建表以及插入数据的实例
  drop database if exists school; //如果存在SCHOOL则删除   create database school; //建立库SCHOOL   use school; //打开库SCHOOL   create table teacher //建立表TEACHER   (   id int(3) auto_increment not null primary key,   name char(10) not null,   address varchar(50) default ‘深圳',   year date   ); //建表结束   //以下为插入字段   insert into teacher values('','glchengang',’深圳一中‘,'1976-10-10');   insert into teacher values('','jack',’深圳一中‘,'1975-12-23');   注:在建表中:   (1)将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key。   (2)将NAME设为长度为10的字符字段。   (3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别呢,只有等以后的文章再说了。   (4)将YEAR设为日期字段。   如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:\下,并在DOS状态进入目录\mysql\bin,然后键入以下命令:   mysql -uroot -p密码 < c:\school.sql   如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。
七、将文本数据转到数据库中
  1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\n来代替.   例:   3 rose 深圳二中 1976-10-10   4 mike 深圳一中 1975-12-23   2、数据传入命令 load data local infile “文件名” into table 表名;   注意:你最好将文件复制到\mysql\bin目录下,并且要先用use命令打开表所在的数据库 。   八、备份数据库:(命令在DOS的\mysql\bin目录下执行)   mysqldump --opt school>school.bbb   注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。
编辑本段安全指南
  作为一个MySQL的系统管理员,你有责任维护你的MySQL数据库系统的数据安全性[3]和完整性。下面主要介绍如何建立一个安全的MySQL系统,从系统内部和外部网络两个角度,提供一个安全指南。   一、内部安全性-保证数据目录访问的安全   1.1 数据库文件。   1.2 日志文件。   二、外部安全性-保证网络访问的安全   2.1 MySQL授权表的结构和内容   2.2 服务器控制客户访问   2.3 避免授权表风险   2.4 不用GRANT设置用户
编辑本段管理工具
  使用各种精心设计的工具来管理MySQL数据库要比单纯使用传统的方法轻松得的多。开发人员应该不断寻找那些能够缩短开发时间的工具。这也是我们本文整理这10个能够简化开发过程的MySQL工具的原因。 一、MySQL Workbench   MySQL Workbench是一个由MySQL开发的跨平台、可视化数据库工具。它作为DBDesigner4工程的替代应用程序而备受瞩目。MySQL Workbench可以作为windows、linux和OS X系统上的原始GUI工具,它有各种不同的版本,你可以查看下面的链接以获得它的版本信息。   二、phpMyAdmin   phpMyAdmin是一款免费的、用PHP编写的工具,用于在万维网上管理MySQL,它支持MySQL的大部分功能。这款含有用户界面的软件能够支持一些最常用的操作(比如管理数据库、表格、字段、联系、索引、用户、许可,等等),同时你还可以直接执行任何SQL语句。   它所具备的特性:   >直观的Web界面   >支持大多数MySQL功能:   > 浏览和丢弃数据库、表格、视图、字段和索引   >创建、复制、删除、重命名以及更改数据库、表格、字段和索引   >维护服务器、数据库以及表格,能对服务器的配置提出建议   >执行、编辑和标注任何SQL语句,甚至批量查询   >管理MySQL用户以及用户权限   >管理存储的过程(stored procedures)和触发器(triggers)   >从CSV 和 SQL文件格式中导入数据   >能够以多种格式导出数据:CSV、SQL、XML、PDF、ISO/IEC 26300等   >管理多台服务器   >为数据库布局创建PDF图表   >使用Query-by-example (QBE)创建复杂的查询   >在数据库中进行全局搜索,或者在数据库的子集中进行搜索   >用预定义的函数把存储的数据转化成任何格式   >还具有其他更多特性...   三、Aqua Data Studio   对于数据库管理人员、软件开发人员以及业务分析师来说,Aqua Data Studio是一个完整的集成开发环境(IDE)。它主要具备了四个方面的功能:1)数据库查询和管理工具;2)一套数据库、源代码管理以及文件系统的比较工具;3)为Subversion(SVN)和CVS而设计了一个完整的集成源代码管理客户端;4)提供了一个的数据库建模工具(modeler),它和最好的独立数据库图表工具一样强大。   四、SQLyog   SQLyog是一个全面的MySQL数据库管理工具(/’GUI’/'Frontend’)。 它的社区版(Community Edition)是具有GPL许可的免费开源软件。这款工具包含了开发人员在使用MySQL时所需的绝大部分功能:查询结果集合、查询分析器、服务器消息、表格数据、表格信息,以及查询历史,它们都以标签的形式显示在界面上,开发人员只要点击鼠标即可。此外,它还可以方便地创建视图和存储过程,最近几周笔者一直在反复使用这个功能。   五、MYSQL Front   这个MySQL数据库的图形GUI是一个“真正的”应用程序,它提供的用户界面比用PHP和HTML建立起来的系统更加精确。因为不会因为重载HTML网页而导致延时,所以它的响应是即时的。如果供应商允许的话,你可以让MySQL-Front直接与数据库进行工作。如果不行,你也只需要在发布网站上安装一个小的脚本即可。登录信息会存储在你的硬盘上,因此你不必再登录到不同的网络界面上了。   六、mytop   mytop是一款基于控制台的工具(不是GUI),用于监视线程以及MySQL 3.22.x、3.23.x和4.x服务器的整体性能。它可以在大多数安装了Perl、DBI以及 Term::ReadKey的Unix系统上(包括Mac系统OS X)运行。如果你安装了Term::ANSIColor,你能得到彩色的视图。如果你安装了Time::HiRes,你还可以得到一个不错的 “每秒查询数” 实时统计。mytop0.7版甚至还能在windows上运行。   mytop的灵感来自系统监视工具“top”。我经常在Linux、FreeBSD和Solaris上使用top,你很可能会在mytop中注意到来自这些操作系统的某些特性。mytop连接到MySQL服务器之后,能定期运行SHOW PROCESSLIST和SHOW STATUS命令,并以一种有用的格式总结从这些命令中所获得的信息。   七、Sequel Pro   Sequel Pro是一款管理MAC OSX数据库的应用程序,它可以让你直接访问本地以及远程服务器上的MySQL数据库,并且支持从流行的文件格式中导入和导出数据,其中包括SQL、CSV 和XML等文件。最初,Sequel Pro只是开源CocoaMySQL工程的一个分支。部分特性如下:   >你很容易就可以建立起一个到Mac电脑本地MySQL服务器的连接   >它具有全部的表格管理功能,包括索引。   >支持MySQL视图   >它使用多窗口功能,能够立即支持多个数据库或表格   八、SQL Buddy   SQL Buddy是一个强大的轻量级Ajax数据库管理工具。它非常易于安装,你只需要把文件夹解压到服务器里就行了,这再简单不过了!你还可以进行常见的绝大部分操作。   九、MySQL Sidu   MySQL Sidu是一款免费的MySQL客户端,它通过网络浏览器来运行,非常容易上手!Sidu这几个字母表示Select(选择)、Insert(插入)、Delete(删除)和Update(更新)。Sidu其实还有更多的功能,它看起来更像MySQL前端软件的GUI而不是网页。   >SIDU支持SQL选择、插入、删除,更新功能。   >SIDU支持在浏览器上工作,如Firefox、IE、Opera、Safari、Chrome等等。   >SIDU看起来像MySQL前端软件的GUI而不是网页。   >SIDU可以跟MySQL、Postgres 和SQLite DBs一起工作。   十、Navicat Lite MySQL Admin Tool   Navicat是一款快速、可靠的数据库管理工具,很受大家的欢迎。Navicat专门用来简化数据库管理并且减少管理成本,它旨在满足数据库管理人员、数据库开发人员以及广大中小企业的需要,它有一个很直观的GUI,可以让你安全便捷的创建、组织、访问以及分享信息。   对于MySQL来说,Navicat工具是一个强大的数据库管理和开发工具。它可以跟任何版本的MySQL数据库服务器(3.21版或者以上版本)一起工作,并且支持MySQL大多数最新的功能,包括Trigger、Stored Procedure、Function、Event, View和 Manage User等。Navicat Lite可以免费下载,但是仅适用于非商业活动。



ORACLE
ORACLE特点
  * ORACLE7.X以来引入了共享SQL和多线索服务器体系结构。这减少了ORACLE的资源占用,并增强了ORACLE的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。   * 提供了基于角色(ROLE)分工的安全保密管理。在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。   * 支持大量多媒体数据,如二进制图形、声音、动画以及多维数据结构等。   * 提供了与第三代高级语言的接口软件PRO*系列,能在C,C++等主语言中嵌入SQL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵。加上它有许多优秀的前台开发工具如 POWER BUILD、SQL*FORMS、VISIA BASIC 等,可以快速开发生成基于客户端PC 平台的应用程序,并具有良好的移植性。   * 提供了新的分布式数据库能力。可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术。Oracle也许是最流行的服务器,占有最大的市场份额,它被广泛用于各个市场领域,满足一系列的存储需求,例如财务记录,人力资源及订单编制等,造成这种现象的原因之一在于Oracle较早的进入RDBMS(关系型数据库管理系统)领域,并且提供可运行于大多数操作系统上的数据库版本,虽然Oracle的首选操作系统似乎正由Solaris转为Linux,但是Oracle仍然在进行与其他操作系统的兼容工作,尽管Oracle经常在Unix或是Linux平台上运行,但是也有大量的Oracle在HP-UX和AIX上运行,随着几年前电子商务的激增,将会驱使Oracle成为WEB应用所需数据库的选择,这使数据库更容易受攻击者的Oracle 10g

Oracle 在其技术白皮书上阐明,Oracle 10g数据库关键目标有二:1 降低管理开销,2 提高性能。 Oracle 10g的增强有对高可用性的增强、新的 Flashback 能力、支持回滚更新操作;对安全性的增强,便于管理大量的用户; BI 方面的增强 , 包括改进的 SQL 能力、分析功能、 OLAP 、数据挖掘的能力等;对非关系型数据存储的能力得到了改进; XML 的能力;对开发能力支持的加强,对生物信息学( Bioinformatics )的支持。
控制。事实上,一旦Oracle从后台进入前端,那么人们会更多地关注它的安全方面。

性能与扩展能力
  1.对新的架构支持   对 Intel 64 位平台的支持。支持 infiniband 。极大地改进了多层开发架构下的  Oracle
性能和可扩展能力。新的版本也借用了 Windows 操作系统对 Fiber 支持的优势。   2.高速数据处理能力   在这个版本中,一个新类型的表对象被引入。该表结构对大量插入和解析数据很有益处。这个表结构对 FIFO 的数据处理应用有着很好的支持。这样的应用在电信、生产应用中常常能够用到。通过使用这种优化的表结构能够对电信级的应用起到巨大的性能改进作用。   ( 这个神奇的表对象是笔者最为感兴趣之处。参见这里 )   3.RAC workload 管理   一个新的服务框架。使得管理员作为服务来设置、管理监视应用负载。   4.针对 OLAP 的分区   通过对哈希分区的全局索引的支持可以提供大量的并发插入的能力   5.新的改进的调度器( Scheduler )   引入了一个新的数据库调度器,提供企业级调度功能。这个调度器可以使得管理员有能力在特定日期、特定时间调度 Job 。还有能力创建调度对象的库能够和既有的对象被其他的用户共享。

可管理性
  这个版本的 Oracle 的一个引人注目之处就是管理上的极大简化。大量复杂的配置和部署设置被取消或者简化。常见的操作过程被自动化。对不同区域的大多数调整和管理操作的到简化。   1.简化的数据库配置与升级   提供了预升级检查能力,有效地减少升级错误。 去除了了很多和数据库配置有关的任务或者对其加以自动化。在初始安装的时候,所有数据库都被预配置包括在 OEM 环境中而无需建立一个  Oracle 10g安装
管理资料库。补丁程序可以自动标记并自动从 Oracle Metalink 下载。   2.自动存储管理   新版本的数据库能够配置成使用 Oracle 提供的存储虚拟层( Storage Virtualization Layer) 。自动并简化数据库的存储。管理员现在可以管理少数的磁盘组而无需管理数千个文件--自动存储管理功能可以自动 配置磁盘组,提供数据冗余和数据的优化分配。   3.自动的基于磁盘备份与恢复   10G也极大的简化了备份与恢复操作。这个改进被称作Disk based Recovery Area ,可以被一个联机Disk Cache 用来进行备份与恢复操作。备份可以调度成自动化操作,自动化优化调整。备份失败的时候,可以自动重启,以确保 Oracle 能够有一个一致的环境使用。   4.应用优化   以前的版本中, DBA 更多时候要手工对 SQL 语句进行优化调整。这里引入了一些新的工具,从此 DBA 无需手工做这些累人的事情。(这样的说法似乎有些太绝对)   5.自动化统计收集   为对象自动化收集优化统计。   6.自动化实例调整   DBA需要干预的越来越少么? 好消息还是坏消息?   7.自动化内存调整   上一个版本对 UGA 能够进行自动化 Tuning ,这版本能够对 SGA 相关的参数进行调整。这意味着 DBA 只需要对2 个内存参数进行配置:用户可用的总的内存数量和共享区的大小。


SqlServer
SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。
关系数据库简介
  SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。 SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本是SQL SERVER 2008。


特点
 1.真正的客户机/服务器体系结构。  
 2.图形化用户界面,使系统管理和数据库管理更加直观、简单。  
 3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
  4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。  
 5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。
 6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。
 7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。


详细介绍
  SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。   SQL Server   SQL Server 是一个关系数据库管理系统。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。   SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。


SQL Server 2008新功能
  这个平台有以下特点:   · 可信任的——使得公司可以以很高的安全性、可靠性和可扩展性来运行他们最关键任务的应用程序。   · 高效的——使得公司可以降低开发和管理他们的数据基础设施的时间和成本。   · 智能的——提供了一个全面的平台,可以在你的用户需要的时候给他发送观察和信息。   一、可信任的   (一)保护你的信息   在过去的SQL Server 2005的基础之上,SQL Server 2008做了以下方面的增强来扩展它的安全性:   * 简单的数据加密   SQL Server 2008可以对整个数据库、数据文件和日志文件进行加密,而不需要改动应用程序。进行加密使公司可以满足遵守规范和及其关注数据隐私的要求。简单的数据加密的好处包括使用任何范围或模糊查询搜索加密的数据、加强数据安全性以防止未授权的用户访问、还有数据加密。这些可以在不改变已有的应用程序的情况下进行。   * 外键管理   SQL Server 2008为加密和密钥管理提供了一个全面的解决方案。为了满足不断发展的对数据中心的信息的更强安全性的需求,公司投资给供应商来管理公司内的安全密钥。 SQL Server 2008通过支持第三方密钥管理和硬件安全模块(HSM)产品为这个需求提供了很好的支持。   * 增强了审查   SQL Server 2008使你可以审查你的数据的操作,从而提高了遵从性和安全性。审查不只包括对数据修改的所有信息,还包括关于什么时候对数据进行读取的信息。SQL Server 2008具有像服务器中加强的审查的配置和管理这样的功能,这使得公司可以满足各种规范需求。SQL Server 2008还可以定义每一个数据库的审查规范,所以审查配置可以为每一个数据库作单独的制定。为指定对象作审查配置使审查的执行性能更好,配置的灵活性也更高。   (二)确保业务可持续性   * 改进了数据库镜像
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值