收藏 分享(赏)

Struts2考试题分析.doc

上传人:HR专家 文档编号:11445152 上传时间:2020-04-29 格式:DOC 页数:21 大小:216.89KB
下载 相关 举报
Struts2考试题分析.doc_第1页
第1页 / 共21页
Struts2考试题分析.doc_第2页
第2页 / 共21页
Struts2考试题分析.doc_第3页
第3页 / 共21页
Struts2考试题分析.doc_第4页
第4页 / 共21页
Struts2考试题分析.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、题目1 以下不属于Struts2中result的type属性( )Aaction Bredirect重定向到另外一个页面CredirectAction 重定向到另外一个动作action,可以是同包下的,也可以跨包访问。Ddispatcher 转发至一个页面,struts2中的默认值。题目2 下列有关拦截器说法错误的是?A.struts通过拦截器完成执行action请求处理方法前一系列操作。例如:数据封装、文件上传、数据校验等B.在struts中,直接访问jsp页面,Jsp页面是是由servlet容器维护的,与struts2默认拦截器没有关系,struts2中如果想拦截jsp页面,可以配置过滤器

2、,拦截路径*.jsp。struts将使用默认拦截器栈处理当前请求。C.在执行action时,struts将执行若干拦截器1、2、3,执行action完成后,将继续执行拦截器3、2、1D. 默认情况,在一个action没有配置拦截器的引用,说明当前action将不使用拦截器 如果不配置拦截器,struts2会有默认执行的拦截器。在struts.xml文件中的package标签extends属性配置struts-default,它里面会很多默认配置的拦截器。比如:servletConfig(在动作类中访问servlet的API时使用该拦截器完成)、staticParam(在动作类中注入静态参数时会

3、调用)、params(给动作类封装动态参数)、modelDriven(模型驱动数据封装时调用)等。题目3 以下哪些是Action接口提供的返回值SUCCESS:对应字符串success.成功时使用NONE:对应字符串none。不转向任何视图时使用。等同于null。ERROR:对应字符串error.转向错误页面INPUT:对应字符串input。回显时使用LOGIN:对应字符串login。转向登陆页面。?A.successB.noneC.errorD.input 题目4 如果要实现struts2的数据检验功能 A普通的Action类可以实现B继承自Action应继承ActionSupport类,因

4、为他实现了Validateable接口,需要重写validate方法,在validate方法中书写具体的验证操作。接口的可以实现C继承自ActionSupport类可以实现D继承自ActionValidate类可以实现 题目5 struts2默认的处理结果类型dispatcher:动作执行完毕后,使用转发技术转发到指定的页面。也是默认的。redirect:动作执行完毕后,使用重定向到指定的页面。chain:动作执行完毕后,使用转发技术转发到另外的一个action。redirectAction:动作执行完毕后,使用重定向到指定的另外的一个action。stream:动作执行完毕后,转向一个输出流

5、。是:A.dispatcherB.redirectC.chainD.forward题目6 在值栈的上下文Context中,存在一些固定的key表示不同的对象,以下描述正确的是?A.request,表示request作用域的数据B.session,表示session作用域的数据C.application,表示application作用域的数据D.parameters,表示请求参数的所有数据 题目7 以下属于struts2配置文件中的配置元素是:()多选)A. B. C. D. 题目8 有关值栈 context Map栈数据操作描述正确的是?A.ActionContext.getContext()

6、.put(key,value)Key就是类似request域对象的key值 直接对context进行操作B.使用获得context中指定key的内容C.ActionContext.getContext().getSession().put(key,value); 将数据放置context 固定key为session对应的map中D.ActionContext.getContext().getApplication主要是生命周期不一样,返回值都是map,所以取值一样,都是通过key取value。().put(key,value); 将数据放置context固定key为application对应的

7、map中 题目9 有关描述正确的是?A.value属性的值对应值栈中的相关的数据B.默认情况,将遍历的每一个数据都临时压入到root的栈顶想想for的例子,遍历一次少一次的数据,相当于是临时存储数据的容器。,遍历结束时再将数据移除C.如果使用var属性,在值栈的context中存放一个键值对D.如果使用status属性,可以获得当前遍历的状态。例如:遍历的索引,是否为奇偶等 题目10 token令牌机制,下面说法正确的是?A.如果要使token可用,必须在jsp表单中提供,struts.xml使用token拦截器B.在struts2默认的拦截器栈中包含token拦截器Struts2默认拦截器d

