收藏 分享(赏)

java 笔试题及答案(公司1).doc

上传人:精品资料 文档编号:11011667 上传时间:2020-01-31 格式:DOC 页数:13 大小:122.50KB
下载 相关 举报
java 笔试题及答案(公司1).doc_第1页
第1页 / 共13页
java 笔试题及答案(公司1).doc_第2页
第2页 / 共13页
java 笔试题及答案(公司1).doc_第3页
第3页 / 共13页
java 笔试题及答案(公司1).doc_第4页
第4页 / 共13页
java 笔试题及答案(公司1).doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、1.web 中的 forward 和 redirect 的区别?(前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用 forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用 sendRedirect()方法。2. xml 在解释的时候 DOM 和 SAX 协议的区别和含义?DOM:处理大型文件时其性能下降的非常厉害。这个问题是由 DOM 的

2、树结构所造成的,这种结构占用的内存较多,而且 DOM 必须在解析文件之前把整个文档装入内存,适合对 XML 的随机访问SAX:不现于 DOM,SAX 是事件驱动型的 XML 解析方式。它顺序读取 XML 文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理 XML 文件,适合对 XML 的顺序访问3 说明 JNDI、JMS、JTA、RMI 的意思?JNDI(Java Naming and Directory Interface)是 一 个 应 用 程 序 设 计 的 API, 为 开 发 人员 提 供

3、 了 查 找 和 访 问 各 种 命 名 和 目 录 服 务 的 通 用 、 统 一 的 接 口 , 类 似 JDBC 都 是 构建 在 抽 象 层 上 。JMS(Java Messaging Service)是 Java 平台上有关面向消息中间件的技术规范,翻译为Java 消息服务。JMS 支持点对点和发布/ 订阅两种消息模型。JTA(Java Transaction API) 为 J2EE 平台提供了分布式事务服务。 要用 JTA 进行事务界定,应用程序要调用 javax.transaction.UserTransaction 接口中的方法.RMI 是 Java 的 一 组 拥 护 开 发

4、 分 布 式 应 用 程 序 的 API。 RMI 使 用 Java 语 言 接 口 定 义了 远 程 对 象 , 它 集 合 了 Java 序 列 化 和 Java 远 程 方 法 协 议 (Java Remote Method Protocol)。 它 大 大 增 强 了 Java 开 发 分 布 式 应 用 的 能 力4.单子模式Public class SignlePrivate Signle()Pirvate static Signle signle = new Signle();Public static Signle gets()Retrun signle;*2public cl

5、ass MyBean private static MyBean instance = null;private MyBean()/do somethingpublic static synchronized MyBean getInstance()if(instance = null)instance = new MyBean();return instance;你是说单例模式是吧,这个单例模式是延迟加载的模式.还有一种就是即时加载,不需要判断是否有实例存在,先自己 new 出一个实例.5 数据库中 left join 的意思,和在什么场合中应用?LEFT JOIN 操作用于在任何的 FRO

6、M 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。6 ejb 中的 sessionbean 和 entitybean 的区别和含义?SessionBean 在 J2EE 应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他 EJB 组件。EntityBean 被用来代表应用系统中用到的数据。对于客户机,SessionBean 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。对于客户机,EntityBean 是一种持久性对象,它代表一

7、个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。7 抽象类和接口的区别1:一个类可以实现任意多的接口,但是最多只能对一个抽象类进行子类化。2:一个抽象类可以包括非抽象方法,而一个接口的所有方法在效果上都是抽象的。3:一个抽象类可以申明并使用变量,而一个接口不行。4:一个抽象类中的方法的访问修饰符可以使 public,internal,protected,protected internal,private,而接口成员的访问修饰符在默认情况下都是 public,而且,在申明接口成员时,不允许使用访问修饰符(甚至不能使用 public) 。5:一个抽象类可以定义构造函

8、数,而一个接口不行。8 对象序列化的含义Java 序列化技术可以使你将一个对象的状态写入一个 Byte 流里,并且可以从其它地方把该 Byte 流里的数据读出来。重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统里。Java 的序列化机制是RMI、EJB、JNNI 等技术的技术基础。9 数据库中的锁包括什么?基本的封锁类型有两种:排它锁 (X 锁)和共享锁(S 锁).所谓 X 锁,是事务 T 对数据 A 加上 X 锁时,只允许事务 T 读取和修改数据 A,.所谓 S 锁,是事务 T 对数据 A 加上 S 锁时,其他事务只能再对数据 A 加

9、S 锁,而不能加 X 锁,直到 T 释放 A 上的 S 锁若事务 T 对数据对象 A 加了 S 锁,则 T 就可以对 A 进行读取,但不能进行更新(S 锁因此又称为读锁),在 T 释放 A 上的 S 锁以前 ,其他事务可以再对 A 加 S 锁,但不能加 X 锁,从而可以读取 A,但不能更新 A.10 jsp 和 serverlet 的区别(1).简单的来说 Jsp 就是含有 Java 代码的 html,而 servlet 是含有 html 的 Java 代码; (2).Jsp 最终也是被解释为 servlet 并编译再执行,Jsp 不过是 servlet 的另一种编写方式; (3).Jsp 擅

10、长表示,servlet 擅长数据处理,在 MVC 三层结构中,Jsp 负责 V(视图) ,servlet负责 C(控制) ,各有优势,各司其职;11. oracle 中数据表的交集怎么表示第一种方法:利用操作符 intersectintersect 操作符用来合并两个查询,返回两个查询中都存在的记录,即返回两个查询结果的交集,前提是两个查询的列的数量和数据类型必须完全相同。举例说明:表 A 的数据结构:中文名称 字段名 类型 长度学号 code C 4姓名 name C 8表 B 的数据结构:中文名称 字段名 类型 长度学号 Student_code C 4姓名 Student_name C

11、8分数 score N 3表 A 的数据为:(1101 ,韩甲 ) , (1102 , 丁乙 )表 B 的数据为:(1101 ,韩甲 ,99) , (1102 , 丁乙,89) , (1103 , 徐静 ,94)在 oracle 中运行以下查询,图 1 显示了这个查询的结果:SQLselect code, name from Aintersectselect student_code,student_name from B;图 1 使用 intersect 操作符查询的结果 第二种方法: in 子句in 子句可以在子查询中为 where 子句计算所得的值创建一个列表。这种方法与前一种方法有所不

12、同的是,前一种方法比较多列但只使用一个 intersect 就行了,而一个 in 子句用来比较两个子查询的一列,比较几列就要使用几个 in 子句。下面举例说明如何取得两个查询的交集。 仍以和两张数据表为例,在 oracle 中运行以下查询,图 2 显示了这个查询的结果:SQLselect code,name from Awhere A.code in (select student_code from B)and A.name in(select student_name from B)order by A.code;查询结果如图 2 所示。图 2 使用 in 子句查询的结果 以上为笔者使用

13、oracle7.3 的体会,如有不当之处,请不吝赐教。12 jsp 页面中如何传递参数(1)直接在 URL 请求后添加(2)jsp:param3)设置 session 和 request13 jsp 中的 doget()和 dopost()方法的作用?这个两个方法都是 http 协议的方法,doget 用于传输数据量较小(密码会泄露) ,dopost 数据量较大,14 什么是用例?如何确定用例?在 不 展 现 一 个 系 统 或 子 系 统 内 部 结 构 的 情 况 下 , 对 系 统 或 子 系 统 的 某 个 连 贯 的 功 能 单 元的 定 义 和 描 述 。一个用例可以看作是系统的一

