Struts2 复习大纲

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Struts2 复习大纲
试题类型:填空、选择、简答、编程
1. Struts2 的MVC实现
M:由一系列的拦截器Interceptors、Action组件和一个ActionContext组件组成
V:由Result组件组成
C:由DispathFilter承担
具体请求过程是:客户端浏览器发出请求,请求被发送到控制组件DispatchFilter,它根据请求地址将其转到相应的模型组件,每个组件又都会关联一系列的拦截器,请求要经过这些拦截器的层层审查,最终到达业务逻辑的核心组件Action,Action处理完之后根据业务处理结果,将返回一个Result到客户浏览器,而后拦截器又做了一系列的善后工作,整个处理流程结束。

2. 如何开发Action,Action做了些什么?Web请求处理步骤,ActionContext,Action的组织?
开发Action常用的方法有三种:
1.写一个普通java类要有一个excute方法
class IndexAction1{public String execut(){return "success"}}//最基础的一种
2.实现Action接口
class IndexAction2 implements Action{public String execut(){return "success"}}/ /实现Action接口
3.继承ActionSupport类
class IndexAction3 extends ActionSupport{public String excut(){return "success" }}//最常用
一般使用第三种因为ActionSupport中包含有很多有用的常见的接口
Action做了些什么
1.获取web请求中的信息
2.在execute方法中根据获取的Web请求信息进行业务逻辑处理
3.返回一个代表处理结果的字符串,无论结果如何都会返回一个代表结果的字符串,而且此字符串要与配置文件中Action下定义的Result组件的名称完全一致,框架才能正确的返回一个结果视图
ActionContext
ActionContext习惯上叫做值栈上下文,在struts2框架中,为了便于数据访问,数据是集中存放的,每个请求的处理流程相关的数据信息都统一存放到一个ActionContext对象中,ActionContext对象包含有与此次请求相关的请求信息、会话信息和局部数据,它是线程独立的以保证每次请求处理的数据安全和隐私,struts2框架提供了OGNL(对象图导航语言)技术可以用来访问ActionContext对象中数据
Action的组织
在一个web应用中可以有多个Action组件,为了方便Action组件的管理,struts2框架提出了package的概念,package像对象,可以继承其他的package也可以被其他package继承,使用package可以将逻辑上相关的一组Action,Result,Interceptor等组件分为一组,一般形式如下
<package name="default" extends="struts-default">
<action name="..." class="....">
<result name="...">/**.jsp</result>
<result name="...">/**.jsp</result>
...
</action>
<action name="..." class="....">
<result name="...">/**.jsp</result>
<result name="...">/**.jsp</result>
...
</action>
...
</package>
3.如何使用拦截器,拦截器的工作原理,开发自己的拦截器,如何配置拦截器?
如何使用拦截器?
在Struts2框架中Action是封装了业务处理行为的对象,拦截器是众多Action中抽取出来的公共行为的实现,框架采用“配置文件”的形式将二者关联起来,从而避免在Action中对拦截器的硬编码,使用一个拦截器可以在“配置文件中”的package节点内定义节点<interceptors>形式如下:
<interceptors>
<interceptor name="",class=""/>
</interceptors>
需要填写一个唯一的name属性和拦截器的实现类的完整class名称即可
如果拦截器过多为了使用和管理方便可以将多个拦截器组成一个拦截器栈
拦截器的工作原理:
ActionInvocation实例负责整个Action对象的执行,它好比Action组件运行的一个容器,当框架接收到请求时,它首先根据请求的URL创建一个Action的实例,并将其赋给一个新创建的ActionInvocation实例,然后框架根据配置文件或声明的架构信息将相应的拦截器的引用传递给ActionInvation实例。

开发自己的拦截器:
创建一个拦截器,只需要定义的组件继承Interceptor接口实现如下三个方法:
Void destroy()
Void init()
String intercept(ActionInvocation invocation) throws Exception;
其中intercept方法是拦截器的核心方法,所有安装的拦截器都会调用这个方法
如何配置拦截器
在配置文件的节点<interceptors>中增加节点<interceptor>,其中属性name为拦截器的名称,注意不要与框架默认的拦截器重名即可,class属性为拦截器的实现类的完整名称。

4.P95---p101
看书
5.结果类型,三种Action的协作方式?
Struts2 框架支持的结果类型可分为两部分:一部分是对客户端的信息转发或重定向到其他的组件进行进一步的处理,实现Action组件间的协作,如chain、redirect-action;另一部分是定义信息的其他显示方式使得Result视图的样式更加多样Web应用的表现更加丰富,如XSLT、stream、freemaker、Velocity、plaintext等
Action的三种协作方式:chain、redirect和redirection
6.自定义类型转换器的配置?
配置自定义转换器有两种配置方式:
1.基于Action的局部配置,在与Action组件实现类所在的路径下创建一个名为XXXAction-conversion.properties属性文件,属性文件中的信息入口形式如下:
需要转换的字段属性=自定义转化器的类名
2.全局配置,在web应用的源代码的根目录下(即与struts.xml同样的位置)创建一个名为xwork-conversion.properties文件,属性文件中的信息入口形式如下:
需要转换的自定义类名=自定义转换器的类名
7.内置校验器,校验器的配置,手动校验?
内置校验器
Struts2框架提供了一系器,对web应用开发中常见的校验功能进行了封装,struts2.1版本中,目前共包含有16个内置校验器列的校验。

在xwork-core-..jar文件的package路径下可以找到一个名为default.xml的配置文件,里面定义了框架的所有内置校验器
自定义校验:
除了struts2框架内置的校验器外,还允许开发人员自定义校验器,开发自定义校验器只需两个步骤:
1.定义校验器的实现类。

实现类需要继承validate接口,另外,框架还提供了几个相关的类,因此最简单的方法就是字段校验器直接继承FieldValidatorSupport,非字段校验器直接继承ValidatorSupport。

注册校验器类。

在项目的根目录下创建一个名为validator.xml的配置文件,然后添加自定义校验器的注册信息,由于显式声明了自定义校验器,框架默认的校验器声明将不再起作用,因此,还要将struts2框架默认的校验器配置文件default.xml中内容复制到新创建的文件中。

校验器的配置:
每个action有一个校验文件,
校验规则配置文件命名格式:Action的名称-validation.xml
配置文件与action处于同一个目录中
8.资源文件的命名规则,加载资源文件的方式,jsp和Action访问国际化信息的方式,p206总结?
资源文件的命名规则:
资源文件的内容是很多key-value对,key是程序使用的部分,value是程序界面的显示资源文件命名有3中形式:baseName_language_country.propertiesbaseName_language.propertiesbaseName.proper ties其中baseName是资源文件的基础文件名,language和country不可随意变化,必须是java支持的语言和国家,language为语言名称使用两个小写字母表示"en"表英语,"ch"表中文,country为国家名称使用两个大写字母表示"US"表美国,"CN"表中国
加载资源文件:
0.临时资源文件:<s:i18n……>标签内的name属性指定临时的国际化资源文件
1.Action范围资源文件:ActionClass.properties
2.包范围资源文件package.properties,基名就是package,不是action所在的包名
3.全局资源文件
首先创建一个struts.properties在src目录下,服务器启动时候会自动加载该文件,在这个文件中写入struts.custom.i18n.resources=globalMessages,服务器会自动选择前缀为globalMessages资源文件。

(或者你在你的struts.xml文件中添加<constant name="struts.custom.i18n.resources" value="globalMessages"></constant>服务器加载struts.xml的时候会加载国际化资源文件);
搜索范围从上到下
jsp和Action访问国际化信息的方式:
jsp页面中使用sturts2的<s:i18n>标签页面中使用sturts2的<s:property>标签页面中使用sturts2的<s:text>的name属性表单中使用时,为表单标签指定一个key属性Action使用ActionSupport类的getText方法,该方法接收一个name参数,指定资源文件中的key
9什么是Ajax,Dojo框架的几个Ajax标记?
AJAX 定义
AJAX(Asynchronous JavaScript and XML)其实是多种技术的综合,包括Javascript、
XHTML 和CSS、DOM、XML 和XSTL、XMLHttpRequest。

其中:
使用XHTML 和CSS 标准化呈现,使用DOM 实现动态显示和交互,使用XML 和XSTL 进行数据交换与处理,使用XMLHttpRequest 对象进行异步数据读取,使用Javascript 绑定和
处理所有数据。

Dojo框架的几个Ajax标记:
文本框的扩展
<FORM>姓:<input type="text" dojoType=dijit.form.TextBox name=“first" length=“20”trim=“true”ucfirst=“true”/><br/>名:<input type="text" dojoType=dijit.form.TextBox name=“last" length=“20”trim=“true”ucfirst=“true”/><br/>邮件地址:<input typ e="text" dojoType=dijit.form.TextBox name=“email" length=“20”lowercase=“true” /><br/>
内嵌编辑框当不在编辑状态时,这个部件表现的像一个<div>标签,当被包含的文字被点击时,部件就进入编辑状态。

在这个状态下,之前显示的文字被隐藏,另外一个可编辑部件在同一个位置显示出来。

该部件具有其它属性标记:editing Boolean 判断结点是否处于编辑状态saveButton String 【保存】按钮的标签cancelButton String 【取消】按钮的标签 <script type=“text/javascript”>dojo.require(“doji.parser”); dojo.require(“doji.form.Textarea”);dojo.require(“doji. form.InlineEd itBox”);</script><span dojoType=“dijit.form.InlineEdit Box”> <textarea dojoType=“dijit.form.Textarea”>edit me</textar ea></span>在上述代码中。

可变大小文本域部件是可编辑的部件。

默认显示的文字(edit me)在被单击后可以被修改
工具提示工具提示类似于传统的<html>元素的title=‘’属性,但是更灵活,它可以控制显示的时,还可以以任意的HTML方式来显示文本内容。

调色板可以在HTML页面用表格来显示不同的颜色,用户可以自己选择。

相关文档
最新文档