流行的框架与新技术

1、谈谈你对Struts的理解。

答:struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面。

2、谈谈你对Hibernate的理解。

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

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

3、你对Spring的理解。

答:1)开源框架
  2)IoC(控制反转),将类的创建和依赖关系写在配置文件里,由配置文件注入,实现了松耦合(使用spring时我们就不需要关心通过何种方式实例化一个对象,spring通过控制反转机制自动为我们实例化一个对象。)
  3)AOP 将安全,事务等于程序逻辑相对独立的功能抽取出来,利用spring的配置文件将这些功能插进去,实现了按照方面编程,提高了复用性

  4)依赖注入(DI):Spring使用JavaBean对象的Set方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需要的值的过程就是依赖注入的基本思想。

4、谈谈Struts中的Action servlet。

答:struts的执行流程:

  1:从客户端发出请求(HTTPServletRequest)。

  2:请求经过各种过滤器(filter)。

  3:经过各种过滤器后,到达核心控制器FilterDispatcher,被调用后,通过struts.xml配置文件中Action标签中的映射来确定调用的Action方法。

  4:当确定了调用的Action之后会找到反射生成的指定Action的代理对象(ActionProxy)。

  5:ActionProxy会通过配置文件信息找到指定的Action。

  6:然后会经过系统和自定义拦截器栈,拦截器中都有重写一个public String doIntercept(ActionInvocation invocation) throws Exception{}的方法。

  7:action执行完毕后,会返回一个字符串,该字符串与配置文件Action中result的name属性相对应,将处理得到的数据封装到此视图来。

  8:在依次出了拦截器栈之后,将数据响应(HttpServletResponse)到客户端。其中在经过ActionContextCleanUp时候会清空ActionContext。

  

  由上面执行流程可以看出Action与servlet不同:

  Servlet是单实例多线程的,而Action是多实例多线程的。因为多实例,所有每个请求会产生不同的Action和ActionContext对象,因此线程是安全的。同时因为Action是多实例的,所以Action中可以有成员变量,因为多实例不会公用。而Servlet是单实例多线程,所以一般情况下不会定义成员变量,因为共用同一个成员变量可能出现线程安全的问题。

5、Struts优缺点。

答:  优点:

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

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

3. 页面导航

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

4. 提供Exception处理机制 .

5. 数据库链接池管理

6. 支持I18N

缺点:

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

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

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

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

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

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

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

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

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

6、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。

答:saveorupdate()如果传入的对象在数据库中有就做update操作,如果没有就做save操作。

  save()在数据库中生成一条记录,如果数据库中有,会报错说有重复的记录。

  hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,就抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。

7、简述 Hibernate 和 JDBC 的优缺点?

答:Hibernate就是封装了JDBC,他可以写一条hql语句,可以在不同数据库中使用,不用修改hql语句,但是关联查询效率低。

  JDBC是基础的链接数据库的框架,效率高,但是mysql、oracle、sql service等不同的数据库要写不同的sql语句。

8、iBatis与Hibernate有什么不同?

答:Hibernate是一个全自动的orm映射工具,它可以自动生成sql语句,ibatis需要我们自己在xml配置文件中写sql语句,hibernate要比ibatis功能负责和强大很多。

9、Spring 的依赖注入是什么意思?

答:依赖类不由程序员实例化,而是通过Spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。

 

时间: 2024-07-30 10:06:56

流行的框架与新技术的相关文章

Java笔试题之《流行的框架与新技术》

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

osgi与流行的框架(spring,struts,hibernate等)的集成

1.与流行的 JAVA B/S体系架构的集成 了解了基于osgi系统设计的基本思想,进一步来研究osgi与流行的框架(spring,struts,hibernate等)的集成,这里首先讲解一下集成原理. l        解决和spring的集成 由于spring的应用占据了大部分的java应用领域,所以解决与spring的集成是osgi必须解决的,spring-dm的推出大大促进了两者的结合,有助于osgi进军企业领域. Spring所带来得好处主要有这么两点: 1.       不需要对外的