14、个功能,例如增加用户,增加角色,查询一个具体的一个事物 ,在 Ejb 的设计中,一个 use case 跟 Session bean 的一个方法是对应的(使用的 session fasade 模式),你说的基础数据管理,我会把它处理成为一个抽象用例,因为我认为基础数据这个概念非常的抽象,什么是真正的基础数据?例如说一个系统中邮政编码算是这个系统的基础数据,那么“邮政编码修改“这个就应该算是用例了.15活动图和时序图的区别?时序图主要强调时间的顺序 活动图主要强调空间上类的交互16 什么是策略模式?什么情况下使用? 策 略 模 式 定 义 了 一 系 列 的 算 法 , 并 将 每 一 个 算

15、法 封 装 起 来 , 而 且 使 它 们 还 可 以 相 互 替 换Context(应 用 场 景 ): 1、 需 要 使 用 ConcreteStrategy 提 供 的 算 法 。2、 内 部 维 护 一 个 Strategy 的 实 例 。3、 负 责 动 态 设 置 运 行 时 Strategy 具 体 的 实 现 算 法 。4、 负 责 跟 Strategy 之 间 的 交 互 和 数 据 传 递 。17 面向接口编程的好处使用接口编程,易于程序扩展,降低程序耦合性。包括结构清晰,类之间通信简单易懂,扩展性好,提高复用性等等。18 事物事务就是一系列的操作,这些操作完成一项任务.只

