java 学习

 

 

1.java语言的特点

  1.java语言是纯面向对象的语言。

  2.平台无关性。

  3.提供很多内置的类库,简化程序设计,造好轮子。

  4.对web应用的开发的支持。servlet和jsp开发web应用程序,socket分布式应用程序。

  5.具有较好的安全性和健壮性,防止恶意代码攻击的安全机制(数组边界检测和bytecode校验)、java的强类型机制、垃圾回收器、异常处理和安全检查机制使得java语言具有很好的健壮性

2.java与c++的异同

  java与c++都是面向对象语言(java 封装、继承、多态、抽象)

  1.java是解释性语言,程序源代码经过java编译器编译成字节码,然后由jvm解释执行。c++是编译型语言,源代码经过编译和链接后生成可执行的二进制代码,java速度慢但是跨平台执行。

  2.java 纯面向对象的语言,所有代码(函数、变量)必须在类中实现、除基本数据类型(int、float),所有类型都是类,java语言中不存在全局变量或者全局函数,c++兼具面向对象和面向过程的特点,可以定义全局变量和全局函数。

  3.java中没有指针。

  4.java不支持多重继承,可以同时实现多个接口,接口具有多态特性,java通过多个接口来实现类似多重继承的特点。

  5.java 垃圾回收器

java 不支持运算符重载,没有预处理功能,提供import机制类似预处理功能,不支持默认函数参数,java不提供goto语句(goto为保留字),不支持强制类型转化,由开发人员显示的强制类型转化。java具有平台无关性,每种数据都分配固定长度

3.public static void main(String[] args) java 程序的入口方法,jvm在运行程序时,首先查找main()方法,其中public是权限修饰符,表明任何类或对象都可以访问这个方法,static 表明main()方法是一个静态方法,方法中代码存储在静态存储区内,只要类被加载后,就可以使用该方法而不需要通过实例化对象来访问。直接通过类名.main()直接访问,jvm在启动时就按照上述方法的签名(必须有public与圣拓陶瓷修饰,返回值为void,而且方法的参数为字符串数组)来查找方法的入口地址,若找到则执行,找不到就报错

public static void main(String[] args)

static public void main(String[] args)

public static final void main(String[] args)

static public synchronized void main(String[] args)

4. 静态块在类被加载前是就会被调用,因此在mian()方法执行前

5.java程序初始化顺序,当实例化对象时,对象所在的类的所有成员变量首先要初始化,只有当所有类成员完成初始化后,才会调用对象所在的类的构造器函数创建对象。

1.静态对象(变量)优先于非静态对象(变量)初始化,静态对象只初始化一次,非静态对象可能会初始化很多次。2.父类优先于子类进行初始化。3。按照成员变量的定义顺序进行初始化,即使变量定义散布于方法定义之中,他们依然在任何方法(构造函数)被调用之前先初始化。

6.作用域

作用域与可见性 当前类 同一package 子类 其他package
public

 √
protected  ×

default

×  ×
private × ×  ×

 7.一个java文件中可以定义多个类,最多只能一个类被public修饰,并且这个类的类名与文件名必须相同,若这个文件中没有public类,则文件名随便是一个类的名字即可,当用javac指令编译这个.java 文件时,它会给每个类生成一个对应的.class文件

8.构造函数

1.构造函数必须与类名相同,不能有返回值(返回值也不能为void)

2.每个类可以有多个构造函数,默认无参构造器,提供了构造器,就不会创建默认的无参构造器

3.构造器可以有0,1或者1个以上的参数

4.构造函数总是伴随着new操作一起调用,必须是系统调用。构造函数在对象实例化时会被自动调用,只运行一次,普通的方法是在程序执行时被调用,可以被调用多次

5.构造函数的作用:对象的初始化工作

6.构造函数不能被继承,不能覆盖,能够重载,使用不同的参数个数或者参数类型来定义多个构造函数

7.子类通过super关键字来显式调用父类的构造函数,当父类没有提供无参数的构造函数时,子类的构造函数中必须显式的调用父类的构造函数,如果父类提供了无参数的构造函数,此时子类的构造函数可以不用显式的调用父类的构造函数,在这种情况下编译器会默认调用父类提供的无参数的构造函数,当有父类时,在实例化对象时先执行父类的构造函数,然后执行子类的构造函数。

