java开发面试技巧_第1页
java开发面试技巧_第2页
java开发面试技巧_第3页
java开发面试技巧_第4页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java 开发面试技巧【篇一: java 工程师面试题大全 -100% 公司笔试题你都能碰到几个】1. hibernate 中离线查询去除重复项怎么加条件? dc.setresulttransformer(criteria.distinct_root_entity);2. http 协议及端口 ,smtp 协议及端口http :超文本传输协议端口 80smtp :简单邮件传输协议端口 253. 编写程序,完成文件复制功能4. servlet 创建过程及生命周期 servlet 在容器中运行时,其实例的创建及销毁等是由容器进行控制。servlet的创建有两种方法。1). 客户端请求对应的 ser

2、vlet 时,创建 servlet 实例 ;大部分 servlet 都是这种 servlet 。2). 通过在 web.xml中设置 load-on-startup来创建 servlet实例,这种实例在web 应用启动时,立即创建 servlet实例servlet的运行都遵循如下生命周期:1). 创建 servlet实例。2). web 容器调用 servlet的 init()方法,对 servlet进行初始化。3). servlet 初始化后,将一直存在于容器中,用于响应客户端请求。根据客户端的请求方式通过 servlet中 service() 方法去相应的 doxxx() 方法;4). w

3、eb 容器销毁 servlet时,调用 servlet的 destroy()方法,通常在关闭 web 容器之时销毁servlet 。5. 用sql语句分页:mysql数据库:select top页大小select top页大小* from table1 where id not in(*(页数 -1) id from table1 order by id) order by idoracle数据库:在 oracle大数据量下的分页解决方法。一般用截取是三层嵌套方法。id方法,还有截取 id 的方法select * from emp a, (select empno,rownum as num

4、from emp)b where a.empno=b.empno and b.num between 5 and 7;三层嵌套select * from ( select a.*, rownum r from ( select * from emp )a where rownum =7 ) b where r 5;的存储特点 ?list 以特定次序来持有元素,可有重复元素 .set 无法拥有重复元素,内部排序 .map 保存 key-value值 ,value 可多值7. final,finally,finaliz的区别final 修饰符(关键字)如果一个类被声明为final ,意味着它不能再

5、派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final可以保证它们在使用中不被改变。被声明为final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改被声明为final的方法也同样只能使用,不能重载。finally 再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入 finally块(如果有的话)。finalize 方法名。 java 技术允许使用finalize()方法在垃圾收集器,将对象从内存中清除出去之前做必要的清理工作。

6、这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在object类中定义的,因此所有的类都继承了它。子类覆盖;finalize() 方法以整理系统资源或者执行其他清理工作 finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。8. arraylist和 vector的区别 ?1). 同步性 :vector 是线程安全的,也就是说是同步的,而 arraylist 是线程不安全的,不是同步的2). 数据增长 :当需要增长时 ,vector 默认增长为原来一培,而 arraylist 却是原来的一半9. 说出 arraylist,vector, linkedlis

7、t的存储性能和特性?1). arraylist 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是,程序员也插入删除时非常麻烦linkedlist采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始2). arraylist 和 vector 都是用数组方式存储数据 ,此数组元素数要大于实际的存储空间以便进行元素增加和插入操作 ,他们都允许直接用序号索引元素 ,但是插入数据元素涉及到元素移动等内存操作 ,所以索引数据快而插入数据慢 .3). vector 使用了 sychronized 方法 (线程安

8、全 ),所以在性能上比 arraylist 要差些 .4). linkedlist 使用双向链表方式存储数据 ,按序号索引数据需要前向或后向遍历数据,所以索引数据慢 ,是插入数据时只需要记录前后项即可,所以插入的速度快.10. hashmap,hashtable1.hashtable是 dictionary区别的子类,hashmap是map接口的一个实现类;2.hashtable中的方法是同步的,而hashmap中的方法在缺省情况下是非同步的。3. 在 hashmap 中, null 可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为 null 。11. . 描述 cookie 和