16、要这些操作里有一个操作没有成功,事务就操作失败,发生回滚事件.即撤消前面的操作,这样可以保证数据的一致性.而且可以把操作暂时放在缓存里,等所有操作都成功有提交数据库,这样保证费时的操作都是有效操作.1 简答题3)说明 jndi、jms、jta、rmi 的意思?web 容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使 JSP,SERVLET 直接更容器中的环境变量接口交互,不必关注其它系统问题。主要有 WEB 服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE 等。该容器提供的接口严格遵守 J2EE 规范中的 WEB APPLICATION 标准。我们

17、把遵守以上标准的 WEB 服务器就叫做 J2EE 中的 WEB 容器。 EJB 容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件 EJB 各种管理功能。只要满足 J2EE 规范的 EJB 放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。 JNDI:(Java Naming myFoo .setWidth(37); myFoo.setHeight(70); 当通过下面的代码序列化之后,MyFoo 对象中的 width 和 Height 实例变量的值(37,70)都被保存到foo.se

18、r 文件中,这样以后又可以把它 从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM 还要保存一些小量信息,比如类的类型等以便恢复原来的对 象。FileOutputStream fs = new FileOutputStream(“foo.ser“); ObjectOutputStream os = new ObjectOutputStream(fs); os.writeObject(myFoo); 4、实现序列化(保存到一个文件)的步骤a)Make a FileOutputStream java 代码FileOutputStream fs = new

19、FileOutputStream(“foo.ser“); b)Make a ObjectOutputStream java 代码ObjectOutputStream os = new ObjectOutputStream(fs); c)write the objectjava 代码os.writeObject(myObject1); os.writeObject(myObject2); os.writeObject(myObject3); d) close the ObjectOutputStreamjava 代码os.close(); 5、举例说明java 代码import java.io.

20、*; public class Box implements Serializable private int width; private int height; public void setWidth(int width) this.width = width; public void setHeight(int height) this.height = height; public static void main(String args) Box myBox = new Box(); myBox.setWidth(50); myBox.setHeight(30); try File

21、OutputStream fs = new FileOutputStream(“foo.ser“); ObjectOutputStream os = new ObjectOutputStream(fs); os.writeObject(myBox); os.close(); catch(Exception ex) ex.printStackTrace(); 6、相关注意事项a)当一个父类实现序列化,子类自动实现序列化,不需要显式实现 Serializable 接口;b)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;c)并非所有的对象都可以序列化,,至于为什么不可以,有

22、很多原因了,比如:1.安全方面的原因,比如一个对象拥有 private,public 等 field,对于一个要传输的对象,比如写到文件,或者进行 rmi 传输 等等,在序列化进行传输的过程中,这个对象的 private 等域是不受保护的。2. 资源分配方面的原因,比如 socket,thread 类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,而且,也是没有必要这样实现。2 选择题说明:不是太难所以,我只说下大概考试的内容。1)抽象类可以是 final、private 嘛?java 类一旦被声明为 abstract(抽象类) ,必须要继承或者匿名(其实匿名也是种继承)

