收藏 分享(赏)

Struts串讲.doc

上传人:tkhy51908 文档编号:6337360 上传时间:2019-04-07 格式:DOC 页数:8 大小:78KB
下载 相关 举报
Struts串讲.doc_第1页
第1页 / 共8页
Struts串讲.doc_第2页
第2页 / 共8页
Struts串讲.doc_第3页
第3页 / 共8页
Struts串讲.doc_第4页
第4页 / 共8页
Struts串讲.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、1,Struts 的基本流程:2,Struts 框架中重要的三个类:DispatchAction,MappingDispatchAction 和LookupDispatchAction,这三类共同父类是 Action 类。Action 类:注意:在使用继承 Struts 预定义的 Action 类,一定不要覆盖 execute 方法,否则会导致无法调用自定义 Action 相应方法。Struts 框架为了使用开发者使用起来更为方便简洁,用提供了后面的三个类: DispatchAction 类(org.apache.struts.actions.DispatchAction):DispatchA

2、ction 类是 Action 类的子类,他提供了有实现的 execute 方法。我们写的自定义 Action 类,可以继承 DispatchAction 类,但不要覆盖 execute 方法,可以在自定义类中写返回值和参数表都与 execute 方法相同的方法,可以通过在 struts-congfig.xml中为这个 action 的配置中添加一个参数,来判断调哪一个方法,实际上 DispatchAction 类就是通过反射机制,通过 form 中参数调用了自定义 Action 中的方法,当然这些方法的定义要符合规范。注意:使用继承 DispatchAction 类的自定义的 Action,

3、只会匹配一个 action 提交路径,是通过一个参数来表示具体要调用 Action 类中的那个方法;因为路径是共享同一个,所以业会共享一个 ActionForm,因为一个提交路径上只会产生一个 ActionForm 对象,来封装和校验用户所提交的数据。如果加上校验,会产生 form 表单的参数不一致的情况,会导致校验无法通过。例:自定 DispatchAction 子类:public class MyAction extends DispatchActionpublic ActionForward add(ActionMapping mapping, ActionForm form,HttpS

4、ervletRequest request,HttpServletResponse response) throws Exceptionreturn mapping.findForward(“sucess“); struts-config.xml 配置文件:JSP 页面:或者: MappingDispatchAction 类(org.apache.struts.actions.MappingDispatchAction):MappingDispatchAction 类是 DispatchAction 的子类,他和 DispatchAction 不同点就是可以去匹配多个 action 路径,这样

5、也就是结决了共用 ActoinForm 的校验问题了,多个 Action的路径使用同一的自定义 Action 类,这样就不用共享同一个 ActionForm,也就不会有校验问题了。而我们只需要在配置文件中,在元素中添加一个 parameter 属性,而它的值就是所对应的当前提交路径要访问的方法的名字。这样的话,就不再象使用 DispatchAction 那样一定要在 JSP 页面中使用一个参数来表示具体要调用哪个方法。例:自定 MappingDispatchAction 子类:public class MyAction extends MappingDispatchActionActionFo

6、rward add(ActionForm form,HttpServletRequest request,HttpServletResponse response ActionMapping mapping) throws Exceptionreturn mapping.findForward(“add“); ActionForward delete(ActionForm form,HttpServletRequest request,HttpServletResponse response ActionMapping mapping) throws Exceptionreturn mappi

7、ng.findForward(“del“); struts-config.xml 配置文件:JSP 页面:在 JSP 页面中也不用在使用隐藏域传递参数,直接在 form 中的 action 中就可以直接使用xxx.do 匹配了。 LookupDispatchAction 类(org.apache.struts.actions.LookupDispatchAction):LookupDispatchAction 类也是 DispatchAction 类的子类,他所实现的功能是解决一个表单多种提交问题的,他是通过使用一个资源文件来配合实现,用 submit 按钮的 value 来作为资源文件中的