8、efaultStack中不包含token的拦截器。C.标签的作用在jsp页面生成一个隐藏域数据D.token拦截器可以通过includeMethods属性设置需要进行拦截的方法 题目11 下列有关ValueStack内部结构描述正确的是?A.ValueStack内部有两个逻辑部分:root 和 contextRoot数据是个list集合,context数据是个大的map集合。B.ValueStack的上下文context中存放了request、session、application的引用C.ValueStack的root部分,可以用于存放对象。在jsp页面中通过struts标签,可以使用对象的

9、属性,直接获得需要的数据。D.ValueStack的context部分,struts将使用key=value的形式存放数据,在jsp页面中通过struts标签,可以使用”#key”方式获指定的数据 题目12 在struts2配置中用( )元素配置常量A.B.C.D. 题目13 下列有关访问struts2的action,说法错误的是?A.action的访问路径,需要使用标签的namespace属性的值和标签的name属性的值B.如果访问路径是”/primer/helloWorldAction”,并在页面中成功显示,标签的namespace属性值可以是”/primer”C.在配置时,其中class

10、属性是用来请求访问的Action类。D.在struts.xml文件中必须配置拦截器 在Struts中配置拦截器,如果是自定义拦截器,用到时在配置,这个不是必须的题目14 在Struts2中,可以在哪些配置文件中配置常量优先级是:web.xmlstruts.propertieisstruts.xmlni()多选A.struts.xmlB.struts.propertiesC.web.xmlD.server.xml Tomat中的配置文件。题目15 下面有关struts2配置文件说法正确的是?A.default.properties文件,struts2提供的默认常量配置文件B.struts-def

11、ault.xml文件,struts2提供默认功能实现配置文件。此文件中提供大量的拦截器,结果集类型等C.struts.xml文件,是struts2预留给框架使用者,编写自定义配置信息的D.struts-default.xml,struts-plugin.xml和struts.xml文件加载是没有顺序的 题目16 在元素中,那个属性可以指定Action中要执行的方法的名称( )A.methodB.namename为要访问的路径。如果有namespace的话,访问路径是:/namespace/nameC.classaction类的全路径。D.methodName 题目17 以下配置文件,哪些是st

12、ruts2的?A.default.properties提供常量的文件。B.action.xmlC.struts2.xmlD.struts.xml struts.xml是默认的配置文件,我们是可以进行修改的。题目18 有关值栈 root对象栈数据操作描述正确的是?A.valueStack.push(obj) 将指定的对象压入到栈顶B.在jsp页面,可以使用 获得栈顶的数据C.valueStack.getRoot()不能获取对象栈D.在jsp页面,可以使用 获得对象栈中name属性的值 题目19 下列哪个校验器可以校验“两次密码输入不一致”()A.required 必须输入,判断是否为null,允

13、许有空格。B. requiredstring 必须输入,不允许有空格。验证的只能是字符串的。C.stringlength 控制长度的。D.fieldexpression 题目20 关于struts2哪些api是正确的?A.ServletActionContext.getRequest() 可以获得HttpServletRequestB.ServletActionContext.getResponse() 可以获得HttpServletResponseC.ServletActionContext.getServletContext() 可以获得ServletContextD.ServletAct

14、ionContext.getRequest().getSession() 可以获得HttpSession 题目21 struts2 action类的编写,下列说法正确的是?A.action类可以不继承任何类,不实现任何接口B.action类可以实现struts提供的接口ActionC.action类可以继承ActionSupportActionsupport这个工具类在实现了Action接口的基础上还定义了一个validate()方法,重写该方法,它会在execute()方法之前执行,如校验失败,会转入input处,必须在配置该Action时配置input属性。 另外,Actionsuppor

15、t还提供了一个getText(String key)方法还实现国际化,该方法从资源文件上获取国际化信息D.action类中请求处理方法,必须是共有的,方法名称自定义,且没有参数。 有参数的话,会报找不到方法异常。返回值类型必须是String。题目22 struts2动态方法调用的格式为:A.ActionName?methodName.action B.ActionName!methodName.action 使用动态调用的话还需要打开一个常量C.ActionName*methodName.action D.ActionNamemathodName.action 题目23 下列哪个结果类型用来转