23、才能使用。而 final 则是让该类无法被继承,所以 final 是必然不能和 abstract 同时声明的但是 private 呢?一个类被声明为 private 的时候,它当然是内部类,内部类是可以被它的外部类访问到的,所以,可以继承,private 和 abstract 不冲突。2)异常能出来的情况有什么?3)finally 块的运用,就是出一道程序,然后让你写出输出的结果来,在 finally 块中的 println(“”)不管如何总是要输出出来的。4)jsp 中的 doget()和 dopost()方法的作用?第一:doGet 方法是 servlet 提交报头数据之类的用的,doGe

24、t 方法提交表单的时候会在 url 后边显示提交的内容,正是因为这样所以我们一般对于需要保密的的信息(比如密码等)不用这样的提交方式;而且doGet 方法只能提交 256 个字符,这就指出了它的使用环境,对于我们传递短的文字信息的时候可以用它,但是当我们传递的是比较大的媒体文件的时候就不能够使用它了。doPost 则没有这个限制。通常我们使用的都是 doPost 方法,你只要在 servlet 中让这两个方法互相调用就行了,例如在 doGet 方法中这样写 public void doGet(HttpServletRequest request, HttpServletResponse res

25、ponse) throws ServletException, IOException doPost(request,response); 再把业务逻辑直接写在 doPost 方法中。servlet 碰到 doGet 方法调用直接就会去调用 doPost 因为他们的参数都一样。而且 doGet 方法处理中文问题很困难,要写过滤器之类的。第二:不管是 post 还是 get 方法提交过来的连接,都会在 service 中处理,然后,由 service 来交由相应的doPost 或 doGet 方法处理,如果你重写了 service 方法,就不会再处理 doPost 或 doGet 了。不管是 p

26、ost 还是 get 方法提交过来的连接,都会在 service 中处理,然后,由 service 来交由相应的 doPost 或 doGet 方法处理,如果你重写了 service 方法,就不会再处理 doPost 或 doGet 了。5)数据库中的锁包括什么?数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该

27、事务释放锁之前,其他的事务不能对此数据对象进行更新操作。在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即 X 锁)和共享锁(Share Locks,即 S 锁) 。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。根据保护的对象不同,Oracle 数据库锁可以分为以下几大类:DML 锁(data locks,数据锁) ,用于保护数据的完整性;DDL 锁(dictionary locks,字典锁) ,用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和

28、闩(internal locks and latches) ,保护数据库的内部结构,应用于 SGA;在我们实际应用开发中涉及较多的是 DML 锁,其他两种的话 DBA 会更加关心点;DML 锁的目的在于保证并发情况下的数据完整性,主要包括 TM 锁和 TX 锁,其中 TM 锁称为表级锁,TX 锁称为事务锁或行级锁。当 Oracle 执行 DML 语句时,系统自动在所要操作的表上申请 TM 类型的锁。当 TM 锁获得后,系统再自动申请 TX 类型的锁,并将实际锁定的数据行的锁标志位进行置位。这样在事务加锁前检查 TX 锁相容性时就不用再逐行检查锁标志,而只需检查 TM 锁模式的相容性即可,大大提

29、高了系统的效率。TM 锁包括了 SS、SX、S、 X 等多种模式,在数据库中用 06 来表示。不同的 SQL 操作产生不同类型的 TM 锁。如下图所示:值 锁模式 锁描述 SQL0 NONE 1 NULL 空 SELECT2 SS(ROW-S) 行级共享锁其他对象只能查询这些数据行 SELECT FOR UPDATE、LOCK FOR UPDATE、LOCK ROW SHARE3 SX(ROW-X) 行级排它锁在提交前不允许做 DML 操作 INSERT、UPDATE、DELETE、LOCK ROW SHARE4 S(SHARE) 共享锁 CREATE INDEX、LOCK SHARE5 SS

