Java框架面试题总结_201104

上传人:M****1 文档编号:504305514 上传时间:2023-03-01 格式:DOCX 页数:30 大小:164.91KB
返回 下载 相关 举报
Java框架面试题总结_201104_第1页
第1页 / 共30页
Java框架面试题总结_201104_第2页
第2页 / 共30页
Java框架面试题总结_201104_第3页
第3页 / 共30页
Java框架面试题总结_201104_第4页
第4页 / 共30页
Java框架面试题总结_201104_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《Java框架面试题总结_201104》由会员分享,可在线阅读,更多相关《Java框架面试题总结_201104(30页珍藏版)》请在金锄头文库上搜索。

1、Struts篇1.Struts的工作流程当客户端向浏览器发送HTTP请求时,所有浏览器请求都被提交给ActionServlet处理。如果用户提交表单,则会将表单中的数据放入到ActionForm中。ActionServlet根据struts_config.xml文件中预先配置好的设置选择将请求转发到哪个action对象,action对象从actionForm对象中获取数据,但后调用业务逻辑组件,完成业务功能。2. Struts的工作流程分解Web应用如果采用struts框架,在web应用启动时就会加载并初始化ActionServlet,ActionServlet从struts_config.x

2、ml文件中读取配置信息,基本执行步骤如下:(1) 所有浏览器请求都被提交给ActionServlet处理(2) ActionServlet根据struts_config.xml文件中预先配置好的设置,选择应该将请求转发到哪个action对象.(3) 当用户提交表单时,一个配置好的ActionForm对象将被创建,并被填入表单中的相当数据.(4) Action对象从ActionForm对象中获取数据.(5) Action对象调用业务逻辑组件完成业务功能.3. Struts控制器组件的组成.和控制器的主要功能Struts控制器组件主要包括:ActionServlet组件:充当Struts框架的中央

3、控制器.RequestRrocessor组件:充当每个子应用模块的请求处理器.Action组件:负责处理一项具体的业务.Struts控制器组件主要完成以下任务:接受用户请求.根据用户请求,调用合适的模型组件来执行相应的业务逻辑. 获取业务逻辑执行结果. 根据当前状态以及业务逻辑执行结果,选择合适的视图组件返回给用户.4. Struts中的几个关键对象的作用(说说几个关键对象的作用)ActionServlet类控制导航流.ActionServlet根据URI来决定哪个Action类被用于处理请求,Action可以校验输入,并访问业务层以便从数据库检索信息.Action需要知道页面提交了哪些内容,

4、所以由ActionServlet根据请求URI来决定将请求参数绑定到哪个ActionForm中并传入Action.Action在完成业务逻辑后,返回一个ActionForward对象ActionServlet根据ActionForward对象中的路径来调用页面完成响应.Struts将这些信息绑定在一个ActionMapping对象中,一个ActionMapping对应一个请求URI,当请求路径到达的时候ActionServlet就会查询ActionMapping对象,ActionMapping对象将告诉ActionServlet哪个Action类会被调用,哪个ActionForm类被用于传递页

5、面数据以及哪些ActionForward将被用于转向.有关Action,ActionForm,ActionForward等信息,通过struts-config.xml配置文件来定义.5. Struts工作流程图(用例图)注:Servlet容器在启动时,或者用户首次请求ActionServlet时加载ActionServlet类.Sru(sonfig.xLTiJ护,诘廉转找到具怀血Liw上卉1JSP)Etruti程集总控制臨(ActtotiScrvleTiI)摆始化让齐菲拧“I狀;AlUlhi)Jf!Trl-unnDtriui/HTT卩响应倘月后fi业券功邙塗宣或HTTP话球转换HPi酮tfU目

6、认响应对猱返回目权响应对条模型(AcrinnFomi)业务丿;链冀(JaBean-ElB)6. 说说MVC设计模式和它的优点MVC是一种设计模式,.它强制性的把应用程序的输入,处理和输出分开.MVC把应用程序分成三个核心模块:模型(Model),视图(View)和控制器(Controller).他们分别处理不同的任务.视图是用户看到并与之交互的界面.视图向用户显示相关的数据,并能接受用户的输入数据,但是它不进行任何实际的业务处理.模型是应用程序的主体部分.模型表示业务数据和业务逻辑.一个模型能为多个视图提供数据.由于同一个模型可以被多个视图重用,所以提高了应用的重用性.控制器接受用户的输入并调

7、用模型和视图去完成任务.MVC的处理逻辑如下:首先控制器接受用户请求,并决定应该调用哪个模型来进行处理,然后模型根据用户请求进行相应的业务逻辑处理,并返回数据.最后控制器调用相应的视图来格式化模型返回的诗句,并通过视图呈现给用户.MVC的优点:(1) 在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性.(2) MVC的三个模块相互独立,改变其中的一个不会影响其他两个,所以根据这种设计思想能构造良好的松耦合的构件.(3) 控制器可以用来连接不同的模型和视图去完成用户的需求,也