8.当父类和子类都没有定义构造函数时,编译期会为父类生成一个默认的无参数的构造器函数,给子类生成一个默认的无参数的构造函数。默认的构造器修饰符只跟当前类的修饰符有关(当一个类定义为public,构造函数也是public)

 

9.接口

接口 :抽象方法定义的集合,特殊的抽象类,接口中包含方法的定义,没有方法的实现。接口中成员的作用于修饰符都是public,接口中常量值默认使用 public static final 修饰。

 10

java在处理基本数据类型(int,double),采用按值传递(传递的是输入参数的复制)的方法执行,除此之外的其他类型都是按照引用传递(传递的对象的一个引用)的方式执行。对象除了在函数调用时是引用传递,在使用=也是引用传递

new一个变量的时候对象真正在堆区,栈上保存了一个指向堆区存放该对象内存的地址。函数调用的时候传递引用也就是传递这个地址的一个拷贝,通过这个地址值可以修改这个地址在堆区的内容。

java 学习

 

java 学习

 

11.java反射

得到一个对象所属的类,获取一个所有成员变量和方法,在运行时创建对象,在运行时调用对象的方法

Class c = Class.forName(“javase.demo1.Sub”);
Base b = (Base)c.newInstance();

java创建对象:1.通过new实例化对象。2.通过反射机制创建对象。 通过clone方法。通过反序列化方式。

12 java通过接口实现类似c语言的函数指针功能。

先定义接口,接口中声明要调用的方法,实现这个接口,把这个实现类的一个对象作为参数传递给调用程序,调用程序通过这个参数来调用指定的函数,实现回调函数的功能。

 

2.2java 面向对象

1.抽象,抽象忽略一个主题中与目标无关的那些方面,过程抽象和数据抽象

2.继承,继承是一种连接类的层次模型,允许和鼓励类的重用,他提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,此过程称为类继承。新类继承了原始类的特性。派生类可以从它的基类哪里继承方法和实例便令,并且派生类可以修改或增加新的方法使之适合特殊的需要

3.封装,封装是指将客观事物抽象成类,每个类对自身的数据和方法实行保护。类可以将自己的数据金额方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

4.多态,多态指允许不同的类的对象对同一消息作出响应。多态包括参数化多态和包含多态。

2.4继承

1.java不支持多重继承,但可以通过过个接口来实现多重继承的目的

2.子类只能继承父类的非私有的成员变量和方法。

3.子类中定义的成员变量和父类定义的成员变量同名时,子类的成员变量会覆盖父类的成员变量而不会继承。

4.子类中的方法与父类中的方法有相同的函数签名(相同的方法名,形同的参数个数与类型),子类覆盖父类的方法,不会继承。

2.5 多态

表现形式:

1.方法的重载。重载是指一个类中有多个同名的方法,但这些方法有不同的参数,在编译时就可以确定到底调用哪个方法,他是一种编译时多态。重载可以看做一个类中的方法的多态性。

2.方法的覆盖。子类可以覆盖父类的方法。

成员变量是无法实现多态的,成员变量的值取父类还是子类并不取决于创建对象的类型,而是取决于所定义的变量的类型。

Base b = new Derived() 取Base类型的成员变量。

编译时多态通过方法的重载实现的,运行时多态方法的覆盖(子类覆盖父类)实现的

2.7 重载和覆盖

重载是在一个类中多态性的表现,是指在一个类中定义了多个同名的方法,他们或有不同的参数个数或者有不同的参数类型

1.重载是通过不同的方法参数来区分的,不同的参数个数、不同的参数类型或者不同的参数顺序。

2.不能通过方法的访问权限、返回值类型和抛出的异常类型来进行重载。

3.对于继承来说,如果基类方法的访问权限为private,那么就不能在其的派生类中对其重载,如果派生类中也定义了一个同名函数,这只是一个新的方法,不会达到重载的效果。

覆盖是指派生类函数覆盖基类的函数。覆盖一个方法并对其重写,以达到不同的作用

1.派生类中的覆盖方法必须要和基类中被覆盖的方法有相同的函数名和参数。

2.派生类中的覆盖方法的返回值必须和基类中覆盖方法的返回值相同。

3.派生类覆盖方法所抛出的异常必须和基类中覆盖的方法抛出的异常一致。

4.基类中被覆盖的方法不能为private,否则只是在子类中定义了一个方法,并没有对其覆盖。

