STRUTS2模拟测试(开卷——定时90分钟)一、填空题1.Struts2框架由___________和___________框架发展而来。(Struts&WebWork)2.Struts2以___________为核心,采用___________的机制来处理用户的请求。(WebWork,拦截器)3.构建Struts2应用的最基础的几个类库是___________、___________、___________、___________以及___________。4.Struts2中的控制器类是一个普通的___________。Class5.如果要在JSP页面中使用Struts2提供的标签库,首先必须在页面中使用taglib编译指令导入标签库,其中taglib编译指令为___________。%tagliburi=/struts-tagsprefix=s%6.在Struts2表单标签库中,表单标签为___________。s:form7.ActionSupport类实现了___________接口和___________等接口。8.通过控制器类中的___________方法来输出校验错误信息。二、选择题1.不属于Action接口中定义的字符串常量的是___________。BA.SUCCESSB.FAILUREC.ERRORD.INPUT2.在控制器类中一般需要添加相应属性的___________和___________。ACA.setter方法B.as方法C.getter方法D.is方法3.控制器需要在___________配置文件中进行配置。BA.web.xmlB.struts.xmlC.struts2.xmlD.webwork.xml4.不属于Struts2表单标签库的是___________。DA.s:textfieldB.s:textareaC.s:submitD.select5.在JSP页面中可以通过Struts2提供的___________标签来输出国际化信息。DA.s:inputB.s:textsC.s:submitD.s:text6.资源文件的后缀名为___________。DA.txtB.docC.propertyD.Properties三、简答题1、简述什么是MVC?MVC即模型-视图-控制器.MVC是一种设计模式,它强制把应用程序的输入处理和输出分开.视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接受用户的输入,但是它并不进行任何实际的业务处理。模型是应用程序的主体部分。模型表示业务数据和业务逻辑。控制器接受用户的输入并调用模型和视图去完成用户的需求2、列举struts2web应用中常用的4个.jar文件。commons-logging-1.0.4.jarfreemarker-2.3.8.jarstruts2-core-2.0.14.jarognl-2.6.11.jarxwork-2.0.7.jar3、简述servlet的生命周期。Servlet被服务器实例化后,容器运行其init()方法,请求到达时运行其service()方法,service()方法自动派遣运行与请求对应的doGet、doPost方法等,当服务器决定将实例销毁的时候调用其destroy方法4、用自己的话简要阐述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响应到客户端浏览器。5、简述Struts1和Struts2的不同点四、代码题1、给出以下Action的Struts.XML配置文件描述(注1:请求为Test/Hello_onPlay.go)packagecom.yourcompany.action;publicclassHelloWorldAction{privateStringmessage;publicStringgetMessage(){returnmessage;}publicvoidsetMessage(Stringmessage){this.message=message;}publicStringonPlay()throwsException{System.out.println(this.getMessage());returnsuccess;}publicStringexecute()throwsException{System.out.println(this.getMessage());returnsuccess;}}2、请给出Struts2验证框架关于Email格式,年龄在1-100之间,提交非空的配置文件。3、请给出OGNL中从valueStack,Session,Request三种作用域中或得userName属性对应value的代码valueStack:在Struts2执行一次请求的过程中,Struts2会把当前的Action对象自动放入值栈。这样,在渲染JSP时,JSP里的代码使用s:propertyvalue=.../之类标签中的Ognl表达式会直接作用于Action对象,从而方便的读取Action的属性。Request:在JSP中,用“#request”来获得request的Map,用“#request.key”或者“#request['key']”来读取Map中的值。Session:使用“#session”再加上key,如“#session.name”或者“#session['name']”4、请编写一个拦截器,该拦截器可以获得用户输入的用户名这个数据,业务逻辑为逐个判断用户名中是否包含“你”,“我”,“他”三个数据,如果包含则直接返回输入页面,如果不包含则运行至PersonAction。(除代码外,要给出拦截器和Action的配置文件)