您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > struts1.x面试题大全
*Struts几个面试题收集1说说Struts的优点、缺点Struts是开源软件,使开发者能更深入的了解其内部实现机制。Struts优点:业界”标准”(很多成功案例),学习资源丰富。Struts的优点主要集中体现在两个方面:Taglib和页面导航。a、利用Struts提供的taglib可以大大节约开发时间。b、维护扩展比较方便。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。c、表现与逻辑分离d、表单验证解决了请求数据的验证问题,增强了系统健壮性。e、便于团队开发Struts缺点:a、大量的使用标签,对于初学者难度较大。b、ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成)Struts提供了几个标签库?都是什么标签库?Struts提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。HTML标签用来创建能够和Struts框架和其他相应的HTML标签交互的HTML输入表单Bean标签在访问JavaBeans及其属性,以及定义一个新的bean时使用Logic标签管理条件产生的输出和对象集产生的循环Template标签随着Tiles框架包的出现,此标记已开始减少使用Nested标签增强对其他的Struts标签的嵌套使用的能力2分析一下struts是如何实现MVC的。Struts采用jsp作为MVC的视图,由ActionServlet具体指定的action动作类作为控制器即MVC中的C,负责视图与模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的JAVA类以进行相应的处理,控制器还指定下一个视图的位置。Struts中的模型主要指的就是javabean,它是模型的代表,主要封装数据和业务逻辑。3说说Struts的处理流程:控制器进行初始化工作,读取配置文件,为不同的Struts模块初始化相应的ModuleConfig对象。控制器接收Http请求,并从ActionConfig中找出对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面,否则控制器将请求分发至具体的Action类进行处理。在控制器调用具体的Action的Execute方法之前,ActionForm对象将利用Http请求中的参数来填充自已。还可以在ActionForm类中调用Validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的ActionErrors对象。执行具体的的Execute的方法,它负责执行相应的业务逻辑。执行完后,返回一个ActionForward对象,控制器通过该ActionForward对象来进行转发工作。也可以把Action要处理的业务逻辑封装在JavaBean中,如果系统中还有EJB,那么通过JavaBean调用EJB以完成业务处理;如果没有EJB,那么就直接在JavaBean中连接数据库,进行数据库相关的操作。4说说Struts几个关键对象的作用:Action、ActionServlet、ActionForm*Struts中DispatchAction和Action类有什么不同DispatchAction是Struts包含的另一个能大量节省开发时间的Action类。与其它Action类仅提供单个execute()方法实现单个业务不同,DispatchAction允许你在单个Action类中编写多个与业务相关的方法。这样可以减少Action类的数量,并且把相关的业务方法集合在一起使得维护起来更容易。要使用DispatchAction的功能,需要自己创建一个类,通过继承抽象的DispatchAction得到。对每个要提供的业务方法必须有特定的方法signature。例如,我们想要提供一个方法来实现对购物车添加商品清单,创建了一个类ShoppingCartDispatchAction提供以下的方法:publicActionForwardaddItem(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){throwsException;}那么,这个类很可能还需要一个deleteItem()方法从客户的购物车中删除商品清单,还有clearCart()方法清除购物车等等。这时我们就可以把这些方法集合在单个Action类,不用为每个方法都提供一个Action类。在调用ShoppingCartDispatchAction里的某个方法时,只需在URL中提供方法名作为参数值。就是说,调用addItem()方法的URL看起来可能类似于:=addItem其中method参数指定ShoppingCartDispatchAction中要调用的方法。参数的名称可以任意配置,这里使用的”method”只是一个例子。参数的名称可以在Struts配置文件中自行设定。*struts的控制器如何知道什么样的信息转发到什么样的Action类呢?在struts中,控制器信息转发的配置映射信息是存储在特定的XML文件(比如struts-config.xml)中的。这些配置信息在系统启动的时候被读入内存,供strutsframework在运行期间使用。在内存中,每一个action元素都与org.apache.struts.action.ActionMapping类的一个实例对应。当可以通过/logonAction.do(此处假设配置的控制器映射为*.do)提交请求信息的时候,控制器将信息委托com.test.LogonAction处理。调用LogonAction实例的execute()方法。同时将Mapping实例和所对应的LogonFormBean信息传入。其中name=LogonForm,使用的form-bean元素所声明的ActionFormBean。*介绍一下struts的Action类ActionServlet把全部提交的请求都被控制器委托到RequestProcessor对象。RequestProcessor使用struts-config.xml文件检查请求URI找到动作Action标示符。一个Action类的角色,就像客户请求动作和业务逻辑处理之间的一个适配器(Adaptor),其功能就是将请求与业务逻辑分开。这样的分离,使得客户请求和Action类之间可以有多个点对点的映射。而且Action类通常还提供了其它的辅助功能,比如:认证(authorization)、日志(logging)和数据验证(validation)。Action最为常用的是execute()方法当Controller收到客户的请求的时候,在将请求转移到一个Action实例时,如果这个实例不存在,控制器会首先创建,然后会调用这个Action实例的execute()方法。StrutsFramework为应用系统中的每一个Action类只创建一个实例。因为所有的用户都使用这一个实例,所以你必须确定你的Action类运行在一个多线程的环境中。*介绍一下struts的ActionServlet类ActionServlet继承自javax.servlet.http.HttpServlet类,其在Strutsframework中扮演的角色是中心控制器。它提供一个中心位置来处理全部的终端请求。控制器ActionServlet主要负责将HTTP的客户请求信息组装后,根据配置文件的指定描述,转发到适当的处理器。按照Servelt的标准,所有得Servlet必须在web配置文件(web.xml)声明。同样,ActoinServlet必须在WebApplication配置文件(web.xml)中描述,有关配置信息如下。servletservlet-nameaction/servlet-nameservlet-classorg.apache.struts.action.ActionServlet/servlet-class/servlet全部的请求URI以*.do的模式存在并映射到这个servlet,其配置如下:servlet-mappingservlet-nameaction/servlet-nameurl-pattern*.do/url-pattern/servlet-mapping一个该模式的请求URI符合如下格式:中心控制器为所有的表示层请求提供了一个集中的访问点。这个控制器提供的抽象概念减轻了开发者建立公共应用系统服务的困难,如管理视图、会话及表单数据。它也提供一个通用机制如错误及异常处理,导航,国际化,数据验证,数据转换等。当用户向服务器端提交请求的时候,实际上信息是首先发送到控制器ActionServlet,一旦控制器获得了请求,其就会将请求信息传交给一些辅助类(helpclasses)处理。这些辅助类知道如何去处理与请求信息所对应的业务操作。在Struts中,这个辅助类就是org.apache.struts.action.Action。通常开发者需要自己继承Aciton类,从而实现自己的Action实例。*Struts中最核心的类和包有哪些?1.org.apache.struts.action基本上,控制整个strutsframework的运行的核心类、组件都在这个包中,比如我们上面提到的控制器ActionServlet。已经Action,ActionForm,ActionMapping等等。struts1.1比1.0多了DynaActionForm类。增加了动态扩展生成FormBean功能2.org.apache.struts.actions这个包是主要作用是提供客户的http请求和业务逻辑处理之间的特定适配器转换功能,而1.0版本中的部分动态增删FromBean的类,也在struts1.1中被Action包的DynaActionForm组件所取代3.org.apache.struts.config提供对配置文件struts-config.xml元素的映射。这也是sturts1.1中新增的功能4.org.apache.struts.utilStrtuts为了更好支持webapplication的应用,体统了一个些常用服务的支持,比如ConnectionPool和MessageSource。详细信息请参考这不是一个包,而是是一个客户标签类的集合。下面包括BeanTags,HTMLTags,LogicTags,NestedTags,TemplateTags这几个用于构建用户界面的标签类。6.org.apache.struts.validatorStruts1.1framework中增加了validatorframework,用于动态的配置from表单的验证。*如何配置struts+spring?在struts-config.xml加入一个插件,通过它加载applicationContext.xml在struts-config.xml修改action-mapping标记,具体action交给了DelegateActionProxy通过DelegateActionProxy进入一spring的环境。在spring的applicationContext.xml加入beanname=”/l
本文标题:struts1.x面试题大全
链接地址:https://www.777doc.com/doc-4524534 .html