覆盖是子类和父类之间的关系,重载是一个类中方法之间的关系

覆盖要求参数列表相同,重载要求参数列表不同。

覆盖关系中,调用方法是根据对象的类型来决定,重载关系中根据调用时的实参表与形参表来选择方法体的

2.8 抽象类和接口

一个类中包含抽象方法,这个类就是抽象类。可以通过把类或者类中的某些方法声明为abstract来表示一个类是抽象类(abstract只能修饰类或者方法,不能修饰属性)。接口止一个方法的集合,接口中所有方法没有方法体,接口通过interface实现的。

抽象类和接口都是支持抽象类定义的两种机制。只要包含一个抽象方法的类就是必须声明为抽象类,抽象类可以声明方法的存在而不去实现它,被声明为抽象的方法不能包含方法体。在实现时,必须包含相同或者更低的访问级别。抽象类在使用过程中不能被实例化,但是可以创建一个对象使其指向具体子类的一个实例。抽象类的子类为父类中所有抽象方法提供具体的实现,否则他们也是抽象类。。接口中所有方法都是抽象的,通过抽象实现多重继承。接口中成员变量都是static final 类型。

接口和抽象类相同点:

1.都不能实例化。2.接口的实现类或者抽象类的子类都只有实现了接口或者抽象类的方法后才能被实例化。

不同点:

1.接口中只有定义,方法不能再接口中实现,只有实现接口的类才能实现接口中定义的方法,抽象类可以有定义与实现,方法可以在抽象类中被实现。

2.接口需要实现,抽象类只能被继承。一个类可以实现多个接口,但是一个类只能继承一个抽象类,接口可以实现多重继承的目的。

3.接口中定义的成员变量默认为 public static final 只能够有静态的不能被修改的数据成员,而且必须给其赋初值,其所有成员方法都是public abstract的,只能被这两个关键字修饰。

 

2.9 内部类

 

将一个类定义到另一个类的内部,在类里面的这个类就叫做内部类,外面的类就叫做外部类。内部类可看做外部类的一个成员(与类的属性和方法类似),还有一种类称为顶层类,类定义代码不嵌套在其他类定义中的类

内部类分为四种:静态内部类,成员内部类,局部内部类和匿名内部类

 静态内部类被指声明为static的内部类,他可以不依赖于外部类实例而被实例化,而通常的内部类需要在外部类实例化后才能被实例化。静态内部类不能与外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部类的静态成员和静态方法。

一个静态内部类,去掉static关键字,称为成员内部类。成员内部类为非静态内部类,他可以自由的引用外部类的属性和方法,无论这些属性和方法是静态还是非静态的。只有外部的类被实例化后,这个内部类才能被实例化。非静态内部类中不能有静态成员。

局部内部类是指定义在一个代码块中的类,就像局部变量一样,不能被public、protected、private、static修饰,只能访问定义为final类型的局部变量。

匿名内部类是一种没有类名的内部类,不使用关键字class,extends ,implements .没有构造函数,他必须继承其他类或实现其他接口。匿名内部类不能有构造函数。匿名内部类不能定义静态成员、方法、类,匿名内部类不能是public、protected、private、static,只能创建匿名内部类的一个实例,一个匿名内部类一定是在new的后面,这个匿名内部类必须继承一个父类或者实现一个接口,匿名内部类为局部内部类

 

2.10  获取父类名字

this.getClass().getSuperClass().getName()

2.11 this 与 super

 

xpd123

 

子类构造函数 需要显示调用父类构造函数时候,super()必须为构造函数的第一条语句。

 

4.3.1 标识符

标识符只能由字母、数字、下划线和$组成,标识符第一个字符是字母、下划线或者$

4.3.3 final ,finally,finalize

1.final 声明属性、方法和类,分别表示属性不可变、方法不可覆盖和类不能被继承(不能派生出新的子类)

 实例变量:变量归对象所有(实例化对象才可以)。每当实例化一个对象时候,会创建一个副本并初始化,如果没有显示初始化,初始化一个默认值,各个对象中的实例变量互不影响。

局部变量:在方法中定义的变量,在使用之前必须初始化。

类变量:用static 可修饰的属性、变量归类所有,只有类被加载,这个变量就可以被使用(类名、变量名)。所有实例化对象共享类变量。

final 变量:表示这个变量是常量,不能被修改