30、X(S/ROW-X) 共享行级排它锁 LOCK SHARE ROW EXCLUSIVE6 X(eXclusive) 排它锁 ALTER TABLE、DROP TABLE、DROP INDEX 、TRUNCATE TABLE、LOCK EXCLUSIVE在数据行上只有 X 锁(排他锁) 。在 Oracle 数据库中,当一个事务首次发起一个 DML 语句时就获得一个TX 锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条记录上执行 DML 语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态。当第一个会话提交后,TX 锁被释放,其他会话才可以加锁。在大概了解 oracle 的锁机制

31、之后,我们来解决几个基本的问题:1.UPDATE/DELETE 操作会将 RS 锁定,直至操作被 COMMIT 或者 ROLLBACK;若操作未 COMMIT 之前其他 session 对同样的 RS 做变更操作,则操作会被 hold,直至前 session 的UPDATE/DELETE 操作被 COMMIT;2.session 内外 SELECT 的 RS 范围前提:INSERT、UPDATE 操作未 COMMIT 之前进行 SELECT;若在同一 session 内,SELECT 出来的 RS 会包括之前 INSERT、UPDATE 影响的记录;若不在同一 session 内,SELECT

32、 出来的 RS 不会包括未被 COMMIT 的记录;3.SELECT FOR UPDATE OF cols NOWAIT/WAIT SKIP LOCKEDOF cols:只锁定指定字段所在表的 RS,而没有指定的表则不会锁定,只会在多表联合查询时出现;NOWAIT:语句不会 hold,而是直接返回错误 ORA-00054: resource busy and acquire with NOWAIT specified;WAIT N:语句被 hold N 秒,之后返回错误 ORA-30006: resource busy; acquire with WAIT timeout expired;SK

33、IP LOCKED:不提示错误,而是直接返回 no rows selected;以上几个选项可以联合使用的,比较推荐的有:SELECT FOR UPDATE NOWAIT:对同一 RS 执行该 SQL 时,直接返回错误;SELECT FOR UPDATE NOWAIT SKIP LOCKED:对同一 RS 执行该 SQL 时,直接返回空行;PS:当 RS 被 LOCK 住之后,只对同样请求 LOCK 的语句有效,对无需 LOCK 的 SELECT 语句并没有任何影响;6)jsp 和 serverlet 的区别或者是他们的关系?一. Servlet 是什么? 客户机/服务器计算的发展。Java

34、提供了一整套客户机/服务器解决方案,在这个方案中,程序可以自动地下载到客户端并执行,这就是 applet。但是它仅仅是问题的一半。问题的另一半就是 Servlet。 servlet 可以被认为是服务器端的 applet。servlet 被 Web 服务器加载和执行,就如同 applet 被浏览器加载和执行一样。servlet 从客户端(通过 Web 服务器) 接收请求,执行某种作业,然后返回结果。使用 servlet 的基本流程如下: 客户端通过 HTTP 提出请求. Web 服务器接收该请求并将其发给 servlet。如果这个 servlet 尚未被加载,Web 服务器将把它加载到 Java

35、虚拟机并且执行它。 servlet 将接收该 HTTP 请求并执行某种处理。 servlet 将向 Web 服务器返回应答。 Web 服务器将从 servlet 收到的应答发送给客户端。 由于 servlet 是在服务器上执行,通常与 applet 相关的安全性的问题并不需实现。要注意的是 Web 浏览器并不直接和 servlet 通信,servlet 是由 Web 服务器加载和执行的。 而 servlet 是用 Java 编写的,所以它们一开始就是平台无关的。这样,Java 编写一次就可以在任何平台运行(write once,run anywhere)的承诺就同样可以在服务器上实现了。ser

