




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、J2EE简答题1、简述J2EE的四层模型。运行在客户端机器上的客户层组件;运行在J2EE服务器上的Web层组件;运行在J2EE服务器上的业务逻辑层组件;运行在EIS服务器上的企业信息系统层软件2、什么是对象持久化?即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。3、简述一下ORMAPPING,为什么我们使用它?ORM(Object Relational Mapping)是一种为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。简单说:ORM是通过使用描述对象和数据库
2、之间映射的元数据,将Java程序中的对象自动持久化到关系数据中。本质上就是将数据从一种形式转换到另外一种形式。原因:用它来架起对象和关系型数据库的桥梁,可解决对象层次的映射、对象关系的映射以及对象的持久化问题。4、 简述一下如何使用Hibernate实现对象持久化的过程(可画图或用伪码描述) STEP 1:创建Configuration对象。在这一步中主要为了进行配置文件的装载操作,读取所有的配置文件并进行解析、STEP 2: 创建SessionFactory对象。通过创建好的Configuration对象可以创建一个sessionFactory对象的实例,同时是生成Session对象实例的工
3、厂,他在整个应用中应该是,唯一的。STEP 3:创建Session对象。 Session对象类似于数据库的连接对象,可以理解为与数据库建立的一个连接,但是他的功能要比JDBC中的Connection对象丰富很多。STEP 4:开始一个事务。在Java中定义一个事务操作的开始,这是使用Hibernate进行持久化操作必不可少的步骤STEP 5:进行持久化操作。在这个步骤中可以读取或者保存Java对象。STEP 6:结束事务。在操作完成之后还要进行显式的结束事务的操作。STEP 7:关闭Session。类似于释放数据库的连接。5、为什么要实现序列化?1、序列化以某种存储形式使自定义对象持久化2、序
4、列化将对象转换为可传输方式从一个地方传递到另一个地方3、序列化使程序更具维护性6、比较一下sessionFactory中的opensession()和getcurrentsession()方法1、getCurrentSession创建的session会和绑定到当前线程,而openSession不会。2 、getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭7、比较一下session中的load()和get()方法,以及如何保证每次都是从数据库读取而不是在缓存中读?load()和get()方法均可以根据指定的实体类和id从数据库读取记
5、录,并返回与之对应的实体对象。其区别在于:如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。8、Action接受用户参数输入,主要有哪几种方式?我们常用的是哪一种? 1.Action属性接收参数;2Domain modal(域模型)接收参数;3.Modal driven接收参数。常用第一种跟第
6、二种9、在struts中实现一个action有哪几种方式?最常用的是哪种?1定义一个普通的类,类中只要有一个public String execute()方法且返回一个字符串即可。2.定义一个类,实现Action接口,xwork2.Action这个包的3继承xwork2.ActionSupport这个类。最常用的是第三种10、在struts.xml中Result的type常用的有四种类型1)dispatcher 2)redirect 3)chain 4)redirectAction哪些是服务器跳转?哪些是客户端跳转?dispatcher和chain是服务器端跳转,所以客户端只发起一次请求red
7、irect和redirectAction是客户端跳转,所以客户端发起两次请求。11、j2ee是技术还是平台还是框架?它主要包含哪些技术,列举并简单描述2到3个技术? J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。JDBC:是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。RMI:RMI协议调用远程对象上的方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。12、MVC的各个部分都有哪
8、些技术来实现?如何实现?MVC是ModelViewController的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。13、什么是JNDI?JNDI是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实
9、现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。14、举例并简单描述2到3种动态网页开发技术。1、PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。2、ASP,它是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。ASP的网页文件的格式是.asp,现在常用于各种动态网站中。15、简单描述浏览器输入http
10、:/localhost:8088/myFirstweb/Firstservlet访问web资源的过程(也就是servlet工作的时序图)(提示,解释地址用端口号和地址访问服务器访问资源)。1浏览器会将请求打包成http请求数据包,发送给web服务器,2web服务器中的servlet引擎解析请求并封装为一个HttpServletRequest对象(包含了请求数据),同时创建个HttpServletResponse对象。3servlet调用servlet的service()方法,并将HttpServletReque,HttpServletResponse对象作为参数传递给servlet实例4 se
11、rvlet可以从HttpServletRequest对象中获得请求数据,并处理,当然,servlet也可能要访问数据库。然后将处理之后的结果放到HttpServletResponse中。5servlet引擎从HttpServletResponse中取数据,并将数据打包成http数据包发送给浏览器。16、开发servlet服务器程序三种方法。开发servlet有三种方法:a,实现servlet接口; b,继承GenericServet; c,继承HttpServlet17、通过httpservlet去开发servlet,需要重写doGet和doPost方法。这是常用的方式,请简述Get与Post
12、方法的区别。(1)get是从服务器上获取数据,post是向服务器传送数据。在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。(2)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。(3)GET方式提交的数据最多只能有1024字节,而POST则没有此限制。(4)安全性问题。使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,还是使用 post为好。 18、简述http返回包中的状态码200,302,404,500的
13、意义。200 请求已成功,请求所希望的响应头或数据体将随此响应返回。302 请求的资源现在临时从不同的URI响应请求。404 请求失败,请求所希望得到的资源未被在伺服器上发现。500 伺服器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理.19、简述请求重定向(response.sendRedirect)和请求转发(getRequestDispatcher forward)的区别。1、forward()只能将请求转发给同一个Web应用中的组件,而sendRedirect()方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。2、sendRedirect()方法重定
14、向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用forward()方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。3、forward()方法的调用者与被调用者之间共享相同的request对象和response对象;而sendRedirect()方法调用者和被调用者使用各自的request对象和response对象,它们属于两个独立的请求和响应过程。20、Hibernate拒绝连接、服务器崩溃的原因?最少写三个?1. db没有打开2. 网络连接可能出了问题3. 连接配置错了4. 驱动的driver,url是否都写对了5.
15、LIB下加入相应驱动,数据连接代码是否有误6. 数据库配置可能有问题7. 当前联接太多了,服务器都有访问人数限制的8. 服务器的相应端口没有开,即它不提供相应的服务9 hibernate有哪些缓存,分别怎么使用?10 你对hibernate的了解到了一个什么样的程度?11 写出一个sql语句体现hibernate中一对多的关系21、Update()和saveOrUpdate()的区别?update()方法操作的对象必须是持久化了的对象。也就是说,如果此对象在数据库中不存在的话,就不能使用update()方法。saveOrUpdate()方法操作的对象既可以使持久化了的,也可以使没有持久化的对象
16、。如果是持久化了的对象调用saveOrUpdate()则会更新数据库中的对象;如果是未持久化的对象使用此方法,则save到数据库中。22、Hibernate的三种状态之间如何转换?当对象由瞬时状态(Transient)一save()时,就变成了持久化状态。当我们在Session里存储对象的时候,实际是在Session的Map里存了一份,也就是它的缓存里放了一份,然后,又到数据库里存了一份,在缓存里这一份叫持久对象(Persistent)。Session 一 Close()了,它的缓存也都关闭了,整个Session也就失效了,这个时候,这个对象变成了游离状态(Detached),但数据库中还是存
17、在的。当游离状态(Detached)update()时,又变为了持久状态(Persistent)。当持久状态(Persistent)delete()时,又变为了瞬时状态(Transient),此时,数据库中没有与之对应的记录。23、 工厂模式?工厂模式主要是为创建对象提供了接口。工厂模式按照Java与模式中的提法分为三类:1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一
18、类。下面是使用工厂模式的两种情况:1.在编码时不能预见需要创建哪种类的实例。2.系统不应依赖于产品类实例如何被创建、组合和表达的细节24、 抽象类和接口的区别? 接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的, 另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。 还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常
19、量)的作用.25、 Forward和redirect的区别?forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。26、 持久化对象的三种状态,代表含义?瞬时态:简单的说就是你在程序里面new一个对象,还没有和session关联 持久态:对象和session有了关联,对象
20、处于hibernate框架管理中 游离态:在持久态的情况下,对象和session失去了关联,比如session.close()或session.flush() 后,即游离态,但数据已经存储到了数据库27、 页面之间的值传递?1:可以分成多个参数对的方式用querystring传递。2:可以用特定的字符分隔后组成一个字符串,再用一个参数对的querystring方式传递。3:如果是第三信息的话,可以用在服务器端的session方式传递,一般不用这种方式。因为占服务器资源。4:也可以用cookie方式传递。5:当然还可以用其它的不常的方式传递。28、 Struts框架的数据验证可分为几种类型?表单
21、验证(由ActionForm Bean处理):如果用户没有在表单中输入姓名,就提交表单,将生成表单验证错误业务逻辑验证(由Action处理):如果用户在表单中输入的姓名为“Monster”,按照本应用的业务规则,不允许向“Monster”打招呼,因此将生成业务逻辑错误。29、 写一个Singleton模式的例子?public class Singleton private static final Singleton singleton = new Singleton(); private Singleton() public static Singleton getInstance() re
22、turn singleton; 30、 谈谈你MVC的理解? MVC是一种设计模式,它强制的将应用程序的输入、处理、和输出分开。 使用了MVC的应用程序被分为3个核心部件:试图(View)、模型(Model)、控制器(Controller)。它们各司其职,既分工明确又相互合作。 首先视图接受用户输入请求,然后将请求传递给控制器,控制器再调用某个模型来处理用户的请求,在控制器的控制下,再将处理后的结果交给某个视图进行格式化输出给用户.这是经典的MVC设计执行的基本流程。MVC不仅实现了功能模块和显示模块的分离,同时它还提高了系统的可维护性、可扩展性和组件的可复用性,是一个优秀的创建软件的途径。
23、J2EE把MVC引入了web领域,并在此基础上架构出了一套称为Model2的体系。Model2体系及jsp作为视图显示输出和接受用户输入数据,Servlet作为控制器处理用户请求并根据用户请求选择相应的jsp返回给用户,javaBean作为模型组件用作业务逻辑处理、管理数据的存储和一致性。31、 项目中为什么使用SSH? 1. 使用Struts是因为struts是基于MVC模式的,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现;第二,struts有着丰富的taglib,如能灵活运用,则能大大提高开发效率。2. 使用Hibernate:因为hibernate为Java应用提供了一个易
24、用的、高效率的对象关系映射框架。hibernate是个轻量级的持久性框架,功能丰富。3. 使用Spring:因为spring基于IoC(Inversion of Control,反向控制)和AOP构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现事务管理(Transcation Managment),等等32、 在Struts2中,action是单实例还是多实例,为什么? struts 2的Action是多实例的并非单例,也就是每次
25、请求产生一个Action的对象。原因是:struts 2的Action中包含数据,例如你在页面填写的数据就会包含在Action的成员变量里面。如果Action是单实例的话,这些数据在多线程的环境下就会相互影响,例如造成别人填写的数据被你看到了。所以Struts2的Action是多例模式的。33、Hibernate与jdbc的联系?hibernate是jdbc的轻量级封装,包括jdbc的与数据库的连接(用perty的配置文件实现当然本质是封装了jdbc的forname),和查询,删除等代码,都用面向对象的思想用代码联系起来,hibernate通过hbm 配置文件把po类
26、的字段和数据库的字段关联起来比如数据库的id,在po类中就是pravite Long id; public Long getId() ;public setId(Long id);然后hql语句也是面向对象的,它的查询语句不是查询数据库而是查询类的,这些实现的魔法就是xml文件,其实hibernate=封装的jdbc+xml文件34、 一般用spring做什么?Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of
27、 Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务-如果你需要-还能实现你自己的a
28、spects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。35、 C/S与B/S的区别?C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。C/S 架构也可以看做是胖客户端架构。因为客户端需要实现绝大多数的业务逻辑和界面展示。这种
29、架构中,作为客户端的部分需要承受很大的压力,因为显示逻辑和事务处理都包含在其中,通过与数据库的交互(通常是SQL或存储过程的实现)来达到持久化数据,以此满足实际项目的需要。B/S架构的全称为Browser/Server,即浏览器/服务器结构。Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,Browser客户端,WebApp服务器端和DB端构成所谓的三层架构。B/S架构的系统无须特别安装,只有Web浏览器即可。B/S架构中,显示逻辑交给了Web浏览器,事务处理逻辑在放在了WebApp上,这样就避免了庞大的胖客户端,减少了客户端的压力。因为客户端包含的逻辑
30、很少,因此也被成为瘦客户端。36、 J2EE常用的设计模式?说明工厂模式?Java中的23种设计模式:Factory(工厂模式),Builder(建造模式),Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式), Composite(合成模式),Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),Iterator(迭
31、代子模式), Mediator(调停者模式), Memento(备忘录模式),Observer(观察者模式), State(状态模式), Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不
32、同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。37、BeanFactory的作用是什么?BeanFactory提供的高级配置机制,使得管理任何性质的对象成为可能。在Spring中,BeanFactory是IoC容器的核心接口。它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。Spring为我们提供了许多易用的BeanFactory实现,XmlBeanFactory就是最常用的一个。该实现将以XML方式描述组成应用的对象以及对象间的依赖关系。XmlBeanFactory类将持有此XML配置元数据,并用它来构建一个完全可
33、配置的系统或应用。Ajax的工作原理?通过javascript的方式,将前台数据通过xmlhttp对象传递到后台,后台在接收到请求后,将需要的结果,再传回到前台,这样就可以实现不需要页面的回发,页是数据实现来回传递,从页实现无刷新。 39、何为容器?容器是一个Java 所编写的程序,原先必须自行编写程序以管理对象关系,现在容器都会自动帮您作好。常用容器WebSphere,WebLogic,Resin,Tomcat40、 Spring配置文件中的ref元素的作用是什么?它的两个基本属性是什么? 用于指定属性值为spring容器中的其它bean.两个基本属性是bean和local 41、 Hibe
34、rnate具有的三种检索方式?HQL检索方式 QBC检索方式 SQL检索方式 42、 什么是IOC,请详述? 不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器(在Spring 框架中是 IOC 容器) 负责将这些联系在一起。 就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控,控制权由应用代码中转到了外部容器,控制权的转移,就是所谓的反转。 43、 什么是AOP,请详述? 是面向切面编程 。 AOP 把软件系统分为两个部分:核心关注点和横切关注点。所谓的核心关注点,是业务处理的主要流程,也就是说这个解决方案要做的
35、事。所谓横切关注点,是与核心业务无关的部分,它把常发生在核心关注点的多处,而各处基本相似,如日志,事务,权限等 。 44、 Spring框架的七个模块是什么?(1) spring AOP -面象切面编程 (2)spring DAO -数据访问对象 (3)spring ORM -对象关系影射 (4)spring Contect - 上下文配置,向Spring框架提供上下文信息 (5)spring WEB - -WEB上下文模块 (6)spring WEB-MVC -实现了MVC (7)spring CORE 核心容器提供Spring框架基本功能 45、 Spring的注入方式有哪几种?1. 接口
36、注入(不推荐)2. getter,setter方式注入(比较常用)3. 构造器注入(死的应用)接口注入模式因为具备侵入性,它要求组件必须与特定的接口相关联,因此并不被看好,实际使用有限。Setter 注入:对于习惯了传统 javabean 开发的程序员,通过 setter 方法设定依赖关系更加直观。如果依赖关系较为复杂,那么构造子注入模式的构造函数也会相当庞大,而此时设值注入模式则更为简洁。如果用到了第三方类库,可能要求我们的组件提供一个默认的构造函数,此时构造子注入模式也不适用。构造器注入:在构造期间完成一个完整的、合法的对象。所有依赖关系在构造函数中集中呈现。依赖关系在构造时由容器一次性设定,组件被创建之后一直处于相对“不变”的稳定状态。只有组件的创建者关心其内部依赖关系,对调用者而言,该依赖关系处
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 如何解决工厂管理问题
- 泰星创业品牌介绍
- 员工仪容仪表规范
- 创业宣传月主题班会
- 施工安全管理制度一建
- 2025年-河南省建筑安全员A证考试题库
- 2025年甘肃省安全员C证(专职安全员)考试题库
- 2025江西建筑安全员-B证考试题库及答案
- 多媒体会议室的设计与施工要点
- 宣导美容知识
- 三年级下册口算天天100题(A4打印版)
- 统编版语文四年级下册第四单元教材解读解读与集体备课课件
- 幕墙开启扇维修施工方案
- 销售团队就该这样管:五星评定销售管理实战指南
- 餐饮服务单位食品安全主体责任清单
- 2023年电力二十五项重点反事故措施考试题库(浓缩500题)
- 机械零件的修复技术概述课件
- 辐射与防护学习通课后章节答案期末考试题库2023年
- 第七章-民族乐派与印象主义-2课件
- 项目部行政工作报告
- 存货盘点安排通知盘点工作计划书物资盘点计划方案
评论
0/150
提交评论