STRUTS2.docx
- 文档编号:14887505
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:19
- 大小:24.83KB
STRUTS2.docx
《STRUTS2.docx》由会员分享,可在线阅读,更多相关《STRUTS2.docx(19页珍藏版)》请在冰点文库上搜索。
STRUTS2
Struts笔试题
1. 选择题:
1. struts的控制器组件有以下哪几个(BC)
a. AcionFromb.ActionServletc.Actiond.ActionForward
2.Struts有哪些主要配置文件(AB)
a. web.xmlb.struts-config.xmlc.validation.xmld.validator-rule.xml
3.Struts有哪些常用标签库(ABC)
a. html标签库b.bean标签库c.logic标签库d.c标签库
4.ActionForm中的validate()方法起作用,要配置Action中的哪个属性(D)
a. pathb.inputc.typed.validate
5.ActionForm中的name属性要与Action中的哪个属性对应(D)
a.pathb.inputc.typed.name
6.ActionForm的生命周期是在什么范围(BC)
a.pageb.requestc.sessiond.application
7.在struts中一般用哪一个类解析xml文件(D)
a. Actionb.ActionForWardc.SwitchActiond.Digester
8用于多模块转发的内部类是(A)
a.ForwardActionb.IncludeActionc.DispatchActiond.SwitchAction
9.struts中的中文转换通常扩展RequestProcessor类中的哪个方法(A)
a. processPreprocess()b.processPopulate()c.processMapping()d.processLocale()
10.ActionForm中的reset()方法在什么时候必须将其属性恢复为原值(C)
a. 在调用validate()方法的时候。
b. 在ActionForm的生命周期在request范围的时候。
c. 在ActionForm的生命周期在session范围的时候。
d. 在ActionForm的生命周期在application范围的时候。
11.MVC中的C指的什么(B)
a.视图层b.控制层c.模型层d.持久化层
12.Struts对国际化支持主要用到的元素是(A)
a.message-resourcesb.data-sourcec.ActionMessaged.ActionMessages
13.标签中的bundle属性对应哪个元素的key值(B)
a.data-sourceb.message-resourcesc.actiond.from-beans
14.动态ActionForm中的type属性必须是(B)
a.ActionFormb.DynaActionFormc.ActionMappingd.ActionForward
15.动态ActionForm与Validator框架结合时type属性是(CD)
a.ActionFormb.DynaActionFormc.DynaValidatorFormd.DynaValidatorActionForm
16.在jBuider用到Validator框架必须需要我们配置的是(D)
a.web.xmlb.struts-config.xmlc.validator-rule.xmld.validation.xml
17扩展RequestProcessor时必须要配置哪个元素(D)
a.data-sourceb.message-resourcescglobal-forwardsd.controller
18.Form表单中的action属性值必须与action元素中的哪个属性对应(D)
a.inputb.namec.typed.path
19.action元素的哪几个属性是相互排斥的(ABC)
a.typeb.forwardc.included.input
20业务对象分哪几种(ABD)
a.实体业务对象b.过程业务对象c.会话业务对象d.事件业务对象
21.与表单紧密结合的是哪一类标签(B)
a.html基本标签b.html表单标签c.html文件上传标签d.html显示消息标签
22.用于输出javaBean的标签(B)
a. define/>b. write/>c. message/>d. page/> 23.用于输出ResourceBundle的正常消息的标签(B) a. write/>b. message/>c. errors/>d. 24.用于上传文件的标签(D) a. errors/>b. message/>c. present/>d. file/> 25.用于循环遍历的标签(C) a. write/>b. message/>c. iterate/>d. errors/> 26.用于比较运算的标标签(CD) a. write/>b. iterate/>c. equal/>d. notequal/> 27.用于生成普通元素的标签(B) a. write/>b. link/>c. rewrite/>d. iterate/> 28.用于生成隐藏字段的标签(C) a. write/>b link/>c. hiddern/>d. match/> 29. link/>的forward属性对应struts的哪个元素(C) a.message-resourcesb.actionmappingc.global-forwardd.data-sources 30.哪个标签与 include>具有相同的功能(D) a. link/>b. write/>c forward>d. insert> 2. 简答题: 1. 简述MVC三层结构。 2. 简述struts的基本工作流程。 3. Stuts上传文件的注意事项。 4. 简要写出建立一个动态ActionForm的Struts配置(要求属性不5. 能少于两个)。 3. 上机题: 用struts实现一个留言板的增、删、改、查功能(要求必须有三层实现机制)。 答案: 一、1.bc2.ab3.abc4.d5.d6.bc7.d8.d9。 a10。 c11。 b12。 a13。 b14。 b15。 cd16。 d17。 d18。 d19。 abc20。 abd21。 b22。 b23。 b24。 d25。 c26。 cd27。 b28。 c29。 c30。 d 简述Struts2的工作流程: ①.请求发送给StrutsPrepareAndExecuteFilter ②.StrutsPrepareAndExecuteFilter判定该请求是否是一个Struts2请求 ③.若该请求是一个Struts2请求,则StrutsPrepareAndExecuteFilter把请求的处理交给ActionProxy ④.ActionProxy创建一个ActionInvocation的实例,并进行初始化 ⑤.ActionInvocation实例在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 ⑥.Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。 调用结果的execute方法,渲染结果。 ⑦.执行各个拦截器invocation.invoke()之后的代码 ⑧.把结果发送到客户端 2.Struts2拦截器和过滤器的区别: ①、过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器。 ②、Struts2拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。 ③、拦截器可以访问Action上下文(ActionContext)、值栈里的对象(ValueStack),而过滤器不能. ④、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。 3.为什么要使用Struts2&Struts2的优点: ①.基于MVC架构,框架结构清晰。 ②.使用OGNL: OGNL可以快捷的访问值栈中的数据、调用值栈中对象的方法 ③.拦截器: Struts2的拦截器是一个Action级别的AOP,Struts2中的许多特性都是通过拦截器来实现的,例如异常处理,文件上传,验证等。 拦截器是可配置与重用的 ④.多种表现层技术.如: JSP、FreeMarker、Velocity等 4.Struts2如何访问HttpServletRequest、HttpSession、ServletContext三个域对象? ①.与ServletAPI解耦的访问方式 >通过ActionContext访问域对象对应的Map对象 >通过实现Aware接口使Struts2注入对应的Map对象 ②.与ServletAPI耦合的访问方式 >通过ServletActionContext直接获取ServletAPI对象 >通过实现ServletXxxAware接口的方式使Struts2注入对应的对象 5.Struts2中的默认包struts-default有什么作用? ①.struts-default包是struts2内置的,它定义了struts2内部的众多拦截器和Result类型,而Struts2很多核心的功能都是通过这些内置的拦截器实现,如: 从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。 当包继承了struts-default包才能使用struts2为我们提供的这些功能。 ②.struts-default包是在struts-default.xml中定义,struts-default.xml也是Struts2默认配置文件。 Struts2每次都会自动加载struts-default.xml文件。 ③.通常每个包都应该继承struts-default包。 6.说出struts2中至少5个的默认拦截器 exception;fileUpload;i18n;modelDriven;params;prepare;token;tokenSession;validation等 7.谈谈ValueStack: ①.ValueStack贯穿整个Action的生命周期,保存在request域中,所以ValueStack和request的生命周期一样.当Struts2接受一个请求时,会迅速创建ActionContext,ValueStack,Action.然后把Action存放进ValueStack,所以Action的实例变量可以被OGNL访问。 请求来的时候,Action、ValueStack的生命开始;请求结束,Action、ValueStack的生命结束 ②.值栈是多实例的,因为Action是多例的(和Servlet不一样,Servelt是单例的),而每个Action都有一个对应的值栈,Action对象默认保存在栈顶; ③.ValueStack本质上就是一个ArrayList(查看源代码得到); ④.使用OGNL访问值栈的内容时,不需要#号,而访问request、session、application、attr时,需要加#号; ⑤.Struts2重写了request的getAttribute方法,所以可以使用EL直接访问值栈中的内容 8.ActionContext、ServletContext、pageContext的区别? ①.ActionContextStruts2的API: 是当前的Action的上下文环境 ②.ServletContext和PageContext是Servlet的API 9.Struts2有哪几种结果类型? 参看struts-default.xml中的相关配置: dispatcher、chain、redirect等. 10.拦截器的生命周期与工作过程? 每个拦截器都是需要实现Interceptor接口 >init(): 在拦截器被创建后立即被调用,它在拦截器的生命周期内只被调用一次.可以在该方法中对相关资源进行必要的初始化; >intercept(ActionInvocationinvocation): 每拦截一个动作请求,该方法就会被调用一次; >destroy: 该方法将在拦截器被销毁之前被调用,它在拦截器的生命周期内也只被调用一次; 11.如何在Struts2中使用Ajax功能? ①.JSONplugin ②.DOJOplugin ③.DWRplugin ④.使用Stream结果类型. 一、用自己的话简要阐述struts2的执行流程。 Struts2框架本身大致可以分为3个部分: 核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。 核心控制器FilterDispatcher是Struts2框架的基础,包含了框架内部的控制流程和处理机制。 业务控制器Action和业务逻辑组件是需要用户来自己实现的。 用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。 Struts2的工作流程相对于Struts1要简单,与WebWork框架基本相同,所以说Struts2是WebWork的升级版本。 基本简要流程如下: 1、客户端浏览器发出HTTP请求。 2、根据web.xml配置,该请求被FilterDispatcher接收。 3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。 4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。 5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。 6、返回HTTP响应到客户端浏览器。 二、struts的工作原理: 1、初始化,读取struts-config.xml、web.xml等配置文件(所有配置文件的初始化) 2、发送HTTP请求,客户端发送以.do结尾的请求 3、填充FormBean(实例化、复位、填充数据、校验、保存) 4、将请求转发到Action(调用Action的execute()方法) 5、处理业务(可以调用后台类,返回ActionForward对象) 6、返回目标响应对象(从Action返回到ActionServlet) 7、转换Http请求到目标响应对象(查找响应,根据返回的Forwardkeyword) 8、Http响应,返回到Jsp页面 三、说下Struts的设计模式: MVC模式: web应用程序启动时就会加载并初始化ActionServler。 用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法。 Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。 一.工作原理 一个请求在Struts2框架中的处理大概分为以下几个步骤 1客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如: SiteMeshPlugin) 3接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 5ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类 6ActionProxy创建一个ActionInvocation的实例。 7ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 8一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。 返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。 在表示的过程中可以使用Struts2框架中继承的标签。 在这个过程中需要涉及到ActionMapper 基本简要流程如下: 1、客户端浏览器发出HTTP请求。 2、根据web.xml配置,该请求被FilterDispatcher接收。 3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。 4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。 5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。 6、返回HTTP响应到客户端浏览器。 二、struts2标签分类: 1.表单UI标签 2.非表单UI标签 3.控制标签 4.数据标签 三、为什么使用struts2? 1.开源 2.mvc框架 3.纯pojo的Action 4.更好的标签特性 5.易测试 6.易扩展 1.Struts框架的整体运行流程 在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象,例如: Action的映射信息存放在ActionMapping对象中. 当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组件生成动态网页,返回给客户 8.ActionServlet在Struts框架中的总体作用功能是什么 1.在web应用启动时ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象,例如: Action的映射信息存放在ActionMapping对象中。 2.ActionServlet是整个struts 框架的骨干,也是主要的控制部件,它能够处理客户request 并且决定由哪个Action 处理客户request。 它象一个Action工厂,创建基于客户request请求的Action类的对象 9.Struts框架的后缀名一般为.do,后缀后能不能更改,如果能更改的话,如何进行更改后缀名 可以更改,在web.xml中把 中的url-pattern值改成你想要的后缀名就可以了。 1.如何在Struts-config.xml中配置数据源以及获取数据源 Key 绑定在ServletContext上的DataSource实例的索引键,若不设定则缺省为Action.DATA_SOURCE_KEY,如果在应用程序中有多于一个的DataSource,则必须设置Key的值。 DriverC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STRUTS2