Struts2考试题分析

更新时间:2024-05-05 06:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

题目 1

以下不属于Struts2中result的type属性( )

A.action B.redirect C.redirectAction D.dispatcher

题目 2

下列有关拦截器说法错误的是?

A.struts通过拦截器完成执行action请求处理方法前一系列操作。例如:数据封装、文件上传、数据校验等

B.在struts中,直接访问jsp页面,struts将使用默认拦截器栈处理当前请求。

C.在执行action时,struts将执行若干拦截器1、2、3,执行action完成后,将继续执行拦截器3、2、1

D. 默认情况,在一个action没有配置拦截器的引用,说明当前action将不使用拦截器

题目 3

以下哪些是Action接口提供的返回值?

A.success B.none C.error D.input

题目 4

如果要实现struts2的数据检验功能

A普通的Action类可以实现 B继承自Action接口的可以实现 C继承自ActionSupport类可以实现 D继承自ActionValidate类可以实现

题目 5

struts2默认的处理结果类型是:

A.dispatcher B.redirect C.chain D.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().put(key,value) 直接对context进行操作 B.使用

D.ActionContext.getContext().getApplication().put(key,value); 将数据放置context固定key为application对应的map中

题目 9

有关描述正确的是?

A.value属性的值对应值栈中的相关的数据

B.默认情况,将遍历的每一个数据都临时压入到root的栈顶,遍历结束时再将数据移除

C.如果使用var属性,在值栈的context中存放一个键值对

D.如果使用status属性,可以获得当前遍历的状态。例如:遍历的索引,是否为奇偶等

题目 10

token令牌机制,下面说法正确的是?

A.如果要使token可用,必须在jsp表单中提供,struts.xml使用token拦截器

B.在struts2默认的拦截器栈中包含token拦截器 C.标签的作用在jsp页面生成一个隐藏域数据

D.token拦截器可以通过includeMethods属性设置需要进行拦截的方法

题目 11

下列有关ValueStack内部结构描述正确的是?

A.ValueStack内部有两个逻辑部分:root 和 context

B.ValueStack的上下文context中存放了request、session、application的引用

C.ValueStack的root部分,可以用于存放对象。在jsp页面中通过struts标签,可以使用对象的属性,直接获得需要的数据。

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属性是用来请求访问的Action类。 D.在struts.xml文件中必须配置拦截器

题目 14

在Struts2中,可以在哪些配置文件中配置常量()多选

A.struts.xml B.struts.properties C.web.xml D.server.xml

题目 15

下面有关struts2配置文件说法正确的是?

A.default.properties文件,struts2提供的默认常量配置文件

B.struts-default.xml文件,struts2提供默认功能实现配置文件。此文件中提供大量的拦截器,结果集类型等

C.struts.xml文件,是struts2预留给框架使用者,编写自定义配置信息的 D.struts-default.xml,struts-plugin.xml和struts.xml文件加载是没有顺序的

题目 16

在元素中,那个属性可以指定Action中要执行的方法的名称( )

A.method B.name C.class

D.methodName

题目 17

以下配置文件,哪些是struts2的?

A.default.properties B.action.xml C.struts2.xml D.struts.xml

题目 18

有关值栈 root对象栈数据操作描述正确的是?

A.valueStack.push(obj) 将指定的对象压入到栈顶 B.在jsp页面,可以使用 获得栈顶的数据 C.valueStack.getRoot()不能获取对象栈

D.在jsp页面,可以使用

题目 19

下列哪个校验器可以校验“两次密码输入不一致”()

A.required B. requiredstring C.stringlength D.fieldexpression

题目 20

关于struts2哪些api是正确的?

A.ServletActionContext.getRequest() 可以获得HttpServletRequest B.ServletActionContext.getResponse() 可以获得HttpServletResponse C.ServletActionContext.getServletContext() 可以获得ServletContext D.ServletActionContext.getRequest().getSession() 可以获得HttpSession

题目 21

struts2 action类的编写,下列说法正确的是?

A.action类可以不继承任何类,不实现任何接口 B.action类可以实现struts提供的接口Action C.action类可以继承ActionSupport

D.action类中请求处理方法,必须是共有的,方法名称自定义,且没有参数。

题目 22

struts2动态方法调用的格式为:

A.ActionName?methodName.action B.ActionName!methodName.action C.ActionName*methodName.action D.ActionName@mathodName.action

题目 23

下列哪个结果类型用来转发到Action()单选

A.dispatcher