36、vlet 还有一些 CGI 脚本所不具备的独特优点: (本人对 CGI 并不是十分了解,所以这些特点不能完全的体会到,这也是摘自论坛的贴子,请见谅) servlet 是持久的。servlet 只需 Web 服务器加载一次,而且可以在不同请求之间保持服务(例如一次数据库连接)。与之相反,CGI 脚本是短暂的、瞬态的。每一次对 CGI 脚本的请求,都会使 Web 服务器加载并执行该脚本。一旦这个 CGI 脚本运行结束,它就会被从内存中清除,然后将结果返回到客户端。CGI 脚本的每一次使用,都会造成程序初始化过程(例如连接数据库) 的重复执行。 servlet 是与平台无关的。如前所述,servle

37、t 是用 Java 编写的,它自然也继承了 Java 的平台无关性。 servlet 是可扩展的。由于 servlet 是用 Java 编写的,它就具备了 Java 所能带来的所有优点。Java 是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。servlet 自然也具备了这些特征。 servlet 是安全的。从外界调用一个 servlet 的惟一方法就是通过 Web 服务器。这提供了高水平的安全性保障,尤其是在你的 Web 服务器有防火墙保护的时候。 setvlet 可以在多种多样的客户机上使用。由于 servlet 是用 Java 编写的,所以你可以很方便地在HTML 中使用它们,

38、就像你使用 applet 一样。 那么,Servlet 是怎样执行的?怎样来写一个 Servlet,它的基本架构是怎么样的? 这些问题,将在后面部分给予介绍。 二.JSP 与 Servlet 现在已经对 Servlet 有了大概的了解,现在我们就来说说 JSP 和 Servlet 的关系。 JSP 是一种脚本语言,包装了 Java Servlet 系统的界面,简化了 Java 和 Servlet 的使用难度,同时通过扩展JSP 标签(TAG) 提供了网页动态执行的能力。尽管如此,JSP 仍没有超出 Java 和 Servlet 的范围,不仅 JSP页面上可以直接写 Java 代码,而且 JSP

39、 是先被译成 Servlet 之后才实际运行的。JSP 在服务器上执行,并将执行结果输出到客户端浏览器,我们可以说基本上与浏览器无关。它是与 JavaScript 不同的,JavaScript是在客户端的脚本语言,在客户端执行,与服务器无关。 那么 JSP 是什么?就是 Servlet. JSP 与 Servlet 之间的主要差异在于,JSP 提供了一套简单的标签,和 HTML 融合的比较好,可以使不了解 Servlet 的人可以做出动态网页来。对于 Java 语言不熟悉的人(比如像我),会觉得 JSP 开发比较方便。JSP修改后可以立即看到结果,不需要手工编译,JSP 引擎会来做这些工作;而

40、 Servelt 缺需要编译,重新启动Servlet 引擎等一系列动作。但是在 JSP 中,HTML 与程序代码混杂在一起,而 Servlet 却不是这样。也许大家比较混乱了,那么 Servlet 又是什么?下面我们对 JSP 的运行来做一个简单的介绍,告诉大家怎样来执行一个 JSP 文件: 当 Web 服务器(或 Servlet 引擎,应用服务器)支持 JSP 引擎时,JSP 引擎会照着 JSP 的语法,将 JSP 文件转换成 Servlet 代码源文件,接着 Servlet 会被编译成 Java 可执行字节码(bytecode),并以一般的 Servlet 方式载入执行 JSP 语法简单,

41、可以方便的嵌入 HTML 之中,很容易加入动态的部分,方便的输出 HTML。在 Servlet 中输出 HTML 缺需要调用特定的方法,对于引号之类的字符也要做特殊的处理,加在复杂的 HTML 页面中作为动态部分,比起 JSP 来说是比较困难的。 除去了转换和编译阶段,JSP 和 Servlet 之间的区别实在是不大。 JSP 引擎通常架构在 Servlet 引擎之上,本身就是一个 Servlet,把 JSP 文件转译成 Servlet 源代码,再调用Java 编译器,编译成 Servlet。这也是 JSP 在第一次调用时速度比较慢的原因,在第一次编译之后,JSP 与Servlet 速度相同.