8、key 所对应的值,通过这个值来找到对用的 getKeyMethodMap()方法的 map 的key,在使用这个 key 来获得指定 Map 中所对应的 value 值,这个值就是要调用的方法名。submit 的 value -MessageResource.properties 中的 value (valuekey) -自定义的 action 中的 Map 中 key 对相应的值-方法名注意两点:第一点:资源文件中的 key 值和 jsp 中的页面中按钮的 key 值, 还有 action 类中getKeyMethodMap()中创建的 Map 的 key 值一定要一致。第二点:页面上按钮

9、的 name 的值一定要和 struts-config.xml 中的 parameter 的值一致。例子:自定 LookupDispatchAction 子类:public class AddDelLookupDispatchAction extends LookupDispatchActionpublic Map getKeyMethodMap()Map keyMethodMap= new HashMap();keyMethodMap.put(“button.add“, “add“);keyMethodMap.put(“button.delete“, “delete“);return key

10、MethodMap;public ActionForward add(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception return mapping.findForward(“add“);public ActionForward delete(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse respon

11、se) throws Exceptionreturn mapping.findForward(“delete“);MessageResource.properties 资源文件 :button.add=add new userbutton.delete=delete user说明:MessageResource.properties 资源文件的内容其实有两个重要的作用,一个是:=等号右边的 value 值就是按钮上显示的内容,即按钮的名字。二个是:=等号左边的 key 值和在 Action 中创建的 Map 的 key 值对应,有了 key 值了,也就能找到 Map 中所对应的方法了。注意:在

12、继承 LookupDispatchAction 时,要覆盖 getKeyMethodMap()方法,并定义 Map,向 Map 中放入指定的键值对。struts-config.xml 配置文件:JSP 页面:“ “* 小总结 *DispatchAction, MappingDispatchAction, LookupDispatchAction 的区别:1, DispatchAction.多个提交共享一个路径;.需要一个额外的属性来标注要调用 action 哪个方法;.其中 parameter=“method”所有提交路径都属性一致的;2, MappingDispatchAction .对 D

13、ispatchAction 的改进不在需要添加额外属性.每一个提交路径对应一个 action 的方法,一般情况下在 struts-config.xml中,提交路径和 parameter 配置完全相同;所以就可以从提交路径上直接看出调用哪个方法。既:每个提交路径就对应一个方法;.其中可以通过 parameter=“”属性来直接指定方法的名称; 3, LookupDispatchAction.适合一个 form 表单有多个提交按钮;.需要一个资源文件文件 ;.注意四点:1).在 JSP 页面中,通过来从资源文件中读取按钮的名称; 2).在配制 struts-config.xml 文件中 param

14、eter 的值,一定要和页面上按钮的 namede 属性值保持一致;3).在资源 Resource.properties 文件中,要有一个或者多个键- 值对,当页面通过 key 值来读取时,作为按钮的名称;当 Action 通过 key 值来读取时,然后再通过自身的 Map 获得方法的名称,从而决定调用哪个方法;4).在实现的 Action 中,一定要覆盖 getKeyMethodMap()方法;自己创建一个Map,其中 Map 中的 key 值一定要和资源文件中的 key 值要一致,而 value 值一定是本 action 中的方法的名称;*3,基于 struts 的 web 应用的开发步骤

15、:(1) ,对应用环境进行配置:创建一个符合标准的 web 应用的结构,在应用中需要使用到 Struts 的一些 jar 文件,要放到 WEB-INF 的 lib 文件夹下,这些 jar 文件都在 struts 的 zip 文件中的/struts-1.2.9-bin/lib 下,还有 struts-1.2.9-bin/contrib/struts-el/lib 下的standard.jar、jstl.jar 和 struts-el.jar。(2) ,在 web.xml 中配置 Struts 的核心控制器 ActionServlet,并指明 Struts 的配置文件的所在位置 WEB-INF 下