8、可以为构造应用程序提供强有力的手段.给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进行处理,然后选择适当的视图将结果显示给用户.7. 说说struts是如何实现MVC的?Struts采用JSP作为MVC的视图,控制器由ActionServlet和Action类来实现.控制器负责视图和模型之间的交互.模型由实现业务逻辑的JavaBean或EJB组件构成,然后说说Struts的工作流程.8. Struts优点与缺点Struts是开源软件,使开发者能更深入的了解其内部实现机制。Struts优点:业界标准(很多成功案例),学习资源丰富。Struts的优点主要集中体现在两个方面:Ta

9、glib和页面导航。a、利用Struts提供的taglib可以大大节约开发时间。b、维护扩展比较方便。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。c、表现与逻辑分离d、表单验证解决了请求数据的验证问题,增强了系统健壮性。e、便于团队开发Struts缺点:a、大量的使用标签,对于初学者难度较大。b、ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成)9.strust的Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安全?如果是,说明原因不是.为了确保action的线程安全,最好的办法就是不要

10、在action里定义实列变量.10.Tiles框架是什么?Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离。11.struts1.x和struts2的区别本文将从Struts1和Struts2的各个方面进行比较特征Struts1Struts2Action类Strutsl的action需要去继承一个抽象基类。一个普遍问题就是Strutsl是面向抽象类编程来代替接口编程Struts2的action可以实现一个Action接口,也可以同时实现一些其他的接口来添置一些附加的,常用的服务。Struts2提供一个基类ActionSupport实现了一些常用的接口。虽然Actio

11、n接口不是必须的。任何附带execute方法的POJO对象都可以作为Struts2的action对象。线程模型Strutsl的action是单例的而且必须是线程安全的,因为该类会只有唯一一个引用来为action处理所有的请求。单例策略会限制Struts2的Action对象是针对每一个请求的,所以自然也就不存在线程安全问题了。(实际上,)Strutsl的action的功能以及需要扩展的额外的功能(ThesingletonstrategyplacesrestrictionsonwhatcanbedonewithStruts1Actionsandrequiresextracaretodevelop)

12、。Struts1的action必须是线程安全的并且是同步的。Servlet的依赖Strutsl的Action依赖于ServletAPI,因为当Action被调用的时候HttpServletRequest和HttpServletResponse对象是通过execute方法进行处理的。Struts2的Action和容器的连接并不紧密。通常servlet上下文被描绘成简单的Map映射,允许Action被单独测试。当然,如果需要的话Struts2的Action也可以通过访问初始的request和response来完成一些功能。然而,其他的一些架构元素导致降低或者删除了直接访问request和respo

13、nse的需求。易测试性测试Struts1的Action有一个大障碍就是execute方法是直接暴露于servletAPI的。Struts2的Action可以很容易的通过设置属性调用方法来进行测试。当然依赖注入的支持也使得测试变得简单。输入处理Strutsl使用一个ActionForm对象来获取用户的输入。和action一样,所有的ActionForm都必须继承自一个基类。因为其他的javaBean不能被用作ActionForm,开发者通常要写一些多余的类来获取用户输入。DynaBean可以被用做生成ActionForm类的一个选择,但是开发者需要对现有的javaBean进行重写。Struts2

14、使用Action属性作为输入属性,除掉了对于输入对象的需求。输入属性可以是一个拥有他自己的属性的对象。Action属性是通过标签和web页面交互。Struts2也支持ActionForm模型,就是POJO的Form对象和POJO的Action。多数的对象类型,包括商业逻辑对象和领域对象都可以作为输入/输入对象。模式驱动特征简化了标签和POJO输入对象的关系。表达式语言Struts1和JSTL结合,所以他可以使用JSTL的EL。Struts2也支持JSTL,但是这个框架也支持更加强大的表达式语言OGNL表现层和类型值的绑定Struts1使用标准的JSP机制将对象绑定到pagecontext来进行

15、访问。Struts2使用”WlueStack”技术,所以标签不用将视图和表现的对象结合就可以得到值.ValueStack策略允许通过一系列可能具有相同属性名字但是不同属性类型的的类型来完成视图的重用,类型转换Strutsl的ActionForm通常都是String类型。Strutsl通过Commons-Beanutils实现类型转换。Struts2使用0GNL实现类型转换,框架包含了对基础和公共类型的转换器。验证Strutsl支持通过ActionForm中的validate方法实现手工验证。也可以通过扩展通用的验证框架进行验证。对于同一个类可以有不同的验证,但是不能关联到子对象的验证。Struts2也支持通过validate方法进行手工验证以及Xwork验证框架进行验证。Xwork验证框架支持将验证链接到子属性,子属性使用了为属性类型和验证上下文定义的验证。Action执行的控制Strutsl支持为每一个模块分配请求处理(生命周期),但是一个模块中的所有Action必须分享相同的生命周期。Struts2支持通过拦截器栈为每个Action创建不同的生命周期。通常对于不同的Action根据需要都要有对应的栈被创建和使用。12.Struts的常

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号