42、下面我们来看看为什么他们在第一次编译后再编译的速度相同: 在整个运行过程中,JSP 引擎会检查编译好的 JSP(以 Servlet 形式存在)是否比原始的 JSP 文件还新,如果是,JSP 引擎不会编译;如果不是,表示 JSP 文件比较新,就会重新执行转译与编译的过程。 为了有个深刻的了解,我们看一下 JSP 的运行和开发环境: 浏览器:常见的浏览器有 IE 和 Netscape 两种。 数据库:常用的数据库有 Oracle,SQL Server,Informix,DB2,Sybase,Access,MySQL 等。 操作系统:常见的有 Windows,Linux,以及各种 Unix 系统。

43、Web 服务器:常见的有 IIS,Apache,Netscape Enterprise Server 等。 JSP 引擎:一般 JSP 引擎都以 Servlet 引擎为基础,并以 Servlet 的形式出现。同时,在各种免费和商业引擎的实现中,Servlet 引擎和 Jsp 引擎通常也是一起出现,我们成为 Servlet/JSP 引擎,或从某种成为 JSP 引擎。 JSP 引擎是可以提供 JSP 和 Servlet 运行支持并对其生存周期进行管理的系统级实体。 在 JSP 页面第一次被请求时,JSP 引擎会将 JSP 原始文件转换成 Servlet 源代码,然后调用 Java 编译器,编译成

44、Servlet,并在 Servlet 引擎中执行。当再次有请求的时候,JSP 引擎会见差异编译好的 JSP 是否比原来的 JSP 原始文件要新,如果是,运行 Servlet;如果不是,表示文件已经更新的了,就会从新执行转换和编译的过程。 说到这里,也基本把 JSP 和 Servlet 的关系说清楚了,从我的感觉上看用 JSP 就可以了,简单又方便,又可以和 Bean 很好的兼容使用,功能又很强大,为什么又出现了 Servlet,它又有什么用?何况它的编写又相对复杂。为了把问题说得更清楚一点,我想在这里说一下历史,顺便再讲一下为什么还要用Servlet,Servlet 的好处是什么。7)orac

45、le 中数据表的交集怎么表示?8)jsp 页面中如何传递参数或是有哪些方法?sp 中的参数传递1:利用表单来传递值:2:l 利用隐藏字段来传递值3:利用 cookie 对象来传递Cookie cookie=new Cookie(“my“,“liuliu“)cookie.setMaxage(60*60);(以秒为单位) 最大的生命周期response.addCookie(cookie);Cookie cookies=request.getCookies();(可以通过遍历此数组来访问值)4:sessionsession.setAttribute(“paramName“,paramname);St

46、ring name=session.getAttribute(“paramName“)5:通过链接来传递String name=request.getParameter(“name“);“throws,throw,try,catch,finally 分别代表什么意义在 try 块中可以抛出异常吗 JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally 分别代表什么意义在 try 块中可以抛出异常吗Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在 Java 中,每个异常都是一个对象,它是 Throwable

47、类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java 的异常处理是通过 5 个关键词来实现的: try、catch、throw、throws 和 finally。一般情况下是用 try 来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch )它,或最后(finally )由缺省处理器来处理。用 try 来指定一块预防所有“异常“的程序。紧跟在 try 程序后面,应包含一个 catch 子句来指定你想要捕捉的“异常“的类型。throw 语句用来明确地抛出一个 “异常“ 。throws 用来标明一个成员函数可能抛出的各种“异常“ 。Finally 为确保一段代码不管发生什么“ 异常“都被执行一段代码。可以在一个成员函数调用的外面写一个 try 语句,在这个成员函数内部写另一个 try 语句保护其他代码。每当遇到一个 try 语句,“异常“的框架就放到堆栈上面,直到所有的 try 语句都完成。如果下一级的 try 语句没有对某种“异常“进行处理,堆栈就会展开,直到遇到有处理这种“ 异常“的 try 语句。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报