9、session 的作用,区别和各自的应用范围, session 工作原理session 用于保存每个用户的专用信息 . 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话id ( session id) .她的生存期是用户持续请求时间再加上一段时间(一般是 20 分钟左右).session中的信息保存在web 服务器内容中 ,保存的数据量可大可小.当session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用 session对象使保存用户数据的方法效率很低.对于小量的数据 ,使用 session对象保存还是一个不错的选择cooki

10、e用于保存客户浏览器请求服务器页面的请求信息可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置 .如果没有设置 cookie 失效日期 ,它们仅保存到关闭浏览器程序为止 .如果将 cookie 对象的 expires 属性设置为 minvalue, 则表示 cookie 永远不会过期 .cookie 存储的数据量很受限制 ,大多数浏览器支持最大容量为4k, 因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持cookie, 并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据 ,否则会影响网站的安全性session工作原理(1) 当

11、有 session启动时,服务器生成一个唯一值,称为session id(好像是通过取进程id 的方式取得的)。(2) 然后,服务器开辟一块内存,对应于该session id。(3) 服务器再将该 session id 写入浏览器的 cookie 。(4) 服务器内有一进程,监视所有 session 的活动状况,如果有 session 超时或是主动关闭,服务器就释放改内存块。(5) 当浏览器连入iis 时并请求的asp 内用到 session时, iis 就读浏览器 cookie中的 session id。(6) 然后,服务检查该 session id 所对应的内存是否有效。(7) 如果有效,

12、就读出内存中的值。(8) 如果无效,就建立新的 session 。12. string 和 stringbuffer 进行字符串连接时的区别?string 对项内容是不可改变的, stringbuffer 是可以改变的,且高效;13. 什么叫项目?用有限的资源、有限的时间为特定客户完成特定目标的一次性工作14. .j2ee j是什么意思?2 是什么意思ee 是什么意思?struts的拦截器你是怎么做的,是独立开发的,能够独立开发的到。然后问有哪几种拦截?java 2 platform,enterprise edition继承 abstractinterceptor类,覆盖 intercept(

13、)方法有 struts 自己的拦截器 如 timer ,i18n,scop,servletconfig,token还有自定义拦截器15. 简单介绍下java ?spring的 aop ,ioc 的讲述对 struts2解, 1,2 的比较 xml 的了解 j2ee 的webserviced的协议?spring aop:代理机制 spring提供的自动代理机制的了spring 的 ioc 来实组件之间的依赖关系注入 , 使控制层与业务实现分离,即客户通过调用业务委托接口来调用具体的业务组件的实例,避免控制层与业务层的藕合带来的维护或升级困难。由spring为 dao 生成代理对象来为dao 添加

14、事务服务,由 ioc 容器 dao 的代理实例注入到业务组件中,业务组件通过dao 的委托接口调用dao 对象,使得上层组件不直接依赖于dao 的实现类,使得持久层更换或修改不影响上层组件。16. collections,collection的区别collection 是个 java.util 下的接口,它是各种集合结构的父接口。 collections 是个 java.util 下的普通类,它包含有各种有关集合操作的静态方法。 collections 是针对集合类的一个帮助类,它提供一系列的静态方法实现对各种集合的搜索,排序,线程安全化等操作17. 如何释放过度使用的 undo 表空间1.

15、启动 sqlplus ,并用 sys 登陆到数据库。 2. 查找数据库的 undo表空间名 3. 确认 undo 表空间; sql select name fromv$tablespace; 4. 检查数据库 undo 表空间占用空间情况以及数据文件存放位置; 5. 查看回滚段的使用情况,哪个用户正在使用回滚段的资源,如果有用户最好更换时间6. 检查 undo segment状态18. 数据库里面游标,索引是怎么用的?在 oracle 数据库中,用get 和 load 方法 这 2 个方法来查没有的数据 那么分别会反馈什么样的结果?declare cur cursor keyset forge

16、t 返回 null,load classnotfoundexception19. . 在中数据库中的一个表中,这个表没有主键也没有特定标示来查数据,怎么查?rowid20. 简述 private 、 proteced 、public 、internal 修饰符的访问权限同一个类 同一个包 不同包的子类 不同包非子类private * default * * protected * *public * * * *21. 概述反射和序列化reflection是 java 被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过名称的 class 的内部信息,包括其reflection

