1. 简述Struts框架的初始化流程。



答案:



对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化控制器ActionServlet



ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到ActionMappings对象中。



在Struts framework中, Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。



其中,Action扮演了真正的控制逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。



2. 简述Struts框架响应客户请求的工作流程



答案:



(1)如果ActionMapping实例不存在,就创建一个ActionMapping对象,它包含了把请求转发给哪个Action的信息。



(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。



(3)根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。



(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。



(5)ActionServlet根据配置信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute方法。



(6)Action的execute方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。



(7)ActionForward对象指向的JSP组件生成动态网页,返回给客户。



对于以上流程的步骤(4),如果ActionForm的validate()方法返回一个包含一个或多个ActionError的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含客户提交表单的JSP组件。在这种情况下,不会再创建Action对象并调用Action的execute方法。



3 Struts框架的数据验证可分为几种类型?



答案:



表单验证(由ActionForm Bean处理):如果用户没有在表单中输入姓名,就提交表单,将生成表单验证错误



业务逻辑验证(由Action处理):如果用户在表单中输入的姓名为“Monster”,按照本应用的业务规则,不允许向“Monster”打招呼,因此将生成业务逻辑错误。



4 简述Form Bean的表单验证流程。



答案:



1、当用户提交了HTML表单,Struts框架自动把表单数据组装到ActionForm Bean中。



2、接下来Struts框架会调用ActionForm Bean的validate()方法进行表单验证。



3、如果validate()方法返回的ActionErrors 对象为null,或者不包含任何ActionMessage对象,就表示没有错误,数据验证通过。



4、如果ActionErrors中包含ActionMessage对象,就表示发生了验证错误,Struts框架会把ActionErrors对象保存到request范围内,然后把请求转发到恰当的视图组件,视图组件通过<html:errors>标签把request范围内的ActionErrors对象中包含的错误消息显示出来,提示用户修改错误。



5在struts配置文件中action元素包含哪些属性和子元素?



答案:



path属性:指定请求访问Action的路径



type属性:指定Action的完整类名



name属性:指定需要传递给Action的ActionForm Bean



scope属性:指定ActionForm Bean的存放范围



validate属性:指定是否执行表单验证



input属性:指定当表单验证失败时的转发路径。



<action>元素还包含一个<forward>子元素,它定义了一个请求转发路径。



6. 简单叙述ActionForm Bean的作用



答案:



1、ActionForm Bean也是一种JavaBean,除了具有一些JavaBean的常规方法,还包含一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默认值。



2、Struts框架利用ActionForm Bean来进行View组件和Controller组件之间表单数据的传递。



3、Struts框架把View组件接受到的用户输入的表单数据保存在ActionForm Bean中,把它传递给Controller组件,Controller组件可以对ActionForm Bean中的数据进行修改JSP文件使用Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。



7 .叙述ActionForm执行步骤



答案:



(1)检查Action的映射,确定Action中已经配置了对ActionForm的映射



(2)根据name属性,查找form bean的配置信息



(3)检查Action的formbean的使用范围,确定在此范围下,是否已经有此form bean的实例。



(4)假如当前范围下,已经存在了此form bean的实例,而是对当前请求来说,是同一种类型的话,那么就重用。



(5)否则,就重新构建一个form bean的实例



(6)form bean的reset()方法备调用



(7)调用对应的setter方法,对状态属性赋值



(8)如果validatede的属性被设置为true,那么就调用form bean的validate()方法。



(9)如果validate()方法没有返回任何错误,控制器将ActionForm作为参数,传给Action实例的execute()方法并执行。



8.在下面的标签中哪些是struts标签



A、<html:form>



B、<html:text>



C、<html:errors>



D、<html:message>



答案:A B C



9、FormBean的作用



答:FormBean是一种JAVABean,除了具有JAVABean的常规方法,还包含一些特殊方法,用于验证表单数据,以及将其属性重新设置为默认值。 FormBean用来进行View组件和Controller组件之间表单数据的传递。View组件接收到用户输入的表单数据,保存在FormBean中,把它传递给Controller组件,Controller组件可以对FormBean中的数据进行修改。



10、Forward与Global-Forward的区别



答:Forward是根据Action return的值找到对应的JSP页。当多个Action共同return同一个值时,可将这个Forward元素写在Global-Forward中。



11.问题:在Struts应用的视图中包含哪些组件?



选项:



(A) JSP



(B) Servlet



(C) ActionServlet



(D) Action



(E) 代表业务逻辑或业务数据的JavaBean



(F) EJB



(G) 客户化标签



答案:A,G



12问题:在Struts应用的控制器中包含哪些组件?



选项:



(A) JSP



(B) Servlet



(C) ActionServlet



(D) Action



(E)代表业务逻辑或业务数据的JavaBean



(F) EJB



(G) 客户化标签



答案:B,C,D



13.在struts配置文件中action元素包含哪些属性和子元素?



答案:



path属性:指定请求访问Action的路径



type属性:指定Action的完整类名



name属性:指定需要传递给Action的ActionForm Bean



scope属性:指定ActionForm Bean的存放范围



validate属性:指定是否执行表单验证



input属性:指定当表单验证失败时的转发路径。



<action>元素还包含一个<forward>子元素,它定义了一个请求转发路径。



14. 问题:在Struts应用的模型中包含哪些组件?



选项:



(A) JSP



(B) Servlet



(C) ActionServlet



(D) Action



(E) 代表业务逻辑或业务数据的JavaBean



(F) EJB



(G) 客户化标签



答案:F



15. 问题: struts框架中,关于FormBean,下列说法正确的是:

A FormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给Action

B 在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证

C 用户每次提交表单,都会产生一个新的FormBean实例

D 动态FormBean不能进行验证操作



答案:A



16. 问题:struts框架中,在一个Action的配置信息中,name属性指的是:

A 当前action实例的名字

B 当前action所在的类的名字

C 该Action中调用的FormBean的实例的名字

D 该Action中调用的FormBean的类的所在包名



答案:C



17. 问题:关于struts项目中的类与MVC模式的对应关系,说法错误的是?

A Jsp文件实现视图View的功能

B ActionServlet这一个类是整个struts项目的控制器

C ActionForm、Action都属于Model部分

D 一个struts项目只能有一个Servlet



答案:D



18、问题:以下哪些说法是正确的?



选项:(A)每个HTTP请求对应一个单独的ActionServlet实例



(B)对于每个请求访问HelloAction的HTTP请求,Struts框架会创建一个单独的HelloAction实例。



(C)每个子应用对应一个单独的RequestProcessor实例



(D)每个子应用对应一个单独的web.xml文件



答案:C



19 ActionForm Bean对象是由谁创建的?



选项:



(A) <html:form>标签处理类



(B) ActionServlet



(C) RequestProcessor



(D) Action







答案:C



20、struts框架,错误的是?

A Struts中无法完成上传功能

B Struts框架基于MVC模式

C Struts框架容易引起流程复杂、结构不清晰等问题

D Struts可以有效地降低项目的类文件数目



答案:C



21、问题:以下代码定义了一个变量,如何输出这个变量的值?



<bean:define id="stringBean" value=“helloWorld“/>



选项:(A)<bean:write name=“stringBean"/>



(B) <bean:write name=“helloWorld"/>



(C)<%= stringBean%>



(D)<% String myBean=(String)pageContext.getAttribute(“stringBean”,PageContext.PAGE_SCOPE);%> <%=myBean%>



答案: A,D



22、问题:把静态文本放在Resource Bundle中,而不是直接在JSP文件中包含这些静态文本,有什么优点?答案: 提高可维护性 提高可重用性 支持国际化



23在struts配置文件中action元素包含哪些属性和子元素?



答案:



path属性:指定请求访问Action的路径



type属性:指定Action的完整类名



name属性:指定需要传递给Action的ActionForm Bean



scope属性:指定ActionForm Bean的存放范围



validate属性:指定是否执行表单验证



input属性:指定当表单验证失败时的转发路径。



<action>元素还包含一个<forward>子元素,它定义了一个请求转发路径。



24. 问题:关于struts项目中的类与MVC模式的对应关系,说法错误的是?

A Jsp文件实现视图View的功能

B ActionServlet这一个类是整个struts项目的控制器

C ActionForm、Action都属于Model部分

D 一个struts项目只能有一个Servlet



答案:D

Struts知识问答 分类: 面试 2015-07-10 22:01 4人阅读 评论(0) 收藏的更多相关文章

  1. 快速幂取模 分类: ACM TYPE 2014-08-29 22:01 95人阅读 评论(0) 收藏

    #include<stdio.h> #include<stdlib.h> //快速幂算法,数论二分 long long powermod(int a,int b, int c) ...

  2. 全方位分析Objcetive-C Runtime 分类: ios技术 2015-03-11 22:29 77人阅读 评论(0) 收藏

    本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机.主要内容如下: 引言 简介 与Runtime交互 ...

  3. IOS之富文本编辑 分类: ios技术 2015-03-06 22:51 89人阅读 评论(0) 收藏

    之前做项目时遇到一个问题:          使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结 ...

  4. Drainage Ditches 分类: POJ 图论 2015-07-29 15:01 7人阅读 评论(0) 收藏

    Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 62016 Accepted: 23808 De ...

  5. Hdu 1429 胜利大逃亡(续) 分类: Brush Mode 2014-08-07 17:01 92人阅读 评论(0) 收藏

    胜利大逃亡(续) Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Subm ...

  6. 【转载】 Searching过程粗略梳理 分类: H4_SOLR/LUCENCE 2014-07-25 22:59 316人阅读 评论(0) 收藏

    转载自:http://www.cnblogs.com/huangfox/archive/2012/02/09/2344686.html solr-searching过程分析(一) --searchin ...

  7. C/C++文字常量与常变量的概念与区别 分类: C/C++ 2015-06-10 22:56 111人阅读 评论(0) 收藏

    以下代码使用平台是Windows 64bits+VS2012. 在C/C++编程时,经常遇到以下几个概念:常量.文字常量.符号常量.字面常量.常变量.字符串常量和字符常量,网上博客资料也是千篇千律,不 ...

  8. NYOJ-58 最小步数 AC 分类: NYOJ 2014-01-22 22:01 217人阅读 评论(0) 收藏

    #include<stdio.h> void dfs(int step,int x,int y); int d[4][2] = {{1,0},{-1,0},{0,1},{0,-1}}; i ...

  9. Red and Black(BFS or DFS) 分类: dfs bfs 2015-07-05 22:52 2人阅读 评论(0) 收藏

    Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...

随机推荐

  1. c++异常详解

    一.什么是异常处理 一句话:异常处理就是处理程序中的错误. 二.为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在<The C++ Programming ...

  2. Ubuntu下Apache+php+mysql网站架设详解

    目录 1 基础 2 安装 2.1 安装LAMP 2.2 图形化管理软件(可选) 2.2.1 安装webmin 2.2.2 安装phpmyadmin 3 配置文件路径 3.1 常用命令 3.2 配置ap ...

  3. PHP正则表达式的逆向引用与子模式 php preg_replace应用

    mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) 功能 在 subject 中搜索 ...

  4. input 标签的监听事件总结

    最近在写一个手机端提交表单的项目,里面用了不少input标签,因为项目不太忙,所以,想做的完美点,但是遇到了一些问题,比如:页面中的必填项如果有至少一项为空,提交按钮就是不能提交的状态,所以需要对所有 ...

  5. java & xml parser

    参考: JDK8 API: http://docs.oracle.com/javase/8/docs/api/ DOM: http://www.w3.org/TR/2004/REC-DOM-Level ...

  6. 深入理解用mysql_fetch_row()以数组的形式返回查询结果

    同mysql_result()一样,mysql_fetch_row()也可以用来获取查询结果集,其区别在于函数的返回值不是一个字符串,而是一个数组.函数定义如下. 复制代码 代码如下: array m ...

  7. VBS基础篇 - 数组

    数组变量:有时需要向一个单一的变量赋于多个值,那么您可以创建一个可包含一系列值的变量,这种变量被称为数组. '静态数组 ) a()="George" a()="john& ...

  8. 对cnblogs.com用户体验的评价

    一.对于cnblogs.com的用户体验我们先对以下问题进行回答: 1.你是什么样的用户, 有什么样的心理, 对cnblogs 的期望值是什么? 我们是正在学习软件工程课程的在校计算机专业大学生,在博 ...

  9. 2815: [ZJOI2012]灾难 - BZOJ

    题目描述 Description 阿米巴是小强的好朋友.    阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的 ...

  10. .htaccess文件讲解

    .htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录.作为用户 ...