`
358713428
  • 浏览: 24595 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

J2EE面试题汇总2010

阅读更多

注明!如有雷同,不胜荣幸!

流行的框架与新技术

 

1、谈谈你对Struts的理解。

:

1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。

一个扩展知识点:struts的配置文件可以有多个,可以按模块配置各自的配置文件,这样可以防止配置文件的过度膨胀;

2. ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象(就是一个java类,这个类中的每个属性对应一个请求参数),封装成一个什么样的formbean对象呢?看配置文件。

3.要说明的是, ActionServletformbean对象传递给actionexecute方法之前,可能会调用formbeanvalidate方法进行校验,只有校验通过后才将这个formbean对象传递给actionexecute方法,否则,它将返回一个错误页面,这个错误页面由input属性指定,(看配置文件)作者为什么将这里命名为input属性,而不是error属性,我们后面结合实际的运行效果进行分析。

4.action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,因为程序中使用的是在struts-config.xml配置文件为jsp页面设置的逻辑名,这样可以实现action程序代码与返回的jsp页面名称的解耦。

 

你对struts可能还有自己的应用方面的经验,那也要一并说出来。

2、谈谈你对Hibernate的理解。

:

1. 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象、建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管程序运行的过程和操作怎么样,本质上都是要得到一个结果,程序上一个时刻和下一个时刻的运行结果的差异就表现在内存中的对象状态发生了变化。

2.为了在关机和内存空间不够的状况下,保持程序的运行状态,需要将内存中的对象状态保存到持久化设备和从持久化设备中恢复出对象的状态,通常都是保存到关系数据库来保存大量对象信息。从Java程序的运行功能上来讲,保存对象状态的功能相比系统运行的其他功能来说,应该是一个很不起眼的附属功能,java采用jdbc来实现这个功能,这个不起眼的功能却要编写大量的代码,而做的事情仅仅是保存对象和恢复对象,并且那些大量的jdbc代码并没有什么技术含量,基本上是采用一套例行公事的标准代码模板来编写,是一种苦活和重复性的工作。

3.通过数据库保存java程序运行时产生的对象和恢复对象,其实就是实现了java对象与关系数据库记录的映射关系,称为ORM(即Object Relation Mapping),人们可以通过封装JDBC代码来实现了这种功能,封装出来的产品称之为ORM框架,Hibernate就是其中的一种流行ORM框架。使用Hibernate框架,不用写JDBC代码,仅仅是调用一个save方法,就可以将对象保存到关系数据库中,仅仅是调用一个get方法,就可以从数据库中加载出一个对象。

4.使用Hibernate的基本流程是:配置Configuration对象、产生SessionFactory、创建session对象,启动事务,完成CRUD操作,提交事务,关闭session

5.使用Hibernate时,先要配置hibernate.cfg.xml文件,其中配置数据库连接信息和方言等,还要为每个实体配置相应的hbm.xml文件,hibernate.cfg.xml文件中需要登记每个hbm.xml文件。

6.在应用Hibernate时,重点要了解Session的缓存原理,级联,延迟加载和hql查询。

3AOP的作用。

4、你对Spring的理解。

1.Spring实现了工厂模式的工厂类(在这里有必要解释清楚什么是工厂模式),这个类名为BeanFactory(实际上是一个接口),在程序中通常BeanFactory的子类ApplicationContextSpring相当于一个大的工厂类,在其配置文件中通过<bean>元素配置用于创建实例对象的类名和实例对象的属性。

2. Spring提供了对IOC良好支持,IOC是一种编程思想,是一种架构艺术,利用这种思想可以很好地实现模块之间的解耦。IOC也称为DIDepency Injection),什么叫依赖注入呢?

譬如,Class Programmer

{

       Computer computer = null;

       public void code()

       {

              //Computer computer = new IBMComputer();

              //Computer computer = beanfacotry.getComputer();

              computer.write();

       }

       public void setComputer(Computer computer)

       {

              this.computer = computer;

       }

}
另外两种方式都由依赖,第一个直接依赖于目标类,第二个把依赖转移到工厂上,第三个彻底与目标和工厂解耦了。在spring的配置文件中配置片段如下:

<bean id=”computer” class=”cn.itcast.interview.Computer”>

</bean>

 

<bean id=”programmer” class=”cn.itcast.interview.Programmer”>

       <property name=”computer”  ref=”computer”></property>

</bean>

3. Spring提供了对AOP技术的良好封装, AOP称为面向切面编程,就是系统中有很多各不相干的类的方法,在这些众多方法中要加入某种系统功能的代码,例如,加入日志,加入权限判断,加入异常处理,这种应用称为AOP。实现AOP功能采用的是代理技术,客户端程序不再调用目标,而调用代理类,代理类与目标类对外具有相同的方法声明,有两种方式可以实现相同的方法声明,一是实现相同的接口,二是作为目标的子类在,JDK中采用Proxy类产生动态代理的方式为某个接口生成实现类,如果要为某个类生成子类,则可以用CGLI B。在生成的代理类的方法中加入系统功能和调用目标类的相应方法,系统功能的代理以Advice对象进行提供,显然要创建出代理对象,至少需要目标类和Advice类。spring提供了这种支持,只需要在spring配置文件中配置这两个元素即可实现代理和aop功能,例如,

<bean id=”proxy” type=”org.spring.framework.aop.ProxyBeanFactory”>

       <property name=”target” ref=””></property>

       <property name=”advisor” ref=””></property>

 

</bean>

 

5、谈谈Struts中的Action servlet

6Struts优缺点
优点:
 1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.

2.有丰富的tag可以用 ,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率

3. 页面导航

       使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

4. 提供Exception处理机制 .

5. 数据库链接池管理

6. 支持I18N

缺点

一、    转到展示层时,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器

二、    二、 Struts Action必需是threadsafe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。

三、     测试不方便. Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。

四、     类型的转换. StrutsFormBean把所有的数据都作为String类型,它可以使用工具Commons-Beanutils进行类型转化。但它的转化都是在Class级别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。

五、    Servlet的依赖性过强. Struts处理Action时必需要依赖ServletRequest ServletResponse,所有它摆脱不了Servlet容器。

六、     前端表达式语言方面.Struts集成了JSTL,所以它主要使用JSTL的表达式语言来获取数据。可是JSTL的表达式语言在Collection和索引属性方面处理显得很弱。

七、     Action执行的控制困难. Struts创建一个Action,如果想控制它的执行顺序将会非常困难。甚至你要重新去写Servlet来实现你的这个功能需求。

八、     Action 执行前和后的处理. Struts处理Action的时候是基于classhierarchies,很难在action处理前和后进行操作。

九、     对事件支持不够. struts中,实际是一个表单Form对应一个Action(DispatchAction),换一句话说:在Struts中实际是一个表单只能 对应一个事件,struts这种事件方式称为application eventapplication eventcomponent event相比是一种粗粒度的事件

 

 

7STRUTS的应用(STRUTS架构)

Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能: .包含一个controller servlet,能将用户的请求发送到相应的Action对象。 .JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。 .提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。

 

8、说说struts1struts2的区别。

1.都是MVCWEB框架,

2 struts1的老牌框架,应用很广泛,有很好的群众基础,使用它开发风险很小,成本更低!struts2虽然基于这个框架,但是应用群众并多,相对不成熟,未知的风险和变化很多,开发人员相对不好招,使用它开发项目的风险系数更大,用人成本更高!

3.struts2毕竟是站在前辈的基础设计出来,它会改善和完善struts1中的一些缺陷,struts1中一些悬而未决问题在struts2得到了解决。

4.struts1的前端控制器是一个Servlet,名称为ActionServletstruts2的前端控制器是一个filter,在struts2.0中叫FilterDispatcher,在struts2.1中叫StrutsPrepareAndExecuteFilter

5.struts1action需要继承Action类,struts2action可以不继承任何类;struts1对同一个路径的所有请求共享一个Action实例,struts2对同一个路径的每个请求分别使用一个独立Action实例对象,所有对于struts2Action不用考虑线程安全问题。

6.struts1中使用formbean封装请求参数,在struts2中直接使用action的属性来封装请求参数。

7.struts1中的多个业务方法放在一个Action中时(即继承DispatchAction时),要么都校验,要么都不校验;对于struts2,可以指定只对某个方法进行校验,当一个Action继承了ActionSupport且在这个类中只编写了validateXxx()方法,那么则只对Xxx()方法进行校验。

 

(一个请求来了的执行流程进行分析,struts2是自动支持分模块开发,并可以不同模块设置不同的url前缀,这是通过packagenamespace来实现的;struts2是支持多种类型的视图;struts2的视图地址可以是动态的,即视图的名称是支持变量方式的,举例,论坛发帖失败后回来还要传递boardid。视图内容显示方面:它的标签用ognl,要el强大很多,在国际化方面支持分模块管理,两个模块用到同样的key,对应不同的消息;)

 

       

Struts1不同,Struts2对用户的每一次请求都会创建一个Action,所以Struts2中的Action是线程安全的。

 

给我印象最深刻的是:struts配置文件中的redirect视图的

分享到:
评论

相关推荐

    j2ee面试题大汇总

    ### j2ee面试题大汇总知识点解析 #### 一、面向对象的基本特征 1. **抽象** 抽象是面向对象编程的核心概念之一,指的是在设计阶段仅关注对象的关键特性和行为,忽略不必要的细节。它可以帮助我们构建更加简洁、...

    J2EE面试题集锦(附答案) - J2EE

    **J2EE面试题集锦(附答案)** 在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)作为企业级应用开发的基石,一直备受关注。掌握J2EE技术是许多Java开发者职业生涯中的重要一步,而面试则是检验开发者技能的...

    J2EE面试题总结

    ### J2EE面试题总结知识点详解 #### 一、Hibernate:对象/关系数据库映射工具 **概述**: - **定义**:Hibernate是一种强大的对象/关系数据库映射(Object/Relational Mapping,简称ORM)工具,它允许开发者将Java...

    j2ee面试试题汇总大全

    **J2EE面试试题汇总大全** 在Java企业级应用开发领域,J2EE(Java 2 Platform, Enterprise Edition)是核心框架之一,它为构建分布式、多层的企业级应用程序提供了全面的平台支持。掌握J2EE技术对于求职者来说至关...

    最新J2EE面试题总结

    J2EE面试题涵盖了多种技术和框架,这些都是开发企业级Java应用程序的关键组成部分。以下是一些核心知识点的详细说明: 1. **Hibernate**:Hibernate是一个流行的ORM(Object-Relation Mapping)框架,它使得Java...

    java与j2ee面试试题总结(终结版)

    这份"java与j2ee面试试题总结(终结版)"包含了广泛的知识点,旨在帮助求职者准备面试,同时也为学习者提供了深入理解这两项技术的窗口。 首先,让我们聚焦于Java。Java是一种面向对象的编程语言,以其“一次编写,...

    J2EE面试题集锦(收集了很多公司的面试题总结)

    以下是一些常见的J2EE面试题及相关的知识点解析: 1. 类的继承性: - `java.lang.Thread`、`java.lang.Number`和`java.lang.ClassLoader`可以被继承,因为它们不是final类。 - `java.lang.Double`、`java.lang....

    JAVA J2EE基础 面试题汇总

    JAVA J2EE基础面试题汇总提供了对JAVA编程语言及其企业级应用框架的深入理解,以下是对给定文件中提到的知识点的详细解析: ### Java的历史背景 Java最初由Sun Microsystems在1995年推出,源于一个名为Green的项目...

    J2EE面试问题汇总

    以上只是 J2EE 面试中可能涉及的部分主题,每个主题都可以深入探讨,了解这些知识点有助于在面试中表现出扎实的技术功底。在准备面试时,不仅要掌握理论知识,还要多做实践,通过实际项目来巩固和提高技能。

    JAVA和J2EE面试题

    ### JAVA和J2EE面试题知识点汇总 #### 1. 面向对象的基本特征 面向对象编程(Object-Oriented Programming, OOP)的核心特征包括抽象、继承、封装和多态。 - **抽象**:指从具体事物中提取共同特征,忽略不相关的...

    J2EE面试题集锦(附答案).doc

    J2EE面试题集锦涵盖了Java企业级应用开发的基础知识,包括类继承、抽象类与接口的区别、数据结构原理、Web容器概念以及J2EE相关的技术和服务。以下是对这些知识点的详细阐述: 1. 类继承:在Java中,不是所有的类都...

    J2EE面试问题汇总-CHR

    一、 Java 与面向对象基础 1. final, finally, finalize 的概念和区别: - final:final 是一...以上内容涵盖了 J2EE 面试中常见的知识点,对于准备面试的 Java 开发者来说,理解并掌握这些概念和技术是至关重要的。

    j2EE面试题

    j2EE面试题,里面汇总各类企业面试常问的的技术题,会有很大的帮助啊!

    2005-2011年全新各大公司j2ee面试题汇总大全

    ### Java基础知识点解析 #### 1. 多个类在一个.java文件中 - 在一个`.java`源文件中可以包含多个类(不是内部类),但只能有一个公共类(public class),且该公共类的名字必须与文件名相同。 ...

    j2ee面试宝典及面试总结题

    **J2EE面试宝典及面试总结题** 在IT行业中,尤其是Java开发领域,J2EE(Java 2 Platform, Enterprise Edition)是企业级应用开发的重要框架。掌握J2EE的相关知识对于求职者来说至关重要,因为这直接关系到能否顺利...

    J2EE面试题集锦(附答案)

    以上内容涵盖了J2EE面试中常见的问题,涉及到J2EE的核心组件如Servlet、JSP、EJB、JMS、JTA、JNDI、RMI以及它们的作用和区别。理解这些知识点对于开发者在J2EE领域的面试和实际开发工作都至关重要。

    J2EE面试题集(附答案).doc

    ### J2EE面试题集知识点解析 #### 一、基础知识篇 ...以上知识点总结了J2EE面试题集中的一些重点内容,涵盖了J2EE的基础知识、核心组件及EJB的相关概念和技术要点,有助于深入理解J2EE架构及其关键技术。

Global site tag (gtag.js) - Google Analytics