对于变量 static final修饰,一旦赋值就不可修改,对于方法,static final修饰,方法不可覆盖

 4.3.6  switch

switch  用于分支选择switch(express) express只能是一个枚举常量(内部也是由整型或字符类型实现)或者一个整数表达式,整数表达式可以是基本类型int或者其对应的包装类Integer,byte,short char h和枚举类型

jdk1.7 switch 支持string类型(本质是int 类型值匹配)

 

4.4.1 java 基本数据类型

数据类型 字节长度 范围 默认值 包装类
int 4 -231~221-1 Integer 
 short -32768~32767   Short
long  8 -263~263-1  0L或者0l   Long
 byte 1  -128~127 Byte 
float   32位IEEE754单精度范围 0.0f   Float
doubel   8  64位IEEE754单精度范围  0.0   Double
 char  2 Unicode[0,65535]   u0000  Character
 boolean true或者false  false   Bollean

int 长度数据类型:byte(8 bit) 、short(16 bit)、int(32 bit)、long(64 bit)

float 长度数据类型: 单精度(32 bit float)、双精度(64 bit double)

Boolean类型变量的取值(true,false)

char 数据类型;unicode字符(16 bit)

4.4.3

值传递和引用传递

1.值传递

方法调用中,实参会把它的值传递给形参,形参只是用实参的值初始化一个临时的存储单元,因此形参与实参虽然有相同的值,但有不同的存储单元,对形参的改变不会影响实参的值

2.引用传递

方法调用时,传递的是对象(看做是对象的地址),形参与实参的对象指向同一块存储单元,对形参的修改会影响实参的值。

  java语言中,原始数据类型传递参数时按照按值传递,包装类型在传递参数时按照引用传递。

java 学习

 

 4.5.3

String 不可变类,StringBuilder与StringBuffer类似,可变类,字符串缓冲区,StringBuilder不是线程安全的

在执行效率,StringBuilder>StringBuffer>String

4.5.4

数组是指相同类型的数据集合。具有固定的长度,并且在内存中占据连续的空间。java中数组就是对象。每个数据类型都有对应的类型

 4.5.5

数组初始化

1.int[] a = new int[5]; //动态创建了一个包含5个整型值的数组,默认初始化为0;

2.int[] a = {1,2,3,4,5}; //声明了一个数组类型变量并且初始化

4.5.6

java 数组中提供了length属性来获取数组的长度,length() j计算字符串的长度

4.6 异常处理

4.6.1 finally块作用是为了保证无论出现什么情况,finally块里的代码一定会被执行。由于程序执行return就以为结束对当前函数的调用并跳出这个函数体,因此任何语句执行都只能在return前执行,因此finally块里的代码也是在return前执行的,finally块里的代码是在return前执行的,对于基本类型数据,在finally块中改变return的值对返回值没有任何影响,而对引用类型的数据有影响

finally 不一定会执行

1.进入try语句块之前就出现异常,会直接结束,不会执行finally在块中的代码

2.try 块中强制退出不会执行finally块中的代码

4.6.2 异常处理

异常是指程序运行时所发生的非正常情况或错误,当程序违法了语义规则时,jvm就会出现的错误表示为一个异常并抛出。这个遗产可以再catch程序块中进行捕获,然后处理

Throwable 做我所有异常的父类,异常分为为error和exception两大类。

error 运行异常,错误不可恢复,属于jvm层次严重错误,导致程序终止执行。

exception 可恢复的异常,检查异常和运行异常

 检查异常:IO异常和SQL异常,异常发生在编译阶段,java编译器强制程序去捕获此次类型的异常。

异常发生后并不会导致程序出错,程序依赖于不可靠的外部条件。

运行时异常 NullPointerException(空指针异常)、ClassCastException(类型转换异常)、ArrayIndexOutOfBoundsException(数组越界异常)、ArrayStoreException(数组存储异常)、BufferOverflowException(缓冲区溢出异常)、ArithmeticException(算术异常),出现运行异常后,系统会将异常往上层抛出,知道遇到处理代码为止,若没有处理块,则抛出到最上层。如果不对运行时异常处理,后果很严重,一旦发生,要么线程终止,要么主程序终止。

捕获异常时,先捕获子类,在捕获基类

2.尽早抛出异常,同事对捕获异常处理

3.根据需求自定义异常类。

4.异常不能处理就抛出

4.7.1 IO

字节流和字符流