16、发到Action()单选A.dispatcher转发到一个页面,默认值。B.chainC.redirectAction重定向到一个动作类。D.stream 题目24 .在Action接口中提供的5个逻辑视图代表表单输入错误会跳转的视图名称是( )A.SUCCESSB.ERRORC.INPUTD.LOGIN 题目25 下列有关,表单回显正确的是?A.只要将数据放置到request作用域,struts表单标签可以根据name属性进行回显B.只要将数据放置到session作用域,struts表单标签可以根据name属性进行回显C.只要将数据放置到application作用域,struts表单标签可以

17、根据name属性进行回显D.只要将数据放置到对象栈root中,struts表单标签可以根据name属性进行回显 题目26 struts2在控制器类中一般需要添加相应属性的A.setter方法 B. as方法 C.getter方法 D.is方法 题目27 当类型转换失败时,Struts会自动这个前提是需要在struts.xml文件中配置input属性。跳转到()结果单选A.errorB.successC.loginD.input 题目28 下列哪个常量用来配置Action的扩展名()单选A.struts.i18n.encoding应用中使用的编码。配置位置决定作用范围。B.struts.acti

18、on.extension能进入Struts2框架内部的url地址后缀名。多个值用逗号分隔。C.struts.serve.static.browserCache该属性设置浏览器是否缓存静态内容。当应用处于开发阶段时,我们希望每次请求都获到服务器的最新响应,则可设置该属性为false。D.struts.devMode该属性:是否是开发模式。开发模式:改了配置文件,不需要重启,会输出更多的错误信息,开发阶段建议为true。 题目29 请看代码form.jsp用户名:密码:struts.xmlUser.javapublic class User private String username;priv

19、ate String password;public void setUsername(String username) this. username = username;public void setPassword(String password) this. password = password;MyAction.javapackage cn.itcast.web.action;public class MyAction extends ActionSupport implements ModelDrivenprivate User user = new User();private

20、 String username;private String password;public void setUsername(String username) this. username = username;public void setPassword(String password) this. password = password;public User getModel() return this.user;public String execute() System.out.println(username + “, “ + password);return null;当在

21、form.jsp表单中,向用户名中输入zhangSan,向密码中输入123后提交,控制台会有什么样的输出结果()单选A.null, null在struts的默认拦截器栈中,已经使用了modelDriven拦截器,此拦截器将当前action提供的javabean对象压入到栈顶,在通过其他拦截器从而完成整个数据的封装。 B.zhangSan, 123C.没有输出D.抛出异常 题目30 下列对stringlength校验器描述正确的是()A.可以配置minLength和maxLength参数B.可以配置min和max参数C.没有参数D.可以配置minLength和maxLength,以及min和ma

22、x参数 题目31 下列有关值栈struts2把值栈对象保存到request域中,值栈保存名称struts.valueStackRequest.setAttribute(“struts.valueStack”,valueStack)从request里面获取值栈对象 Request.getAttribute(“struts.valueStack”);描述错误的是?A.valueStack是单例的,用于存放struts需要存放的数据B.值栈被保存在HttpServletRequest作用域中值栈是多例的,每次请求都会初始化来保存当前的数据。C.可以通过ActionContext.getValueSt

23、ack()获得值栈D.可以通过ActionContext.getContext().getValueStack()获得值栈 题目32 下列对局部xml配置校验说法正确的是()多选A.配置文件必须放到当前Action同包下B.配置文件名称必须是“当前Action类名-当前的name名称-validation.xml”C.在Action类中无需编写任何与参数校验相关的代码D.可以使用InputConfig比input视图扩展性好,可以跳转到多个InputConfig(methodName=Tqtest,resultName=resultTest)methodName是要作用于哪个方法,result