B.chain

C.redirectAction D.stream

题目 24

.在Action接口中提供的5个逻辑视图代表表单输入错误会跳转的视图名称是( )

A.SUCCESS B.ERROR C.INPUT D.LOGIN

题目 25

下列有关,表单回显正确的是?

A.只要将数据放置到request作用域,struts表单标签可以根据name属性进行回显

B.只要将数据放置到session作用域,struts表单标签可以根据name属性进行回显

C.只要将数据放置到application作用域,struts表单标签可以根据name属性进行回显

D.只要将数据放置到对象栈root中,struts表单标签可以根据name属性进行回显

题目 26

struts2在控制器类中一般需要添加相应属性的

A.setter方法

B. as方法 C.getter方法 D.is方法

题目 27

当类型转换失败时,Struts会自动跳转到()结果 单选

A.error B.success C.login D.input

题目 28

下列哪个常量用来配置Action的扩展名()单选

A.struts.i18n.encoding B.struts.action.extension

C.struts.serve.static.browserCache D.struts.devMode

题目 29

请看代码 form.jsp

用户名:
密码:
struts.xml

User.java

public class User {

private String username; private String password;

public void setUsername(String username) { this. username = username; }

public void setPassword(String password) { this. password = password; } }

MyAction.java

package cn.itcast.web.action;

public class MyAction extends ActionSupport implements ModelDriven{

private User user = new User(); private 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; } }

当在form.jsp表单中,向用户名中输入zhangSan,向密码中输入123后提交,控制台会有什么样的输出结果()单选

A.null, null B.zhangSan, 123 C.没有输出

回false

String saved =(String) session.getAttribute(\ if (saved == null) {

return false; 为什么令牌属性\会不存在呢,那是因为当用户正常提交后,会调用this.resetToken(request);//清空当前会话中的token值。也就是说resetToken(request)方法中调用了 session.removeAttribute(\n.TOKEN\

当用户重复提交时,我说了\此方法在这里可要也可不要。\,下面我们分

析下,如果不调用这个方法,会话中就不会再重新保存token值,那么再刷新的时候,session中的token

值总是为null,isTokenValid(request)直接返回false,如果调用this.saveToken(request)的话, session中会重新添加token属性值。这个时候isTokenValid(request)会进行下面第三步的判断。 3.从当前会话中取得token的值与当前request中得到的token值比较,相同返回true,不同返回false

String token = request.getParameter(\ if (token == null) {

return false; return saved.equals(token);

如果是重复刷新,那么每次request中的令牌值都是一样的,但每次刷新当前会话中的令牌值都被重新替换了,所以会返回false

注:使用struts的表单提交Token机制时,提交的表单一定要写成这种形式,如果写成这种形式的话,尽管调用saveToken(request)方法也不会在当前的里面生成隐含表单,最终的结果都是\重复提交\

动态方法调用

在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多

第一种方式:指定method属性

这种方式我们前面已经用到过,类似下面的配置就可以实现

type=\

第二种方式:感叹号方式(需要开启),官网不推荐使用这种方式,建议大家不要使用.

用这种方式需要先开启一个开关

将此常量设置为true,这种方式才能使用,使用见示例 Action

package chapter3.action; public class Chapter3Action { public String result1(){ return \}

public String result2(){ return \} }

Jsp中访问方式

href=\basePath/chapter3/chapter3Action!result1\result1

{basePath}/chapter3/chapter3Action!result2\

如果配置了后缀,必须这样写:

/chapter4/chapter4Action!create.action XML中配置方式

class=\

name=\

name=\

name=\

第三种方式:通配符方式(官网推荐使用) 首先得关闭开关

这一种方式是由第一种转变过来的,我们可以看到,第一种方式有很多重复的代码,那么我们可以进行变形,看下面的代码

chapter3_*这里的*就是你呆会要匹配的字符串,即你在后面的请求中得这样写 http://...../ chapter3_create 或 http://...../ chapter3_update

注意,这时你action中必须有create和update方法与之匹配,甚至还可以这样匹配

但是这时一定要有对应的JSP页面存在,并且相应的路径不能错,这就对我们的命名进行了强制性的规定,一定要规范.

课堂示例: Action

public class Chapter4Action extends ActionSupport { public String list(){ return \}

public String create(){ return \}

public String index(){ return \} } XML:

name=\

访问Servlet API

有时我们需要用到Request, Response, S

本文来源:https://www.bwwdw.com/article/cefg.html

Top