字节流以字节(8bit)为单位,InputStream(输入流)和OutputStream(输出流)

字符流以字符(16bit)为单位,Reader(输入流)和Writer(输出流)

字符流和字节流区别:字节流在处理输入输出时不会用到缓存,字符流用到了缓存

java 学习

 

 5.1.4  dopost方法与doget方法

web容器处理http请求的流程看出,最终的请求交给servlet来处理,servlet通过调用service方法处理请求的,service方法根据不同的请求类型分别调用dopost方法或doget方法来处理用户请求。当http请求中的method属性为get时候,调用doget请求,method属性为post时,调用dopost请求

5.1.5servlet生命周期

servlet运行在容器中,没有main方法,因此,整个生命周期都是由容器来控制的

servlet生命周期:未创建状态与初始化状态。inti(),service() 和destroy方法

init方法是servlet的生命的起点,用于创建或者打开人户与servlet相关的资源以及执行初始化工作。service方法是servlet中真正处理客户端传过来的请求的方法,根据http请求的方法(get,post等)将请求分发到doget,dopost方法,destroy方法释放任何在init方法中打来的与servlet相关的资源。

java 学习

1.模型(业务逻辑层)

模型表示企业数据和业务逻辑,他是应用程序的主体部分。业务流程的处理过程对其它层来说是黑箱操作,模型接收视图请求数据,并返回最终的处理结果。业务模型设计师mvc核心的部分

mvc 把应用的模型按照一定的规则抽象出来。业务模型中还有一个重要的模型就是数据模型。数据模型主要是指实体对象的数据持续化。

2.视图(表示层)

根据客户类型显示信息,显示模型的结构,而不关心信息是如何获得的

3 控制器

控制器接收用户的输入并调用模型和视图去完成用户的需求。当用户单击web页面中的超链接和发送html表单时候,空盒子器本身不输出任何东西。也不执行任何处理。他只是接收请求并决定调用哪个模型构件去处理请求,然后确定哪个视图来显式模型处理返回的数据

mvc处理过程:对于每一个用户输入的请求,先被控制器接收,并决定由哪个模型来进行处理,然后模型通过业务逻辑层处理用户的请求并返回数据,然后控制器用相应的视图格式化模型返回的数据,并通过显示页面呈现给用户。

1.低耦合性。由于视图层和业务层的分离,是的修改视图层代码不需要重新编译模型和控制器代码,同样一个应用的业务流程或者业务规则的改变只需要改动mvc的模型层即可

2.高重用性和可适用性

3.较低的生命周期成本

4.部署快速

5.可维护性

6.有利于软件工程化管理

 

java 学习

5.1.10  jsp内置对象

jsp 提供了9个内置对象:

request(请求对象)、response(响应对象)、pageContext(页面上下文对象)、session(会话对象)、application(应用程序对象)、out(输出对象)、config(配置对象)、page(页面对象)与exception(例外对象)

 

名称 描述
request 客户端请求,次请求包含来自get/post请求的参数。客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应,因此request对象时用来获取请求参数的非常重要途径。它是httpservletrequest类的实例
response 服务器对客户端的响应,将web服务器处理后的结果返给客户端。但是在jsp很少使用它,它是httpservletresponse类的实例
pagecontext 提供了对jsp页面的所有对象及命名空间的访问,也就是说,用它可以访问到本页面中的所有其他对象,例如前面已将描述的request、response以及以后要介绍的session和application对象等,它的本类名也叫pagecontext
session 用来表示客户端与服务端的一次会话。从客户端与web服务器建立连接的时候会话开始。直到关闭浏览器时结束会话。它是httpsession的实例
application jsp所属的web应用的本身。application对象可以放全局变量,因此可以实现用户间的数据共享。他的生命周期和服务器的生命周期一致。在任何地方,对此对象属性的操作进影响到其他用户对此的访问。它是servletcontext类的实例
out 客户端浏览器内输出信息
config 去的服务器的配置信息。当一个servlet初始化时候,容器把某些信息通过config对象传递给servlet,servlet可以使用这个对象获取所需的配置信息
page 当前jsp页面 java.lang.object对象
exception 表示异常,一个页面在运行过程中发生了例外,就会产生这个对象,若果jsp需要使用这个对象,就必须把iserrorpage设为true。负责无法编译。它是java.lang.Throwable对象

 

  5.1.13jsp中include指令和include动作区别

