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 )。(选两项)
A.XMLHttpRequest对象是Ajax技术的核心,它的作用是可以发送异步请求到服务器端
B.status属性的作用可以返回当前请求的就绪状态,其常用值为:0、1、2、3、4
C.readyState属性的作用可以返回当前请求的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 )
A.ServletActionContext和ActionContext都有getRequest()方法,都返回HttpServletRequest对象
B.ServletActionContext和ActionContext访问Servlet API时,都无需直接调用原始Servlet API
C.Action可以实现特定的接口,由Struts 2框架向Action注入Servlet API对象,这种编程思想称为IoC
D.ActionContext类没有封装所有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-->分钟
B.Struts 2标签比JSTL标签功能更强大,数量也更多
C.<s:property value="username"/>的作用是在页面中访问Action中的getUsername()方法,并显示返回值
D.<s:textarea>(文本域)可以在页面上生成一个<input type="text" />标签
5. 以下关于OGNL和ValueStack描述错误的是(CD )
A.由于值栈存储在request中,所以值栈和request作用域的生命周期是相同的
B.使用OGNL访问对象属性时,会按照从顶部到底部的顺序查找
C.当ValueStack中存放多个对象时,下面对象的属性会覆盖上面对象中的同名属性(栈的特性是:先进后出,所以上面的属性会覆盖下面的)
D.Struts 2会将Action的实例保存在Stack Context中而非ValueStack中(Action的实例都存储在值栈(ValueStack)中)
6.下面是Struts 2的StudentAction类的部分代码:
public class StudentAction extends ActionSupport {
private List<Student> students = new ArrayList<Student>();
//省略了getter、setter等其他代码
}
已知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 2的URL标签构建一个URL,则能够正确构建超链接的选项是(CD)
<s:url id="first" value="http://www.sohu.com"></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实现同样功能。