17、 apis取得任何一个已知modifiers(诸如 public, static等等)、 superclass (例如 object )、实现之 interfaces (例如 cloneable ),也包括 fields 和 methods 的所有信息,并可于运行时改变 fieldsreflection apis内容或唤起。methods。本文借由实例,大面积示范22. 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类

18、实现serializable接口,该接口没有需要实现的方法,implements serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如: fileoutputstream)来构造一个objectoutputstream(对象流 )对象,接着,使用objectoutputstream对象的 writeobject(object obj)方法就可以将参数为 obj 的对象写出 (即保存其状态 ),要恢复的话则用输入流23.oracle中 not 和 and 和 or 优先级由高到低?notandor24.java是如何进行异常处理的java 通过面向对象的方法进行异常处

19、理,把各种不同的异常进行分类,并提供了良好的接口。在 java 中,每个异常都是一个对象,它是 throwable 类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。 java 的异常处理是通过 5 个关键词来实现的: try 、catch 、throw 、throws 和 finally 。一般情况下是用 try 来执行一段程序,如果出现异常,系统会抛出( throws )一个异常,这时候你可以通过它的类型来捕捉( catch )它,或最后(finally )由缺省处理器来处理25. struts2必备包26.

20、 dao是什么及作用dao 是数据访问对象 dao 负责管理与数据源的连接来获取和储存其中的数据27. ibatis中的 #与 $的区别 在 ibatis中我们使用sqlmap进行 sql查询时需要引用参数,在参数引用中遇到的符号#和 $之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如:select * from table where id = #id#,其中如果字段id 为字符型,那么 #id# 表示的就是 id 类型,如果 id 为整型,那么 #id# 就是 id 类型。select * from table where id = $id$句就不会出错,但是如果

21、字段id,如果字段为字符型,那么id sql为整型, sql 语语句应该写成select * from table where id = $id$28. struts2的实现原理1、客户端初始化一个指向servlet容器(例如tomcat )的请求2、这个请求经过一系列的过滤器(filter )(这些过滤器中有一个叫做 actioncontextcleanup的可选过滤器,这个过滤器对于struts23、接着和其他框架的集成很有帮助,例如:sitemesh pluginfilterdispatcher被调用, filterdispatcher询问);actionmapper来决定这个请求是否需

22、要调用某个4、如果 actionmapper决定需要调用某个actionaction ,;filterdispatcher 5、actionproxy把请求的处理交给actionproxy通过 configuration manager;询问框架的配置文件,找到需要调用的action类;6、actionproxy创建一个 actioninvocation的实例。7、actioninvocation实例使用命名模式来调用,在调用过程前后,涉及到相关拦截器(intercepter)的调用。8、一旦 action执行完毕, actioninvocation负责根据action的中的配置找到对应的返回

23、结果。返回结果通常是(但不总是,也可能是另外的一个 action 链)一个需要被表示的 jsp 或者 freemarker 的模版。在表示的过程中可以使用 struts2 框架中继承的标签。在这个过程中需要涉及到 actionmapper29. 简述 spring 的事务传播行为和 隔离级别spring的事务传播行为:spring在 transactiondefinition接口中规定了 7 种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播:propagation_required :如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这

24、是最常见的选择。propagation_supports:支持当前事务,如果当前没有事务,就以非事务方式执行。propagation_mandatory:使用当前的事务,如果当前没有事务,就抛出异常。propagation_requires_new:新建事务,如果当前存在事务,把当前事务挂起。propagation_not_supported :以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 propagation_never :以非事务方式执行,如果当前存在事务,则抛出异常。propagation_nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与 p

25、ropagation_required 类似的操作。 spring 的隔离级别1、serializable:最严格的级别,事务串行执行,资源消耗最大;2、repeatable read:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了 “脏读取 ”和 “不可重复读取 ” 的情况,但是带来了更多的性能损失。3、read committed:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了 “脏读取 ”。该级别适用于大多数系统。4、read uncommitted:保证了读取过程中不会读取到非法数据。30. 写一段把本地文件

