0、搭建Struts程序的基本步骤,并写出步骤的关键代码? 1、jar包
2、加web.xml里的配置,过滤器,将所有的请求指定有Struts2来处理 3、struts2.xml 请求配置文件 4、action类。。。
1、 如何在不适用MyEclipse工具的情况下搭建Struts程序?
2、 Struts2的执行流程?
3、 Struts2配置文件中package标签有什么用?
4、 package标签中有哪些属性,并说明每个属性?
5、 列举Struts2获取web资源(request、session、response等)的2种方式?
1、与servlerAPI解耦的方式
ActionContext.getContext().get****
获得的结果是一个MAP集合
2、与servletAPI耦合的方式
ServletActionContext.getContext().get***
获得的结果就是web资源对象
6、 Struts2配置文件中action标签的作用,及里面属性的使用?
action标签代表请求
7、 Struts2中的Action接口和ActionSupport类有什么作用?
1、Action接口定义了常用的几个action返回值以及默认的action执行方法。
2、ActionSupport类是struts2的默认执行类,该类实现了Action、Validateable、ValidationAware、TextProvider等接口,其实就是集成了struts2的许多功能。
8、 Struts2中resutl标签的作用?
处理struts2的返回结果
9、 Struts2中结果类型有哪些?默认的结果类型是什么?
● 转发到jsp:默认的type,dispatcher
● 转发打action: chain
● 重定向到jsp:redirect
● 重定向到action:redirectAction
使用转发和重定向传参的问题?
当使用转发的时候,action里的参数会保存在请求中
当使用重定向的时候,1、存在session里,2、在跳转路径中加参数
跳转路径是写在struts.xml里的result标签里。
那么就要通过ognl表达式来加参数了
index.jsp?id=${id} ${}不是EL表达式,但是语法一样,里面的id代表的是action里的属性
10、 什么是动态结果?如何配置动态结果
11、 什么是全局结果?如何配置Struts2的全局结果?
全局结果是所有action都可以使用的result
<global-results>
<result name="error">error.jspresult>
global-results>
11、Struts2验证是由哪个类的哪个方法完成的?
由ActionSupport类,该类又实现了Validateable、ValidationAware两个接口,validate()方法实现验证
12、Struts2中常用的常量?
<constant name="struts.ui.theme" value="simple"/>
<constant name="struts.custom.i18n.resources" value="message"/>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.i18n.encoding" value="utf-8"/>
<constant name="struts.configuration.xml.reload" value="true"/>
13、Struts2中通配符的使用及动态方法的使用。举例说明。
1、通配符的使用 将请求的地址设置成带*号的
test*,*号代表任意单词
在配置文件中使用{1}来获取*号的内容
那么在设置class,与method属性的时候就可以使用{1}来进行替换。并在在result中也可以使用
<action name="test*" class="{1}Action" method="{1}">
<result>index{1}.jspresult>
action>
当请求地址为testlogin,*的内容是login
那么调用的class为loginAction
调用的方法为login
返回的页面是indexlogin.jsp
2、动态方法的使用
请求路径!方法名
例如:test!login
那么请求的地址为test,调用的方法是login
14、什么是拦截器?拦截器与过滤器的区别是什么?
拦截器与过滤器的区别
● 拦截器只能拦截Action,而过滤器能拦截所有
● 过滤器依赖Servlet,拦截器不用
● 在Action的生命周期中,拦截器能被多次调用,而过滤器只能在容器初始化的时候被调用一次
● 拦截器可以访问Action上下文(ActionContext),以及值栈(VallueStack)里的对象。过滤器不能
15、请列举5种Struts2自带的拦截器,并说明其意义
params 将请求的数据设置到action中
staticparams 将配置文件中通过action元素的子元素param设置的参数设置到对应的action的属性中
servletConfig 将源于servletAPI的各种对象注入到action中
fileupload 将文件和源数据从多种请求转换为常规请求
validation 执行数据验证
workflow 提供数据验证错误时执行的终止流程
exception 捕获异常
16、如何使用自定义拦截器?
● 使用自定义拦截器的话,首先自定义的拦截器类,extends AbstractInterceptor接口,接口需要实现3个方法,类似于过滤器,init()、destory(),intercept()
● 由intercept()方法来实现拦截的功能,该方法有个参数ActionInvocation,由这个参数可以获取action上下文及值栈的内容
● 当拦截功能完成后,由invocation.invoke()来实现进入下一个拦截器或者进入action,类似于过滤器的doFilter()
● 最后会将action的执行结果返回,return Action的result
● 写完了拦截器类后要在struts.xml里配置拦截器
● 在struts.xml添加配置
<interceptors>
<interceptor name="testa" class="com.interceptor.testIntercetor"/>
<interceptor name="testb" class="com.interceptor.myInterceptor"/>
<interceptor-stack name="test">
<interceptor-ref name="testa"/>
<interceptor-ref name="defaultStack">interceptor-ref>
interceptor-stack>
interceptors>
●
17、Strtus2中ActionContext类有什么用?
我们能通过ActionContext获取web资源、值栈
ActionContext本身其实就是个map集合
18、在web-xml中如何配置欢迎首页是action请求?
● 在webroot文件夹下新建一个与action请求相同名字的文件,不用后缀名
● 跳转还是跳到jsp页面,但是在页面中直接继续跳转至Action,可以使用javascript或者使用jsp:froword标签
19、什么是值栈?
值栈:简单的说,就是存放action的堆栈
当 Struts 2接收到一个.action的请求后,会先建立Action类的对象实例,但并不会调用Action方法,而是先将Action类的相应属性放到 ValueStack对象的顶层节点(ValueStack对象相当于一个栈)。
20、列举常用的Struts2的表单标签及非表单标签?
Struts2自带了有很多标签分为:UI标签和非UI标签 ,UI标签就是常用的类似于HTML的标签,用来显示或者接收数据的。
非UI标签是用来处理逻辑的标签
在JSP页面中要使用这些标签的话需要导入struts的包
<%@taglib uri="/struts-tags" prefix="s" %>
使用struts自带的表单标签会自动给所有的表单加上表格标签,如果不需要的话,需要在配置文件里修改struts2的默认主题
常用的非UI标签
<s:set>s:set>
<s:if test="">s:if><s:else>s:else>
<s:iterator>s:iterator>
21、什么是OGNL?
对象视图导航语言(OGNL),用来操作struts2里的对象。所有的struts2的标签里的value值都是默认使用ognl解析
22、OGNL使用详解。
● 使用ognl访问值栈顶端内容
⏹ 访问值栈内容的话只需要使用对象的属性去访问
⏹ 如果不是值栈顶端,那么需要通过下标去访问
⏹ 例: 栈
那么访问A对象里的数可直接用A对象里的属性名访问。如果要获取B对象那么通过下标来访问[1].属性名
● 访问非值栈内容
如果要访问非值栈的内容,那么需要在表达式前加上#,
例: <s:property value="#request.对象名"/>
非值栈的内容包括:web资源对象,以及使用标签创建的对象,如set标签,<s:iterator>标签
都需要使用#号加对象名来访问
例:<s:set var="id" value="1"/>
访问:
¥29.8
¥9.9
¥59.8