jar
: Java Archive File,Java存档文件。
是一种与平台无关的文件格式,可将多个文件合成一个文件。jar 包与 zip 包非常相似——准确地说,它就是 zip 包,所以叫它文件包。jar 与 zip 唯一的区别就是在 jar 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,该文件是在生成 jar 文件的时候自动创建的,作为jar里面的"详情单",包含了该Jar包的版本、创建人和类搜索路径Class-Path等信息,当然如果是可执行Jar包,会包含Main-Class属性,表明Main方法入口,尤其是较为重要的Class-Path和Main-Class。
META-INF:元数据信息。元数据就是描述其它数据的数据,比如web page中的meta data,包括关键字,对该网页的描述等等。
META-INF相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务manifest.mf文件,在用jar打包时自动生成。
MANIFEST:显示
这些信息就是jar文件的描述信息。
META-INF目录实际上就是描述jar文件中的信息的一个目录,目录中除了manifest.mf文件之外其实还是可以配置很多信息文件的,这些文件都是在应用程序运行的过程中向其提供jar文件的内容描述的。
因为jar包主要是对class
文件进行打包,而java编译生成的class文件是平台无关的,这就意味着jar包是跨平台的,所以不必关心涉及具体平台的问题。
当我们开发了一个程序以后,程序中有很多的类,如果需要提供给别人使用,发给对方一大堆源文件是非常不好的,因此通常需要把这些类以及相关的资源文件打包成一个 jar 包,把这个 jar 包提供给别人使用,同时提供给使用者清晰的文档。这样他人在拿到我们提供的jar之后,就能方便地进行调用。
因此,建议大家在平时写代码的时候,注意把自己代码的通用部分抽离出来,主键积累一些通用的util
(utility)类,将其逐渐模块化,最后打成jar包供自己在别的项目或者模块中使用,同时不断打磨jar里面的内容,将其做得越来越容易理解和通用,这样的好处是除了会对你的代码重构能力以及模块抽象能力有很好的帮助之外,更是一种从长期解放你的重复工作量,让你有更多的精力去做其他事情的方式,甚至当你抽象出业内足够通用的jar之后,jar包还能为你带来意想不到的利润。这也是java发展得如此之好的原因,无论出于盈利或者非盈利的目的,将自己的通用工具或者框架抽取出来,打成jar包供他人调用,使得整个java生态圈变得越来越强大–几乎很多业务场景都能找到对应的jar包。
war
是一个可以直接运行的web模块,通常应用于web项目中,将其打成war包部署到Tomcat等容器中。以Tomcat举例,将war包放置在tomcat根目录的webapps目录下,如果Tomcat成功启动,这个包就会自动解压,就相当于发布了。
war包是Sun提出的一种web应用程序格式,与jar类似,是很多文件的压缩包。war包中的文件按照一定目录结构来组织。根据其根目录下包含有html和jsp文件,或者包含有这两种文件的目录,另外还有WEB-INF目录。通常在WEB-INF目录下含有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的servlet类和jsp,或者servlet所依赖的其他类(如JavaBean)。通常这些所依赖的类也可以打包成jar包放在WEB-INF下的lib目录下。这也就意味着,war能打包的内容,jar也都可以。对于现今的应用来讲,主流都是用jar来替代war了。因为war仅服务于Web应用,而jar的涵盖范围更广。目前,war相较于jar的唯一优势在于,就拿tomcat来讲,当tomcat的进程启动之后,将符合规范的war包放在tomcat的webapps目录下的时候,tomcat会自动将war包解压并对外提供web服务,而jar包则不行。
XML
:Extensible Markup Language,可扩展标记语言。是一种用于标记电子文件使其具有结构性的标记语言。它被设计用来传输和存储数据。
pom
:Project Object Model,项目对象模型。setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件;而pom.xml主要描述了项目的maven坐标,该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。是项目级别的配置文件。
servlet: servlet就是一个Java接口。接口的作用是啥,是规范!
servlet这个接口只有5个方法。
servlet接口定义的是一套处理网络请求的规范。
其中最主要的是两个生命周期方法init(),destroy(),还有一个处理请求的service().
所有想要处理网络请求的类,都要回答这3个问题:1)你初始化时要做什么
2)你销毁时要做什么
3)你接受到请求时要做什么这是Java给的一种规范
servlet是一个规范,那实现了servlet的类,就能处理请求了么?
-还不能。
写一个servlet的时候,如果不在servlet中写监听8080端口的代码,servlet不会直接和客户端打交道!那请求怎么来到servlet呢?答案是servlet容器,比如我们最常用的Tomcat ,Tomcat才是与客户直接打交道的家伙,它监听端口,请求过来后,根据URL信息,确定要将请求交给哪个servlet去处理,然后调用那个servlet的service方法,service方法返回一个response对象,Tomcat再把这个response返回给客户端。
它是符合一定规范编写的Java类,不是一种技术,而是一种规范。
大家根据这种规范,总结了很多开发技巧、工具函数。
符合这种规范的类,可以被其他的程序员或者框架使用。
Javabean是公共Java类,但是为了编辑工具识别,需要满足:
1、所有属性为private
2、提供默认构造方法
3、提供getter和setter
4、实现serializable接口,这个是框架,工具跨平台反映状态必须的
PO:persistence object,用于持久化时(例如保存到数据库或者缓存)
VO:value object,用于前端展示使用
DTO:data transfer object,用于接口互相调用返回,数据传输(例如很多接口调用返回值或消息队列内容)
JavaBean:在企业开发中,需要可伸缩的性能和事务、安全机制,这样能保证企业系统平滑发展,而不是发展到一种规模重新更换一套软件系统。然后又提高了协议要求,就出现了Enterprise Bean
POJO:Josh MacKenzie觉得,EJB太复杂了,发明了POJO,POJO就是普通的Javabean。
AOP
:aspect oriented programming,面向切面编程。通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高开发的效率。什么是切面?
web层级设计中,web层->网关层->服务层->数据层,每一层之间也是一个切面。编程中,对象与对象之间,方法与方法之间,模块与模块之间都是一个个切面。
我们一般做活动的时候,一般对每一个接口都会做活动的有效性校验(是否开始、是否结束等等)、以及这个接口是不是需要用户登录。Aspect(切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut(切入点)
以及相应的 Advice。
Joint point(连接点):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
Pointcut(切点):表示一组 joint point,这些 joint point
或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
Advice(增强):Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
Target(目标对象):织入 Advice 的目标对象.。
Weaving(织入):将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程
在Spring中,通过动态代理和动态字节码技术实现了AOP。
OOP
:Object oriented Programming,面向对象编程。
优点:降低耦合,提到维护性。
面向过程是具体化的,流程化的,解决问题需要一步一步的分析,一步一步的实现。
面向对象是模型化的,只需要抽象出一个类,这是个封闭的盒子,在这里有数据也有解决问题的方法。需要什么功能直接使用就可以了,不必一步一步的实现。
面向对象的底层还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象。
面向过程的优点:性能比面向对象好,因为类调用需要实例化,比较消耗资源。
缺点:不易维护,不易复用,不易扩展。
面向对象的优点:易维护,易复用,易扩展。由于面向对象有封装、继承、多态性的特点,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
缺点:性能比面向过程差。
面向对象的三大特性:
1.封装
2.继承
3.多态。 接口的多种不同实现方式即为多态。多态性是允许我们将父对象设置成为一个或更多的他的子对象相等的技术。允许将子类类型的指针赋值给父类类型的指针,把不同的子类对象都当做父类来看。多态又分为编译时多态(重载)和运行时多态(重写)。
DAO:data Access objects,数据存取对象。是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。也即,将数据库操作都封装起来。
DAO 模式提供了访问关系型数据库系统所需操作的接口,将数据访问和业务逻辑分离对上层提供面向对象的数据访问接口。
从以上 DAO 模式使用可以看出,DAO 模式的优势就在于它实现了两次隔离。
一个典型的DAO 模式主要由以下几部分组成。
1、DAO接口: 把对数据库的所有操作定义成抽象方法,可以提供多种实现。
2、DAO 实现类: 针对不同数据库给出DAO接口定义方法的具体实现。
3、实体类:用于存放与传输对象数据。
4、数据库连接和关闭工具类: 避免了数据库连接和关闭代码的重复使用,方便修改。