24、Name是返回值,如果方法没有返回值则默认使用该属性值。注解来自定义校验失败后跳转的结果 题目33 以下有关struts.xml文件描述正确的是?A.struts.xml文件必须放置在src下面B.struts.xml文件中只能配置一个packageC.struts.xml文件可以放置在WEB-INF目录下D.struts.xml文件名称可以自定义,只要以struts开头就可以 题目34 以下结果类型描述正确的是?A. redirect,将请求重定向到另一个资源,一般重定向到jsp页面。B. redirectAction,将请求重定向到另一个actionC. dispatcher,struts

25、框架默认结果类型,将请求转发到另一个资源D.stream确定result将从action获得流并发送到浏览器。 题目35 (了解)下列对全局类型转换器配置描述正确的是()多选A.配置文件名称必须为xwork-conversion.propertiesB.配置文件必须放到/WEB-INF/classes目录下C.配置信息中属性名为目标类型名称D.配置信息中属性值为目标类型的类型转换器类名 题目36 (了解)下列有关自定义类型转换器说法正确的是?A.编写自定义转换器实现类,需要实现TypeConverter接口或继承默认实现类DefaultTypeConverterB.转换器的转换方法,将有可能执

26、行两次。一次是表单提交数据字符串数组,转换成指定对象;一次是标签回显指定对象,转换成字符串。C.自定义转换可以被配置成全局转换,使用的固定的名称:xwork-conversion.properties,此转换器将覆盖struts默认实现的转换(如果有)D.自定义转换可以被配置成局部转换器,此类转换器只对当前action有效。进行注册时,需要使用一定格式的文件名称:action类名-conversion.properties 题目37 OGNL表达式Ognl表达式的写法和注意事项。中符合的使用,下面说话错误的是?A.”#key”表示可以获得值栈 context中的指定key的数据B.”$ognl

27、”表示在配置文件中执行ognl表达式C.” %百分号是强制认为括号中的内容是一个表达式或者字符串。内容加上单引号是字符串。使用在struts2的表单标签中,如果直接写ognl表达式,不会把当做ognl,只是作为字符串输出,使用 %ognl#request.username”,输出的内容是从request域中读取username的值D. ” %#request.username”,输出的内容是”#request.username”这个字符串 题目38 下面有关modelDriven机制,分析正确的是?A.必须实现接口ModelDriven,通过在实现接口时,提供javabean类型作为泛型参数。

28、B.需要实现接口的方法getModel()C.编写一个成员变量,可以不实例化是必须要实例化,不然会报空指针异常。D.在struts的默认拦截器栈中,已经使用了modelDriven拦截器,此拦截器将当前action提供的javabean对象压入到栈顶,在通过其他拦截器从而完成整个数据的封装。 题目39 下面代码执行结果?在action中进行如下操作:ActionContext().getContext().put(“itcast”,”传智播客”);重定向到jsp注意这里是重定向,action是多例的,每创建一个action,都有一个context,重定向的话是跨域的,数据不能共享,所以值栈的内

29、容是取不出来。页面后,在jsp页面使用标签#A.传智播客#B.传智播客#传智播客#C.传智播客#传智播客#传智播客#D.# 题目40 .下列有关struts2说法正确的是?A.struts2 依赖Struts2是与servlet解耦合的,可用可不用,而不是依赖。于Servlet api,所有我们必须使用ServletActionContext工具类提供的方法操作servlet的作用域B.struts2的action是多实例的C.在struts2中的action是需要依赖servlet容器是依赖于Web容器,主要是需要依赖web容器运行。而不是依赖servlet容器。的D.在struts2中可以

30、利用ognl表达式展现数据struts token令牌机制 利用Struts同步令牌(Token)机制来解决Web应用中的重复提交问题。该方法的基本原理是:服务器端在处理到达的request之前,会将request中的Token值与保存在当前用户session中的令牌值进行比较,看是否匹配。在处理完该request后,且在response发送给客户端之前,将会产生一个新的Token,该Token除传给客户端以外,也会将用户session中保存的旧的Token进行替换。这样,如果用户会退到刚才的提交页面并再次提交的话,客户端传过来的Token值和服务器端的不一致,从而有效地防止了重复提交地发生。