几种流行Webservice框架性能对比

1摘要 开发webservice应用程序中离不开框架的支持,当open-open网站列举的就有很多种,这对于开发者如何选择带来一定的疑惑.性能Webservice的关键要素,不同的框架性能上存在较大差异,而当前在官方网站.网络资料中可以方便的找到各自框架的介绍,但是很少有针对不同框架性能测试数据.本文选择了比较流行几个框架: Apache Axis1.Apache Axis2.Codehaus XFire.Apache CXF.Apache Wink.Jboss  RESTEasy.sun JA

同是流行MVC框架,比较Strtus2和SpringMVC的区别

Struts2和SpringMVC是比较流行的MVC框架,二者的工作流程大体相似,从下面两张图就可以看出. SpringMVC工作流程图 图二 SpringMVC的工作流程描述 1. 用户向服务器发送请求,请求被Spring前端控制Servelt DispatcherServlet捕获: 2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI).然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及

几种流行Webservice框架性能对照

 转自[http://blog.csdn.net/thunder4393/article/details/5787121],写的非常好,以收藏. 1      摘要 开发webservice应用程序中离不开框架的支持,当open-open站点列举的就有30多种,这对于开发人员怎样选择带来一定的疑惑.性能Webservice的关键要素,不同的框架性能上存在较大差异,而当前在官方站点.网络资料中能够方便的找到各自框架的介绍,可是非常少有针对不同框架性能測试数据.本文选择了比較流行几个框架:Apach

流行框架与新技术

1.谈谈你对struts的理解. struts是一个按MVC模式设计的Web层的框架,本质上是servlet,这个servlet名为ActionServlet或其子类,我们可以在web.xml中将符合某种特征的所有请求交给这个Servlet处理,Servlet在参照一个配置文件(struts-config)将各个请求分别分配给不同的action处理 ActionServlet把请求交给action去处理之前,会将请求参数依照配置文件(struts-config)封装成一个formbean对象传递

Android 必须知道2018年流行的框架库及开发语言,看这一篇就够了!

导语 2017 已经悄悄的走了,2018 也已经匆匆的来了,我们在总结过去的同时,也要展望一下未来,来规划一下今年要学哪些新技术.这几年优秀Android的开源库不断推出,新技术层出不穷,需要我们不断去了解和掌握,在提高自身开发水平的同时,我们需要付出更多学习精力和时间.俗话说,打铁还需自身硬,为了在这个日新月异的技术时代为了生存不被淘汰,必须要求自身掌握的技术不断跟进时代脚步,所以我们必须付出才能得到回报,说没有时间去学习的人永远都会有找不完的借口.好了,闲话不多说了,下面一起来看看流行的技术

十大最流行PHP框架排名

PHP 是一个被广泛使用的来进行Web开发的脚本语言.虽然有很多其它可供选择的Web开发语言,像:ASP 和Ruby,但是PHP是目前为止世界上最为流行的. 那么,是什么让PHP如此流行?PHP 如此之流行是因为比起别的语言来,它更容易学习,网上有一大堆相当相当不错的PHP教程可以让你快速地马上就可以进行Web程序的开发.虽然PHP是是简 单的,而且是容易上手的,但用它编程还是有点麻烦,尤其是一些反复在用的功能.不过,幸运的是,很多开发团队早就注意到了这点,现在在网上,PHP有许多 的可以信任的

Vue, React, AngularJS, and Angular2. 我们对流行JavaScript框架们的选择

2017-08-04 前端大全 (点击上方公众号,可快速关注) 英文:ANTONI ZOLCIAK  译文:众成翻译 www.zcfy.cc/article/vue-react-angularjs-and-angular2-our-take-on-popular-javascript-frameworks-3668.html 如有好文章投稿,请点击 → 这里了解详情 一个有趣的事实是:IBM发表的2017年最值得学习的编程语言名单中,JavaScript榜上有名.这位IT巨头指出,JS在网站中惊