26、formfile 拷贝到本地文件 tofile 的程序public class changejtdtojava public static void main(string args) file dir = new file(f:/jtd);【篇二: java 常见面试题及解答2015 版】java 常见面试题及解答(精华)1)transient和 volatile是 java 关键字吗?(瞬联)如果用 transient 声明一个实例变量,当对象存储时,它的值不需要维持。例如: class ttransient int a; /不需要维持int b; /需要维持这里,如果保存,但 bt 类的

27、一个对象写入一个持久的存储区域,的将被保存。a 的内容不被volatile 修饰符告诉编译器被 volatile 修饰的变量可以被程序的其他部分改变。在多线程程序中,有时两个或更多的线程共享一个相同的实例变量。考虑效率问题,每个线程可以自己保存该共享变量的私有拷贝。实际的变量副本在不同的时候更新,如当进入synchronized 方法时。 用 strictfp修饰类或方法,可以确保浮点运算(以及所有切断)正如早期的java 版本那样准确。切断只影响某些操作的指数。当一个类被strictfp修饰,所有的方法自动被strictfp修饰。strictfp的意思是 fp-strict,也就是说精确浮点

28、的意思。在java 虚拟机进行浮点运算时,如果没有指定strictfp 关键字时, java 的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内java 的编译器以及运行环境会完全依照浮点规范ieee-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp 。你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例

29、如下面的代码:strictfp interface a public strictfp class fpdemo1 strictfp void f() 2. 错误的使用方法 interface a strictfp void f();public class fpdemo2 strictfp fpdemo2() 一旦使用了关键字 strictfp 来声明某个类、接口或者方法时,那么在这个关键字所声明的范围内所有浮点运算都是精确的,符合ieee-754 规范的。例如一个类被声明为 strictfp ,那么该类中所有的方法都是 strictfp 的。2)抽象类和接口有什么区别?(瞬联)1.abst

30、ract class在 java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface 。2. 在 abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface一般不定义数据成员),所有的成员方法都是abstract的。3.abstract class和 interface所反映出的设计理念不同。其实abstractclass表示的是is-a 关系, interface表示的是like-a中

31、关系。4. 实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。5. 接口中定义的变量默认是 public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。6. 抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。7. 接口中的方法默认都是public,abstract类型的。3)能说一下java 的反射 (reflection)机制吗?(瞬联)开放性和原因连接(causally-connected)是反射系统的两大基本要素4)在 java 中怎样实现多线程?(瞬联)extend

32、s threadimplement runnable方法一:继承 thread 类,覆盖方法 run() ,我们在创建的 thread 类的子类中重写 run() , 加入线程所要执行的代码即可。下面是一个例子:public class mythread extends threadint count= 1, number;public mythread(int num)number = num;(创建线程+ number);public void run() while(true) (线程+ number + :计数+ count);if(+count= 6) return;public s

33、tatic void main(string args)for(int i = 0;i 5; i+) new mythread(i+1).start();这种方法简单明了,符合大家的习惯,但是,它也有一个很大的缺点,那就是如果我们的类已经从一个类继承(如小程序必须继承自 applet 类),则无法再继承 thread 类,这时如果我们又不想建立一个新的类,应该怎么办呢?我们不妨来探索一种新的方法:我们不创建thread 类的子类,而是直接使用它,那么我们只能将我们的方法作为参数传递给 thread 类的实例,有点类似回调函数。但是 java 没有指针,我们只能传递一个包含这个方法的类的实例。那

34、么如何限制这个类必须包含这一方法呢?当然是使用接口!(虽然抽象类也可满足,但是需要继承,而我们之所以要采用这种新方法,不就是为了避免继承带来的限制吗?)java 提供了接口来支持这种方法。方法二:实现runnable接口runnable 接口只有一个方法 run() ,我们声明自己的类实现 runnable 接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是runnable接口并没有任何对线程的支持,我们还必须创建 thread 类的实例,这一点通过 thread 类的构造函数 public thread(runnable target); 来实现。下面是一个例子:pu