31、struts的Token机制实际上就是通过用户提交表单时,比较request中的请求参数“org.apache.struts.taglib.html.TOKEN”的值与当前会话中的属org.apache.struts.action.TOKEN的值是否相等,相等则是正常提交,不等则为重复提交。 下面我们看下一个完整的操作流程,这样便于理解: 首先我们要明白,重复提交是发生在什么情况下的,什么情况下需要处理重复提交。我们所要解决的重复提交一般是考虑用户新插入一条记录的情形,对于修改记录的重复提交一般不考虑,因为修改记录本身记录就存在ID,重复提交也只不过是重复更新数据库同一记录而已,对数据的正确性

32、不会有影响。如果新插入一条记录不对重复提交进行处理的话,那么就会在数据库中重复插入同一记录,这样会在数据库产生冗余的重复记录。当我们要插入一条记录时,会分二步走。第一步我们要打开新增记录的页面。第二步,我们会在打开的页面中填写相关信息,然后提交,这个时候提交才算完成。第一步:假如我们打开新增记录这个操作由add方法完成,代码如下:public ActionForward add(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) this.saveTok

33、en(request);/这个方法就是产生令牌值,struts已有的方法return mapping.findForward(add);/返回新增页面通过调用saveToken(request),产生一个token值。(注:每次调用saveToken方法产生的token值都不同)然后在记录新增页面中的内部增加一个隐含表单字段,形式如下:然后再把token值8b2d950f23b02c527988a14171254025保存到当前会话中,也就是session.setAttribute( org.apache.struts.action.TOKEN,8b2d950f23b02c527988a141

34、71254025);第二步:假如我们提交这个页面数据由save方法完成,代码如下:public ActionForward save(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) if (this.isTokenValid(request) /正常提交 this.resetToken(request);/清空当前会话中的token值return mapping.findForward(success);/返回保存成功页面 else /重复提交thi

35、s.saveToken(request);/注:此方法在这里可要也可不要。return mapping.findForward(fail);/返回重复提交提示信息页面判断是不是重复提交关键是isTokenValid(request)这个方法,这个方法由struts提供,如果返回结果为true则表示正常提交,false则为重复提交。isTokenValid(request)这个方法实际上主要做了三件事,1.判断当前会话是否过期,如果过期,直接返回false HttpSession session = request.getSession(false); if (session = null) r

36、eturn false; 2.然后再判断当前会话中是否存在令牌属性org.apache.struts.action.TOKEN,如果不存在,返回false String saved =(String) session.getAttribute(org.apache.struts.action.TOKEN); if (saved = null) return false; 为什么令牌属性org.apache.struts.action.TOKEN会不存在呢,那是因为当用户正常提交后,会调用this.resetToken(request);/清空当前会话中的token值。也就是说resetToke

37、n(request)方法中调用了 session.removeAttribute(org.apache.struts.action.TOKEN);当用户重复提交时,我说了this.saveToken(request);/此方法在这里可要也可不要。,下面我们分析下,如果不调用这个方法,会话中就不会再重新保存token值,那么再刷新的时候,session中的token值总是为null,isTokenValid(request)直接返回false,如果调用this.saveToken(request)的话,session中会重新添加token属性值。这个时候isTokenValid(request)

38、会进行下面第三步的判断。3.从当前会话中取得token的值与当前request中得到的token值比较,相同返回true,不同返回false String token = request.getParameter(org.apache.struts.taglib.html.TOKEN); if (token = null) return false; return saved.equals(token);如果是重复刷新,那么每次request中的令牌值都是一样的,但每次刷新当前会话中的令牌值都被重新替换了,所以会返回false注:使用struts的表单提交Token机制时,提交的表单一定要写成

39、这种形式,如果写成这种形式的话,尽管调用saveToken(request)方法也不会在当前的里面生成隐含表单,最终的结果都是重复提交.动态方法调用在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多第一种方式:指定method属性这种方式我们前面已经用到过,类似下面的配置就可以实现redirect/WEB-INF/JspPage/chapter2/plaintext.jsp 第二种方式:感叹号方式(需要开启),官网不推荐使用这种方式,建议大家不要使用.用这种方式需要先开启一个开关 将此常量设置为true,这种方式才能使用,使用见示例Actionpackage chapter3.action;public class Chapter3Action public String result1() return result1;public String result2() return result2; Jsp中访问方式 result1result2 如果配置了后缀,必须这样写:/chapter4/chapter4Action!create.actionXML中配置方式 /WEB-INF/JspPage/chapter

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报