Struts2错题总结

                                                         Struts总结

     struts 2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts 1的部分优点Struts 2拥有更加广阔的前景,自身功能强大,还对其他框架下开发的程序提供很好的兼容性。

1.以下关于jQuery说法错误的选项是(D )。

A.“$”为jQuery脚本库的默认全局变量名,即“$= jQuery

B$.ajax( )方法是jQuery提供的最底层的Ajax方法,其它如“$.get( )$.post( )$.getJSON( )”等都是在其基础上的再次封装

C$.ajax( )方法具有较强的灵活性,通过设置“type”属性可以指定请求方式,设置“dataType”属性可以指定服务器端返回的数据类型

D$.parseJSON( )方法用来返回JSON格式的数据,通常需要与$.getJSON( )方法联合使用

$.parseJSON( )解析JSON格式的数据(转换其它类型到JSON类型)

2. 下列选项中关于XMLHttpRequest对象的说法错误的是(BC )。(选两项)

AXMLHttpRequest对象是Ajax技术的核心,它的作用是可以发送异步请求到服务器端

Bstatus属性的作用可以返回当前请求的就绪状态,其常用值为:01234

CreadyState属性的作用可以返回当前请求的HTTP状态码,其常用值404表示找不到访问对象

D.当就绪状态是4且状态码是200时,方可处理服务器数据

答:readyState属性作用可以返回当前请求的就绪状态,其常用值为:0、1、2、3、4

XMLHttpRequest.readyState:

状态码 

0 - (未初始化)还没有调用send()方法 

1 - (载入)已调用send()方法,正在发送请求 

2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 

3 - (交互)正在解析响应内容 

4 - (完成)响应内容解析完成,可以在客户端调用了

XMLHttpRequest.status:

200-正确返回

404—找不到访问对象

3.在Struts 2框架中访问Servlet API对象描述错误的是(AB )

AServletActionContextActionContext都有getRequest()方法,都返回HttpServletRequest对象

BServletActionContextActionContext访问Servlet API时,都无需直接调用原始Servlet API

CAction可以实现特定的接口,由Struts 2框架向Action注入Servlet API对象,这种编程思想称为IoC

DActionContext类没有封装所有Servlet API的访问方法,所以有时也需要使用ServletActionContext

答:A项 ActionContext.getContext().get("REQUEST");  ServletActionContext.getRequest();

        B项ServletActionContext直接调用原始Servlet API

        C 项、D项正确

4.以下关于Struts 2的标签说法错误的是(AD 

A<s:date>用于格式化输出一个日期,它的format属性用于指定日期显示的格式,如:yyyy-mm-dd HH24:mi:ss,表示格式为:“年--日 时::秒”MM--->月   mm-->分钟

BStruts 2标签比JSTL标签功能更强大,数量也更多

C<s:property value="username"/>的作用是在页面中访问Action中的getUsername()方法,并显示返回值

D<s:textarea>(文本域)可以在页面上生成一个<input type="text" />标签

5. 以下关于OGNLValueStack描述错误的是(CD )

A由于值栈存储在request中,所以值栈和request作用域的生命周期是相同的

B.使用OGNL访问对象属性时,会按照从顶部到底部的顺序查找

C.当ValueStack中存放多个对象时,下面对象的属性会覆盖上面对象中的同名属性(栈的特性是:先进后出,所以上面的属性会覆盖下面的

DStruts 2会将Action的实例保存在Stack Context中而非ValueStack中(Action的实例都存储在值栈(ValueStack)中)

6.下面是Struts 2StudentAction类的部分代码:

public class StudentAction extends ActionSupport {

private List<Student> students = new ArrayList<Student>();

    //省略了gettersetter等其他代码

}

已知students中保存了多个Student对象,下面代码能访问到students中第一个Student对象的name属性值的是( AD)。

A<s:property value="students[0].name"/>

B<s:property value="#Student.getName()"/>

C<s:property value="#students[0].name"/>

D<s:property value="students.get(0).name"/>

:对象都保存到ValueStack中,不需要#,访问Stack Context属性需要加#。

7.在页面中使用Struts 2URL标签构建一个URL,则能够正确构建超链接的选项是(CD

<s:url ></s:url>

A<s:a href="first">搜狐</s:a>

B<s:a href="#first">搜狐</s:a>

C<s:a href="%{first}">搜狐</s:a>

D<s:a href="%{#first}">搜狐</s:a>

8.执行<s:set name="list" value="{'北京','天津','上海','重庆'}"/>后,可以正确遍历该列表的选项是( BD

A<s:property value="list"/>        

B<s:iterator value="#list">

      <s:property/>

</s:iterator>

C<s:iterator value="${list}">

     <s:property/>

</s:iterator>

D<s:iterator value="%{#list}">

      <s:property/>

</s:iterator>

答:对于字符串类型的属性,如果要访问动态数据,必须使用%{...}这样的语法,否则将被直接看作字符串场常量。

     对于对象类型的属性,将直接作为OGNL表达式进行计算。如果需要对对象类型的属性制定字符串常量,则必须在

    这个字符串常量外加一对单引号或者使用%{'constant string'}这样的语法。

   例:

  <s:set name="list" value="'http://www.sohu.com'">

  <s:property value="#myurl"/>//显示http://www.sohu.com

   所以BD实现同样功能。