35、blic class mythread implements runnable int count= 1, number;public mythread(int num)number = num;创建线程+ number);public void run()while(true)(线程+ number + :计数+ count);【篇三: java 面试题及答案 (面试前必看 )】java 面试题及答案(基础题122 道,代码题19 道)java 相关基础知识1、面向对象的特征有哪些方面1. 抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打

36、算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2. 继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。3. 封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象

37、通过一个受保护的接口访问其他对象。4. 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。6、说出 servlet的生命周期,并说出servlet和 cgi 的区别。servlet被服务器实例化后,容器运行其init 方法,请求到达时运行其 service方法, service方法自动派遣运行与请求对应的doxxx法( doget , dopost )等,当服务器决定将实例销毁的时候调用其方destroy方法。与 cgi 的区别在于 servlet 处于服务器进程中,它

38、通过多线程方式运行其 service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而cgi 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet 。8、ejb 是基于哪些技术实现的?并说出sessionbean和entitybean的区别,statefulbean和 statelessbean的区别。ejb 包括 session bean、entity bean、 message driven bean,基于 jndi 、rmi 、jat等技术实现。sessionbean在 j2ee应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他ejb组件

39、。 entitybean被用来代表应用系统中用到的数据。对于客户机, sessionbean 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。对于客户机, entitybean 是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。session bean还可以再细分为 stateful session bean与stateless session bean,这两种的 session bean 都可以将系统逻辑放在 method之中执行,不同的是 statefulsession bean可以记录呼叫者的状态,因此通常来说,一个使用者会有

40、一个相对应的 stateful session bean的实体。 statelesssession bean虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫stateless session bean的时候, ejbcontainer 并不会找寻特定的 stateless session bean的实体来执行这个 method。换言之,很可能数个使用者在执行某个statelesssession bean的 methods 时,会是同一个bean 的instance 在执行。从内存方面来看,stateful session bean与stateless session bea

41、n比较, stateful session bean会消耗j2ee server 较多的内存,然而 stateful session bean的优势却在于他可以维持使用者的状态。16 、同步和异步有何异同,在什么情况下分别使用他们?举例说明。如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。17 、abstract class 和 interf

42、ace有什么区别 ?声明方法的存在而不去实现它的类被叫做抽象类(abstract class )。不能创建 abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。 abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口( interface )是抽象类的变体。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。

43、当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。18 、heap 和 stack 有什么区别。栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素19 、forward和 redirect的区别redirect 就是服务端根据逻辑 ,发送一个状态码 ,告诉浏览器重新去请求那个地址,一般来说浏览

44、器会用刚才请求的所有参数重新请求,所以 session,request 参数都可以获取。20 、ejb 与 java bean的区别?java bean是可复用的组件,对java bean并没有严格的规范,理论上讲,任何一个java 类都可以是一个bean 。但通常情况下,由于 java bean是被容器所创建(如tomcat )的,所以 java bean应具有一个无参的构造器,另外,通常java bean还要实现serializable接口用于实现bean 的持久性。 java bean实际上相当于微软 com 模型中的本地进程内com 组件,它是不能被跨进程访问的。 enterprise

45、 java bean相当于 dcom ,即分布式组件。它是基于 java 的远程方法调用(rmi )技术的,所以ejb 可以被远程访问(跨进程、跨计算机)。但 ejb 必须被布署在诸如 webspere 、 weblogic 这样的容器中, ejb 客户从不直接访问真正的 ejb 组件,而是通过其容器访问。 ejb 容器是 ejb 组件的代理, ejb 组件由容器所创建和管理。客户通过容器来访问真正的ejb 组件。22 、jsp 中动态 include与静态 include的区别?动态 include用 jsp:include动作实现 jsp:includepage=included.jsp flush=true /它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。静态 include 用 include 伪码实现 ,定不会检查所含文件的变化,适用于包含静态页面 % include file=included.htm %23 、什么时候用assert 。assertion(断言 )在软件开发中是一种常用的调试方式,很多开发语言中都支持

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论