struts面试题.docx
- 文档编号:2505570
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:5
- 大小:25.22KB
struts面试题.docx
《struts面试题.docx》由会员分享,可在线阅读,更多相关《struts面试题.docx(5页珍藏版)》请在冰点文库上搜索。
1.简述Struts框架的初始化流程。
答案:
对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化控制器ActionServlet
ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到ActionMappings对象中。
在Strutsframework中,Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。
其中,Action扮演了真正的控制逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。
2.简述Struts框架响应客户请求的工作流程
1.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。
2.如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
3.根据配置信息决定是否需要表单验证。
如果需要验证,就调用ActionForm的validate()方法。
4.如果ActionForm的validate()方法返回null或返回一个不包含ActionMessge的ActionErrors对象,就表示表单验证成功。
5.ActionServlet根据AtionMapping实例包含的映射信息决定将请求转发给哪个Action。
如果应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法。
6.Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。
7.ActionForward对象指向的JSP组件生成动态页面,返回给客户。
对于以上流程的步骤(4),如果ActionForm的validate()方法返回一个包含一个或多个ActionError的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含客户提交表单的JSP组件。
在这种情况下,不会再创建Action对象并调用Action的execute方法。
3Struts框架的数据验证可分为几种类型?
表单验证(由ActionFormBean处理):
如果用户没有在表单中输入姓名,就提交表单,将生成表单验证错误
业务逻辑验证(由Action处理):
如果用户在表单中输入的姓名为“Monster”,按照本应用的业务规则,不允许向“Monster”打招呼,因此将生成业务逻辑错误。
4简述FormBean的表单验证流程。
1、当用户提交了HTML表单,Struts框架自动把表单数据组装到ActionFormBean中。
2、接下来Struts框架会调用ActionFormBean的validate()方法进行表单验证。
3、如果validate()方法返回的ActionErrors对象为null,或者不包含任何ActionMessage对象,就表示没有错误,数据验证通过。
4、如果ActionErrors中包含ActionMessage对象,就表示发生了验证错误,Struts框架会把ActionErrors对象保存到request范围内,然后把请求转发到恰当的视图组件,视图组件通过 errors>标签把request范围内的ActionErrors对象中包含的错误消息显示出来,提示用户修改错误。 5在struts配置文件中action元素包含哪些属性和子元素? path属性: 指定请求访问Action的路径 type属性: 指定Action的完整类名 name属性: 指定需要传递给Action的ActionFormBean scope属性: 指定ActionFormBean的存放范围 validate属性: 指定是否执行表单验证 input属性: 指定当表单验证失败时的转发路径。 6.简单叙述ActionFormBean的作用 1、ActionFormBean也是一种JavaBean,除了具有一些JavaBean的常规方法,还包含一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默认值。 2、Struts框架利用ActionFormBean来进行View组件和Controller组件之间表单数据的传递。 3、Struts框架把View组件接受到的用户输入的表单数据保存在ActionFormBean中,把它传递给Controller组件,Controller组件可以对ActionFormBean中的数据进行修改JSP文件使用Struts标签读取修改后的ActionFormBean的信息,重新设置HTML表单。 7.叙述ActionForm执行步骤 (1)检查Action的映射,确定Action中已经配置了对ActionForm的映射 (2)根据name属性,查找formbean的配置信息 (3)检查Action的formbean的使用范围,确定在此范围下,是否已经有此formbean的实例。 (4)假如当前范围下,已经存在了此formbean的实例,而是对当前请求来说,是同一种类型的话,那么就重用。 (5)否则,就重新构建一个formbean的实例 (6)formbean的reset()方法备调用 (7)调用对应的setter方法,对状态属性赋值 (8)如果validatede的属性被设置为true,那么就调用formbean的validate()方法。 (9)如果validate()方法没有返回任何错误,控制器将ActionForm作为参数,传给Action实例的execute()方法并执行。 8.在下面的标签中哪些是struts标签 A、 form> B、 text> C、 errors> D、 message> 9、FormBean的作用 答: FormBean是一种JAVABean,除了具有JAVABean的常规方法,还包含一些特殊方法,用于验证表单数据,以及将其属性重新设置为默认值。 FormBean用来进行View组件和Controller组件之间表单数据的传递。 View组件接收到用户输入的表单数据,保存在FormBean中,把它传递给Controller组件,Controller组件可以对FormBean中的数据进行修改。 10、Forward与Global-Forward的区别 答: Forward是根据Actionreturn的值找到对应的JSP页。 当多个Action共同return同一个值时,可将这个Forward元素写在Global-Forward中。 11.问题: 在Struts应用的视图中包含哪些组件? (A)JSP (B)Servlet (C)ActionServlet (D)Action (E)代表业务逻辑或业务数据的JavaBean (F)EJB (G)客户化标签 12问题: 在Struts应用的控制器中包含哪些组件? (A)JSP (B)Servlet (C)ActionServlet (D)Action (E)代表业务逻辑或业务数据的JavaBean (F)EJB (G)客户化标签 13.在struts配置文件中action元素包含哪些属性和子元素? path属性: 指定请求访问Action的路径 type属性: 指定Action的完整类名 name属性: 指定需要传递给Action的ActionFormBean scope属性: 指定ActionFormBean的存放范围 validate属性: 指定是否执行表单验证 input属性: 指定当表单验证失败时的转发路径。 14.问题: 在Struts应用的模型中包含哪些组件? (A)JSP (B)Servlet (C)ActionServlet (D)Action (E)代表业务逻辑或业务数据的JavaBean (F)EJB (G)客户化标签 15.问题: struts框架中,关于FormBean,下列说法正确的是: AFormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给Action B在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证 C用户每次提交表单,都会产生一个新的FormBean实例 D动态FormBean不能进行验证操作 16.问题: struts框架中,在一个Action的配置信息中,name属性指的是: A当前action实例的名字 B当前action所在的类的名字 C该Action中调用的FormBean的实例的名字 D该Action中调用的FormBean的类的所在包名 17.问题: 关于struts项目中的类与MVC模式的对应关系,说法错误的是? AJsp文件实现视图View的功能 BActionServlet这一个类是整个struts项目的控制器 CActionForm、Action都属于Model部分 D一个struts项目只能有一个Servlet 18、问题: 以下哪些说法是正确的? 选项: (A)每个HTTP请求对应一个单独的ActionServlet实例 (B)对于每个请求访问HelloAction的HTTP请求,Struts框架会创建一个单独的HelloAction实例。 (C)每个子应用对应一个单独的RequestProcessor实例 (D)每个子应用对应一个单独的web.xml文件 19ActionFormBean对象是由谁创建的? (A) form>标签处理类 (B)ActionServlet (C)RequestProcessor (D)Action 20、struts框架,错误的是? AStruts中无法完成上传功能 BStruts框架基于MVC模式 CStruts框架容易引起流程复杂、结构不清晰等问题 DStruts可以有效地降低项目的类文件数目 21、问题: 以下代码定义了一个变量,如何输出这个变量的值? defineid="stringBean"value=“helloWorld“/> (A) writename=“stringBean"/> (B) writename=“helloWorld"/> (C)<%=stringBean%> (D)<%StringmyBean=(String)pageContext.getAttribute(“stringBean”,PageContext.PAGE_SCOPE);%><%=myBean%> 22、问题: 把静态文本放在ResourceBundle中,而不是直接在JSP文件中包含这些静态文本,有什么优点? 提高可维护性提高可重用性支持国际化 23.问题: 关于struts项目中的类与MVC模式的对应关系,说法错误的是? AJsp文件实现视图View的功能 BActionServlet这一个类是整个struts项目的控制器 CActionForm、Action都属于Model部分 D一个struts项目只能有一个Servlet 24.Struts工作机制? 为什么要使用Struts? 工作机制: Struts的工作流程: 在web应用启动时就会加载初始化ActionServlet,ActionServlet从 struts-config.xml文件中读取配置信息,把它们存放到各种配置对象 当ActionServlet接收到一个客户请求时,将执行如下流程. - (1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息; - (2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中; -(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法; -(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象,就表示表单验证成功; -(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法; -(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件; -(7)ActionForward对象指向JSP组件生成动态网页,返回给客户; 为什么要用: JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。 但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。 基于Struts开发的应用由3类组件构成: 控制器组件、模型组件、视图组件 25.Struts的validate框架是如何验证的? 在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。 26.说下Struts的设计模式 MVC模式: web应用程序启动时就会加载并初始化ActionServler。 用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法。 Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。 27、STRUTS的应用(如STRUTS架构) Struts是采用JavaServlet/JavaServerPages技术,开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能: 一.包含一个controllerservlet,能将用户的请求发送到相应的Action对象。 二.JSP自由tag库,并且在controllerservlet中提供关联支持,帮助开发员创建交互式表单应用。 三.提供了一系列实用对象: XML处理、通过JavareflectionAPIs自动处理JavaBeans属性、国际化的提示和消息。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- struts 试题
![提示](https://static.bingdoc.com/images/bang_tan.gif)