欢迎来到天天文库
浏览记录
ID:37851831
大小:274.00 KB
页数:40页
时间:2019-06-01
《JAVA三大框架面试题-如果你能够撑握保证找到一份好工作》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Struts2面试题1、struts2工作流程Struts2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。核心控制器FilterDispatcher是Struts2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。Struts2的工作流程相对于Struts1要简单,与WebWork框架基本相同,所以说S
2、truts2是WebWork的升级版本。基本简要流程如下:1、客户端初始化一个指向Servlet容器的请求;2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMeshPlugin)3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4、如果ActionMapper决定需要调用某个Action,FilterDispatcher
3、把请求的处理交给ActionProxy5、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类6、ActionProxy创建一个ActionInvocation的实例。7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的
4、JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper9、响应的返回是通过我们在web.xml中配置的过滤器10、如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocalActionContext;如果ActionContextCleanUp不使用,则将会去清理sreadlocals。2、说下Struts的设计模式MVC模式:web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个
5、配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法。Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定
6、的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。3、拦截器和过滤器的区别1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。4、struts1于struts2的比较1、Action 类: Struts1要求Ac
7、tion类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。 Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。2、线程模式: Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要
8、在开发时特别小心。Action资源必须是线程安全的或
此文档下载收益归作者所有