include主要动作用来在当前文件中引入另一个文件,以便在当前文件中使用

include指令方法:<%@ include file=”test.jsp” %>

include动作的方法:

<jsp:include page=”test.jsp” flush=”true”> <jsp:param name=”name” value=”value”/></jsp:include>

include 指令与include动作之间的根本性差异在于二者被调用的时间。include指令是编译阶段的指令,即在编译时候,编译期会把指令所指向目标文件的内容复制到指令所在的位置,替换指令,最终形成一个文件,在运行时候只有一个文件。include指令所包含文件的内容实在编译时候插入jsp文件的,当文件内容有变化时候就需要重新编译,因此适合包含静态页面的情况,例如可以包含一个servlet。

include动作是运行时候的语法,在主页面被请求时候,才将用到的页面包含进来,涉及两个文件,类似方法的调用,更适用于包含动态页面的情况

1.当使用include动作时候,页面中声明的变量不可用于另一只文件,除非将变量防止在request,session,application 作用域中,而在使用include指令时候,当前页面和被包含页面可以共享变量。

2.当时用include指令时候,新生成的jsp页面要符合jsp语法要求,应该避免变量名的冲突,而在使用include动作时候,不存在变量名冲突问题。

3.include指令会修改被包含文件,但不会立即生效,除非修改主页面或删除主页面的类,而include动作修改被包含的文件,会立即生效。

考虑到include动作在维护上的优势,优先考虑include动作。

5.1.14 回话跟踪

1.开发web应用程序经常需要做到数据共享或者在不同页面之间可以传递参数,而且,一个绘画中的数据会在不同的地方使用,因此需要有专用的机制来传递和保存这些数据。

会话:从客户端打开与服务器链接并发出请求到服务器响应客户端请求的全过程。回话跟踪是对同一个用户对服务器的连续请求和接收响应的监视。由于客户端和服务端之间通过http进行通信,http本身是无状态协议,不能保存客户的信息,即一次响应完成之后链接就断开了,下次请求时候,需要重新建立链接,等到建立完连接后还需要判读是否为一个用户。会话跟踪数据

1.page:代表与一个页面相关的对象和属性。一个页面由一个编译好的javaservlet类表示,既包括servlet又包括被编译成servlet的jsp页面。

2.request :代表与web客户端发送的一个请求相关对象和属性。一个请求可能跨越多个页面,涉及多个web组件

3.session 代表与用于某个web客户端的一个用户体验相关的对象和属性,一个web会话可以经常跨越多个客户端请求。

4.application 代表与某个web应用程序相关的对象和属性,这实际上市跨越多个web应用程序。包括多个页面、请求和会话的一个全局作用域。

5.1.16 ajax

ajax 结合了java技术、xml技术以及JavaScript的编程技术,不刷新页面的情况下通过与服务器进行少量数据交互来提高页面的交互性,减少响应时间,从而改善用户体验。

ajax技术可以只向服务器发送并取回必须的数据内容,数据交互大幅降低,降低服务器网络负载,通过使用soap(建党对象访问协议)或其他一些机遇xml的webservice接口没在客户端采用js处理来自服务器的响应,降低了web服务器的处理时间,异步请求方式

5.1.17  cookie和session

cookie 是在http下,服务器与或脚本可以维护客户工作站上信息的一种方式。它是由web服务器保存在用户浏览器上的小文件,可以包含相关用户的信息。session是指用来客户端与服务端之间保持状态的解决方案以及存储结构。

1.cookie机制采用客户端保持状态的方案,数据存放在客户的浏览器上,session放在服务器上。

2.cookie安全性不够

3.cookie性能更高,session保存在服务器上,访问量增多时,降低服务器性能。

4.单个cookie保存数据不超过4kb,浏览器限制一个站点保存20个cookie

5.2.1 j2ee

j2ee是java平台企业版的简称,用来开发和部署企业级应用的一个架构,提供了一种统一的、开放标准的多层平台。该平台主要由构件、服务和通信3个模块构成。

构件:客户端构件和服务端构件两种类型。客户端构件:applets和application clients

服务端构件:web构件(servlet和jsp)ejbs(javabean)

服务:j2ee平台提供商实现,serviceAPI和运行时服务

通信:容器提供的支持协作构件之间的通信。

 

5

来源:weixin_30241919

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年8月16日
下一篇 2017年8月16日

相关推荐