收藏 分销(赏)

2024年java笔试题及答案.doc

上传人:w****g 文档编号:9305649 上传时间:2025-03-20 格式:DOC 页数:25 大小:103.04KB 下载积分:10 金币
下载 相关 举报
2024年java笔试题及答案.doc_第1页
第1页 / 共25页
2024年java笔试题及答案.doc_第2页
第2页 / 共25页


点击查看更多>>
资源描述
1.web中的forward和redirect的区分?( 前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送祈求链接。这么,从浏览器的地址栏中能够看到跳转后的链接地址。因此,前者愈加高效,在前者能够满足需要时,尽也许使用forward()措施,并且,这么也有利于隐藏实际的链接。在有些情况下,例如,需要跳转到一个其他服务器上的资源,则必须使用sendRedirect()措施。2. xml在解释的时候DOM和SAX协议的区分和含义? DOM:处理大型文献时其性能下降的非常厉害。这个问题是由DOM的树结构所导致的,这种结构占用的内存较多,并且DOM必须在解析文献之前把整个文档装入内存,适合对XML的随机访问 SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它次序读取XML文献,不需要一次所有装载整个文献。当遇到像文献开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文献,适合对XML的次序访问 3阐明JNDI、JMS、JTA、RMI的意思? JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。 JMS(Java Messaging Service)是Java平台上有关面对消息中间件的技术规范,翻译为Java消息服务。JMS支持点对点和公布/订阅两种消息模型。 JTA(Java Transaction API) 为 J2EE 平台提供了分布式事务服务。要用 JTA 进行事务界定,应用程序要调用 javax.transaction.UserTransaction 接口中的措施. RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程措施协议(Java Remote Method Protocol)。它大大增强了Java开发分布式应用的能力 4.单子模式 Public class Signle{ Private Signle(){ } Pirvate static Signle signle = new Signle(); Public static Signle gets(){ Retrun signle; } } ************************2 public class MyBean { private static MyBean instance = null; private MyBean(){ //do something } public static synchronized MyBean getInstance(){ if(instance == null){ instance = new MyBean(); } return instance; } 你是说单例模式是吧,这个单例模式是延迟加载的模式.尚有一个就是即时加载,不需要判断是否有实例存在,先自己new出一个实例. } 5数据库中left join的意思,和在什么场所中应用? LEFT JOIN操作用于在任何的 FROM 子句中,组合起源表的统计。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包括了从第一个(左边)开始的两个表中的所有统计,虽然在第二个(右边)表中并没有相符值的统计。 6 ejb中的sessionbean和entitybean的区分和含义? SessionBean在J2EE应用程序中被用来完成某些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。 对于客户机,SessionBean是一个非持久性对象,它实现某些在服务器上运行的业务逻辑。 对于客户机,EntityBean是一个持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由既有企业应用程序实现的实体。 7抽象类和接口的区分 1:一个类能够实现任意多的接口,不过最多只能对一个抽象类进行子类化。 2:一个抽象类能够包括非抽象措施,而一个接口的所有措施在效果上都是抽象的。 3:一个抽象类能够申明并使用变量,而一个接口不行。 4:一个抽象类中的措施的访问修饰符能够使public,internal,protected,protected internal,private,而接口组员的访问修饰符在默认情况下都是public,并且,在申明接口组员时,不允许使用访问修饰符(甚至不能使用public)。 5:一个抽象类能够定义结构函数,而一个接口不行。 8对象序列化的含义 Java 序列化技术能够使你将一个对象的状态写入一个Byte 流里,并且能够从其他地方 把该Byte 流里的数据读出来。重新结构一个相同的对象。这种机制允许你将对象通过网络 进行传输,并能够随时把对象持久化到数据库、文献等系统里。Java的序列化机制是RMI、 EJB、JNNI等技术的技术基础。 9数据库中的锁包括什么? 基本的封锁类型有两种:排它锁(X锁)和共享锁(S锁). 所谓X锁,是事务T对数据A加上X锁时,只允许事务T读取和修改数据A,... 所谓S锁,是事务T对数据A加上S锁时,其他事务只能再对数据A加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擅长表示,servlet擅长数据处理,在MVC三层结构中,Jsp负责V(视图),servlet负责C(控制),各有优势,各司其职; 11. oracle中数据表的交集怎么表示 第一个措施:利用操作符intersect   intersect操作符用来合并两个查询,返回两个查询中都存在的统计,即返回两个查询成果的交集,前提是两个查询的列的数量和数据类型必须完全相同。   举例阐明:   表A的数据结构: 中文名称 字段名 类型 长度 学号 code C 4 姓名 name C 8   表B的数据结构: 中文名称 字段名 类型 长度 学号 Student_code C 4 姓名 Student_name C 8 分数 score N 3   表A的数据为:   ('1101 ','韩甲'),('1102 ','丁乙')   表B的数据为:   ('1101 ','韩甲',99),('1102 ','丁乙',89),('1103 ','徐静',94)   在oracle中运行如下查询,图1显示了这个查询的成果: SQL>select code, name from A intersect select student_code,student_name from B;     图1使用intersect操作符查询的成果 第二种措施: in子句   in子句能够在子查询中为where子句计算所得的值创建一个列表。这种措施与前一个措施有所不一样的是,前一个措施比较多列但只使用一个intersect就行了,而一个in子句用来比较两个子查询的一列,比较几列就要使用几个in子句。下面举例阐明怎样取得两个查询的交集。   仍以A和B两张数据表为例,在oracle中运行如下查询,图2显示了这个查询的成果: SQL>select code,name from A where A.code in (select student_code from B) and A.name in (select student_name from B) order by A.code;   查询成果如图2所示。       图2使用in子句查询的成果   以上为笔者使用oracle7.3的体会,如有不当之处,请不吝赐教。 12 jsp页面中怎样传递参数 (1)直接在URL祈求后添加 (2)jsp:param 3)设置session和request 13 jsp中的doget()和dopost()措施的作用? 这个两个措施都是http协议的措施,doget用于传输数据量较小(密码会泄露),dopost数据量较大, 14什么是用例?怎样确定用例? 在不展现一个系统或子系统内部结构的情况下,对系统或子系统的某个连贯的功效单元的定义和描述。 一个用例能够看作是系统的一个功效,例如增加用户,增加角色,查询一个详细的一个事物,在Ejb的设计中,一个use case跟Session bean的一个措施是对应的(使用的session fasade模式),你说的基础数据管理,我会把它处理成为一个抽象用例,因为我以为基础数据这个概念非常的抽象,什么是真正的基础数据?例如说一个系统中邮政编码算是这个系统的基础数据,那么"邮政编码修改"这个就应当算是用例了. 15活动图和时序图的区分? 时序图重要强调时间的次序     活动图重要强调空间上类的交互 16什么是方略模式?什么情况下使用?   方略模式定义了一系列的算法,并将每一个算法封装起来,并且使它们还能够相互替代 Context(应用场景):   1、需要使用ConcreteStrategy提供的算法。   2、 内部维护一个Strategy的实例。   3、 负责动态设置运行时Strategy详细的实现算法。 4、负责跟Strategy之间的交互和数据传递。 17面对接口编程的好处 使用接口编程,易于程序扩展,减少程序耦合性。 包括结构清楚,类之间通信简单易懂,扩展性好,提升复用性等等。 18事物 事务就是一系列的操作,这些操作完成一项任务.只要这些操作里有一个操作没有成功,事务就操作失败,发生回滚事件.即撤消前面的操作,这么能够确保数据的一致性.并且能够把操作暂时放在缓存里,等所有操作都成功有提交数据库,这么确保费时的操作都是有效操作. 1简答题 3)阐明jndi、jms、jta、rmi的意思? web容器:给处在其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,无须关注其他系统问题。重要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。  EJB容器:Enterprise java bean 容器。更具备行业领域特色。他提供应运行在其中的组件EJB各种管理功效。只要满足J2EE规范的EJB放入该容器,立即就会被容器进行高效率的管理。并且能够通过现成的接口来取得系统级别的服务。例如邮件服务、事务管理。  JNDI:(Java Naming & Directory Interface)JAVA命名录录服务。重要提供的功效是:提供一个目录系统,让其他各地的应用程序在其上面留下自己的索引,从而满足迅速查找和定位分布式应用程序的功效。  JMS:(Java Message Service)JAVA消息服务。重要实现各个应用程序之间的通讯。包括点对点和广播。  JTA:(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。  JAF:(Java Action FrameWork)JAVA安全认证框架。提供某些安全控制方面的框架。让开发者通过各种布署和自定义实现自己的个性安全控制方略。   RMI/IIOP:(Remote Method Invocation /internet对象祈求中介协议)他们重要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们能够在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。 4)数据库中left join的意思,和在什么场所中应用? 简单说 左表 全都显示 右表也许为空 应用场所 就是当 左表的数据全要 右表有就显示 没有就不显 这个比较细微,我尽也许回答。 总的来说,2种写法,在oracle 里,效率和性能区分不大。 假如非要比较的话,大约有如下区分: (+) 和 left join ,在检索显示的字段极少的时候,或者干脆就是检索count(*)的时候,在效率和性能上,是同样,甚至cpucost都完全同样; 不过在检索显示的字段比较多得时候,第一次执行,left join 比(+)的效率高;当然,执行第二次之后,因为数据已经到了缓存,区分也不明显了,基本是一致的。 6)ejb中的sessionbean和entitybean的区分和含义? EntityBean: 重要是指可存储的物件, 例如: 学生,学校, 企业, 职工 等等。。。 必须是 Serializable SessionBean: 重要是指商业逻辑物件, 例如: 购物, 执行某功效 etc.表示的是一个过程 SessionBean 又分为: Stateless 和 Stateful 区分就是,Stateful 有状态记忆,Stateless 无状态记忆 Message-Driven Bean: 重要是用于做某些JMS message的处理。这一点能够从Message-Driven Bean 的构架里看到: 当客户 发送一个 message 到 JMS,Container 就会从 Beans Pool 中把注册了的Message-Driven Bean 调出来并且后台运行 ... 我这里是概述,提议你最佳找一本EJB的书来读 ...最新的EJB的版本是3.0 7)抽象类和接口的区分(java经典笔试题中也有)? 8)对象序列化的含义? 1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态,并且能够把保存的对象状态再读出来。虽然你能够用你自己的各种各样的措施来保存Object States,不过Java给你提供一个应当比你自己好的保存对象状态的机制,那就是序列化。 2、什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文献中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候; 3、当对一个对象实现序列化时,到底发生了什么? 在没有序列化前,每个保存在堆(Heap)中的对象都有对应的状态(state),即实例变量(instance ariable)例如: Foo myFoo = new Foo(); myFoo .setWidth(37); myFoo.setHeight(70); 当通过下面的代码序列化之后,MyFoo对象中的width和Height实例变量的值(37,70)都被保存到foo.ser文献中,这么以后又能够把它 从文献中读出来,重新在堆中创建本来的对象。当然保存时候不但仅是保存对象的实例变量的值,JVM还要保存某些小量信息,例如类的类型等以便恢复本来的对 象。 FileOutputStream fs = new FileOutputStream("foo.ser"); ObjectOutputStream os = new ObjectOutputStream(fs); os.writeObject(myFoo); 4、实现序列化(保存到一个文献)的步骤 a)Make a FileOutputStream java 代码 FileOutputStream fs = new FileOutputStream("foo.ser"); b)Make a ObjectOutputStream java 代码 ObjectOutputStream os = new ObjectOutputStream(fs); c)write the object java 代码 os.writeObject(myObject1); os.writeObject(myObject2); os.writeObject(myObject3); d) close the ObjectOutputStream java 代码 os.close(); 5、举例阐明 java 代码 import java.io.*; 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{ FileOutputStream 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)并非所有的对象都能够序列化,,至于为何不能够,有诸多原因了,例如: 1.安全面的原因,例如一个对象拥有private,public等field,对于一个要传输的对象,例如写到文献,或者进行rmi传输 等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。 2. 资源分派方面的原因,例如socket,thread类,假如能够序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,并且,也是没有必要这么实现。 2选择题 阐明:不是太难因此,我只说下大约考试的内容。 1)抽象类能够是final、private嘛? java类一旦被申明为abstract(抽象类),必须要继承或者匿名(其实匿名也是种继承)才能使用。 而final则是让该类无法被继承,因此final是必然不能和abstract同时申明的 不过private呢? 一个类被申明为private的时候,它当然是内部类,内部类是能够被它的外部类访问到的,因此,能够继承,private和abstract不冲突。 2)异常能出来的情况有什么? 3)finally块的利用,就是出一道程序,然后让你写出输出的成果来,在finally块中的println(“”)无论怎样总是要输出出来的。 4)jsp中的doget()和dopost()措施的作用? 第一:doGet措施是servlet提交报头数据之类的用的,doGet措施提交表单的时候会在url后边显示提交的内容,正是因为这么因此我们一般对于需要保密的的信息(例如密码等)不用这么的提交方式;并且doGet措施只能提交256个字符,这就指出了它的使用环境,对于我们传递短的文字信息的时候能够用它,不过当我们传递的是比较大的媒体文献的时候就不能够使用它了。 doPost则没有这个限制。一般我们使用的都是doPost措施,你只要在servlet中让这两个措施相互调用就行了,例如在 doGet措施中这么写 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } 再把业务逻辑直接写在doPost措施中。servlet遇到doGet措施调用直接就会去调用doPost因为他们的参数都同样。并且doGet措施处理中文问题很困难,要写过滤器之类的。 第二:无论是post还是get措施提交过来的连接,都会在service中处理,然后,由service来交由对应的doPost或doGet措施处理,假如你重写了service措施,就不会再处理doPost或doGet了。无论是post还是get措施提交过来的连接,都会在service中处理,然后,由service来交由对应的doPost或doGet措施处理,假如你重写了service措施,就不会再处理doPost或doGet了。 5)数据库中的锁包括什么? 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就也许会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出祈求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象能够被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。 依照保护的对象不一样,Oracle数据库锁能够分为如下几大类: DML锁(data locks,数据锁),用于保护数据的完整性; DDL锁(dictionary locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义; 内部锁和闩(internal locks and latches),保护数据库的内部结构,应用于SGA; 在我们实际应用开发中包括较多的是DML锁,其他两种的话DBA会愈加关心点; DML锁的目标在于确保并发情况下的数据完整性,重要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。 当Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁取得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位进行置位。这么在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提升了系统的效率。TM锁包括了SS、SX、S、X等多个模式,在数据库中用0-6来表示。不一样的SQL操作产生不一样类型的TM锁。如下图所示: 值 锁模式 锁描述 SQL 0 NONE 1 NULL 空 SELECT 2 SS(ROW-S) 行级共享锁 其他对象只能查询这些数据行 SELECT FOR UPDATE、LOCK FOR UPDATE、 LOCK ROW SHARE 3 SX(ROW-X) 行级排它锁 在提交前不允许做DML操作 INSERT、UPDATE、DELETE、 LOCK ROW SHARE 4 S(SHARE) 共享锁 CREATE INDEX、LOCK SHARE 5 SSX(S/ROW-X) 共享行级排它锁 LOCK SHARE ROW EXCLUSIVE 6 X(eXclusive) 排它锁 ALTER TABLE、DROP TABLE、DROP INDEX、 TRUNCATE TABLE、LOCK EXCLUSIVE 在数据行上只有X锁(排他锁)。在 Oracle数据库中,当一个事务初次发起一个DML语句时就取得一个TX锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条统计上执行 DML语句时,第一个会话在该条统计上加锁,其他的会话处在等候状态。当第一个会话提交后,TX锁被释放,其他会话才能够加锁。 在大约了解oracle的锁机制之后,我们来处理几个基本的问题: 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出来的RS不会包括未被COMMIT的统计; 3.SELECT.... FOR UPDATE [OF cols] [NOWAIT/WAIT] [SKIP LOCKED] OF 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; SKIP 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提供了一整套客户机/服务器处理方案,在这个方案中,程序能够自动地下载到客户端并执行,这就是applet。不过它仅仅是问题的二分之一。问题的另二分之一就是Servlet。 servlet能够被以为是服务器端的applet。servlet被Web服务器加载和执行,就犹如applet被浏览器加载和执行同样。servlet从客户端(通过Web服务器)接收祈求,执行某种作业,然后返回成果。使用servlet的基本流程如下: ·客户端通过HTTP提出祈求. ·Web服务器接收该祈求并将其发给servlet。假如这个servlet尚未被加载,Web服务器将把它加载到Java虚拟机并且执行它。 ·servlet将接收该HTTP祈求并执行某种处理。 ·servlet将向Web服务器返回应答。 ·Web服务器将从servlet收到的应答发送给客户端。 因为servlet是在服务器上执行,一般与applet有关的安全性的问题并不需实现。要注意的是Web浏览器并不直接和servlet通信,servlet是由Web服务器加载和执行的。 而servlet是用Java编写的,因此它们一开始就是平台无关的。这么,Java编写一次就能够在任何平台运行(write once,run anywhere)的承诺就同样能够在服务器上实现了。servlet尚有某些CGI脚本所不具备的独特优点: (本人对CGI并不是十分了解,因此这些特点不能完全的体会到,这也是摘自论坛的贴子,请见谅) servlet是持久的。servlet只需Web服务器加载一次,并且能够在不一样祈求之间保持服务(例如一次数据库连接)。与之相反,CGI脚本是短暂的、瞬态的。每一次对CGI脚本的祈求,都会使Web服务器加载并执行该脚本。一旦这个CGI脚本运行结束,它就会被从内存中清除,然后将成果返回到客户端。CGI脚本的每一次使用,都会导致程序初始化过程(例如连接数据库)的重复执行。 servlet是与平台无关的。如前所述,servlet是用Java编写的,它自然也继承了Java的平台无关性。 servlet是可扩展的。因为servlet是用Java编写的,它就具备了Java所能带来的所有优点。Java是健壮的、面对对象的编程语言,它很轻易扩展以适应你的需求。servlet自然也具备了这些特性。 servlet是安全的。从外界调用一个servlet的惟一措施就是通过Web服务器。这提供了高水平的安全性保障,尤其是在你的Web服务器有防火墙保护的时候。    setvlet能够在多个多样的客户机上使用。因为servlet是用Java编写的,因此你能够很以便地在HTML中使用它们,就像你使用applet同样。 那么,Servlet是怎样执行的?怎样来写一个Servlet,它的基本架构是怎么样的? 这些问题,将在背面部分予以简介。 二.JSP与Servlet 目前已经对Servlet有了大约的了解,目前我们就来说说JSP和Servlet的关系。 JSP是一个脚本语言,包装了Java Servlet系统的界面,简化了Java和Servlet的使用难度,同时通过扩展JSP标签(TAG)提供了网页动态执行的能力。尽管如此,JSP仍没有超出Java和Servlet的范围,不但JSP页面上能够直接写Java代码,并且JSP是先被译成Servlet之后才实际运行的。JSP在服务器上执行,并将执行成果输出到客户端浏览器,我们能够说基本上与浏览器无关。它是与JavaScript不一样的,JavaScript是在客户端的脚本语言,在客户端执行,与服务器无关。 那么JSP是什么?就是Servlet. JSP与Servlet之间的重要差异在于,JSP提供了一套简单的标签,和HTML融合的比很好,能够使不了解Servlet的人能够做出动态网页来。对于Java语言不熟悉的人(例如像我),会以为JSP开发比较以便。JSP修改后能够立即看到成果,不需要手工编译,JSP引擎会来做这些工作;而Servelt缺需要编译,重新开启Servlet引擎等一系列动作。不过在JSP中,HTML与程序代码混杂在一起,而Servlet却不是这么。也许大家比较混乱了,那么Servlet又是什么?下面我们对JSP的运行来做一个简单的简介,告诉大家怎样来执行一个JSP文献: 当Web服务器(或Servlet引擎,应用服务器)支持JSP引擎时,JSP引擎会照着JSP的语法,将JSP文献转换成Servlet代码源文献,接着Servlet会被编译成Java可执行字节码(bytecode),并以一般的Servlet方式载入执行 JSP语法简单,能够以便的嵌入HTML之中,很轻易加入动态的部分,以便的输出HTML。在Servlet中输出HTML缺需要调用特定的措施,对于引号之类的字符也要做特殊的处理,加在复杂的HTML页面中作为动态部分,比起JSP来说是比较困难的。 除去了转换和编译阶段,JSP和Servlet之间的区分实在是不大。 JSP引擎一般架构在Servlet引擎之上,自身就是一个Servlet,把JSP文献转译成Servlet源代码,再调用Java编译器,编译成Servlet。这也是JSP在第一次调用时速度比较慢的原因,在第一次编译之后,JSP与Servlet速度相同.下面我们来看看为何他们在第一次编译后再编译的速度相同: 在整个运行过程中,JSP引擎会检查编译好的JSP(以Servlet形式存在)是否比原始的JSP文献还新,假如是,JSP引擎不会编译;假如不是,表示JSP文献比较新,就会重新执行转译与编译的过程。 为了有个深刻的了解,我们看一下JSP的运行和开发环境: 浏览器:常见的浏览器有IE和Netscape两种。 数据库:常用的数据库有Oracle,SQL Server,Informix,DB2,Sybase,Access,MySQL等。 操作系统:常见的有Windows,Linux,以及各种Unix系统。 Web服务器:常见的有IIS,Apache,Netscape Enterprise Server等。 JSP引擎:一般JSP引擎都以Servlet引擎为基础,并以Servlet的形式出现。同时,在各种免费和商业引擎的实现中,Servlet引擎和Jsp引擎一般也是一起出现,我们成为Servlet/JSP引擎,或从某种成为JSP引擎。 JSP引擎是能够提供JSP和Servlet运行支持并对其生存周期进行管理的系统级实体。 在JSP页面第一次被祈求时,JSP引擎会将JSP原始文献转换成Servlet源代码,然后调用Java编译器,编译成Servlet,并在Servlet引擎中执行。当再次有祈求的时候,JSP引擎会见差异编译好的JSP是否比本来的JSP原始文献要新,假如是,运行Servlet;假如不是,表示文献已经更新的了,就会从新执行转换和编译的过程。 说到这里,也基本把JSP和Servlet的关系说清楚了,从我的感觉上看用JSP就能够了,简单又以便,又能够和Bean 很好的兼容使用,功效又很强大,为何又出现了Servlet,它又有什么用?何况它的编写又相对复杂。为了把问题说得更清楚一点,我想在这里说一下历史,顺便再讲一下为何还要用Servlet,Servlet的好处是什么。 7)oracle中数据表的交集怎么表示? 8)jsp页面中怎样传递参数或是有哪些措施? sp中的参数传递 1:利用表单来传递值: <form action="target.jsp"> <input type=text name="usename" value="tom"></form> 2:l利用隐藏字段来传递值 <form action="target.jsp"> <input type=hidden name="test" value="test"></form> 3:利用cookie对象来传递 Cookie cookie=new Cookie("my","liuliu") cookie.s
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服