16、,在 struts 的文件中有一个样板的 web.xml 文件,使用这个web.xml 文件来部署应用就可以了 ,这个样板在 struts 的 zip 文件中的struts-1.2.9-src.zip 文件中的 web/examples/WEB-INF/web.xml 就是样板文件。(3) ,写自定义 Action,实体,ActionForm,以及业务类。(4) ,配置 struts-config.xml 文件,配置 Actoin。(5) ,在 web 服务器部署 struts,并进行测试。4,struts-config.xml 文件详解:在 struts-config.xml 文件中的配置,

17、解析配置文件中,配置文件的标签就会被映射成 Struts 框架中的 ActionMapping 对象。子元素的 name 属性值一致“input=“如果 actionForm 检验校验出错后要转去的页面 “ validate=“true|false : 是否进行 Form 校验“ scope=“request|session(默认值)Form 的保存空间“每个元素的详解:元素:是 Struts 配置文件的根元素。元素:是用来配置多个 ActionForm Bean。 元素包含零个或者多个子元素。元素属性有:name:指定该 ActionForm Bean 的唯一标识,在整个 Struts 框架

18、中就可以使用这个名字来使用这个 bean 了,该属性是必须的。tpye:指定 ActionForm 类的全限定名,该属性是必须的。如果是动态的 ActionForm Bean,还必须配置元素的子元素;子元素:用来指定表单字段,它有 2 个常用的属性:name:指定表单字段的名字,该属性是必须的。type:指定表单字段的类型,如果表单字段为 Java 类,必须输出完整的类名,该属性是必须的。元素:用于配置异常处理。元素可以包含多个或者零个元素。元素:用来设置 Java 异常和异常处理类 org.apache.stuts.action.ExceptionHandler之间的映射。元素属性有:han

19、dler:指定异常处理类。默认值为 org.apache.stuts.action.ExceptionHandler。key:指定在 Resource Bundle 中描述该异常的消息 key。path:指定当异常发生时转去的路径。scope:指定 ActionMessage 实例的存放范围,可选值包括 request 和 session。此项默认值 request。type:指定所需处理的异常类的名字。此项是必须的。 元素:包含多个或者零个 元素。元素:描述了从特定的请求路径到相应的 Action 的映射。元素的属性:path:指定访问 Action 的路径,它以/ 开头,没有扩展名。typ

20、e:指定 Action 的全限定名。该项是必须的。name:指定和当前 Action 类相关的 ActionForm Bean 的名字,改名字必须是在元素中 name 属性定义过的名字,此项是可以选的。scope:指定 ActionForm Bean 存在的范围,可选择值有 request 和 session,默认值为 session。validate:指定是否要先调用 ActionForm Bean 中的 validate 方法进行校验,默认值为 true。input: 指定包含输入表单的 URL 路径,当表单验证失败时,将把请求转发到该 URL.子元素: 其实对应这 Struts 框架中的

21、 ActionForward 这类,该类是专门用来处理转发的,根据给定的名字转去相应的路径去。子元素两属性:name:指定一个唯一的标识名,可以在 Action 中使用这个名字,进行相应的转发处理。path:指定要转去的 URL.(可以是提交的路径,也可以是某个具体的 JSP 页面)redirect:指定以何种形式转向到指定的路径去, true:表示重定向;false :表示转发。元素:用来配置 Resource Bundle,Resource Bundle 用于存放本地化信息文本。元素的属性:key:指定 Resource Bundle 存放在 ServletContext 对象中时采用的属

22、性 key。默认值为Globals.MESSAGES_KEY 定义的字符串常量,只允许有一个 Resource Bundle 采用默认的属性 key。parameter: 指定 Resource Bundle 的消息资源文件文件名。例如:如果此项设为“pack1.pack2.ApplactionRcsources”,那么对应的实际资源文件存放路径为:WEB-INF/class/pack1/pack2/ApplicationRecsources。元素: 用于配置 Struts 插件。元素的属性:className:制定 Struts 插件类,插件类必须实现 org.apache.struts.action.PlugIn 接口。元素可以包括一个或者多个子元素,以下是元素的配置代码例子:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报