Struts串讲.doc_第1页
Struts串讲.doc_第2页
Struts串讲.doc_第3页
Struts串讲.doc_第4页
Struts串讲.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,Struts的基本流程:2,Struts框架中重要的三个类:DispatchAction,MappingDispatchAction和LookupDispatchAction,这三类共同父类是Action类。Action类:注意:在使用继承Struts预定义的Action类,一定不要覆盖execute方法,否则会导致无法调用自定义Action相应方法。Struts框架为了使用开发者使用起来更为方便简洁,用提供了后面的三个类: DispatchAction类(org.apache.struts.actions.DispatchAction):DispatchAction类是Action类的子类,他提供了有实现的execute方法。我们写的自定义Action类,可以继承DispatchAction类,但不要覆盖execute方法,可以在自定义类中写返回值和参数表都与execute方法相同的方法,可以通过在struts-congfig.xml中为这个action的配置中添加一个参数,来判断调哪一个方法,实际上DispatchAction类就是通过反射机制,通过form中参数调用了自定义Action中的方法,当然这些方法的定义要符合规范。注意:使用继承DispatchAction类的自定义的Action,只会匹配一个action提交路径,是通过一个参数来表示具体要调用Action类中的那个方法;因为路径是共享同一个,所以业会共享一个ActionForm,因为一个提交路径上只会产生一个ActionForm对象,来封装和校验用户所提交的数据。如果加上校验,会产生form表单的参数不一致的情况,会导致校验无法通过。例:自定DispatchAction子类:public class MyAction extends DispatchActionpublic ActionForward add(ActionMapping mapping, ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception return mapping.findForward(sucess); struts-config.xml配置文件: JSP页面: 或者: MappingDispatchAction类(org.apache.struts.actions.MappingDispatchAction):MappingDispatchAction类是DispatchAction的子类,他和DispatchAction不同点就是可以去匹配多个action路径,这样也就是结决了共用ActoinForm的校验问题了,多个Action的路径使用同一的自定义Action类,这样就不用共享同一个ActionForm,也就不会有校验问题了。而我们只需要在配置文件中,在元素中添加一个parameter属性,而它的值就是所对应的当前提交路径要访问的方法的名字。这样的话,就不再象使用DispatchAction那样一定要在JSP页面中使用一个参数来表示具体要调用哪个方法。例:自定MappingDispatchAction子类:public class MyAction extends MappingDispatchActionActionForward add(ActionForm form,HttpServletRequest request,HttpServletResponse response ActionMapping mapping) throws Exception return mapping.findForward(add); ActionForward delete(ActionForm form,HttpServletRequest request,HttpServletResponse response ActionMapping mapping) throws Exception return mapping.findForward(del); struts-config.xml配置文件: JSP页面:在JSP页面中也不用在使用隐藏域传递参数,直接在form中的action中就可以直接使用xxx.do匹配了。 LookupDispatchAction类(org.apache.struts.actions.LookupDispatchAction):LookupDispatchAction类也是DispatchAction类的子类,他所实现的功能是解决一个表单多种提交问题的,他是通过使用一个资源文件来配合实现,用submit按钮的value来作为资源文件中的key所对应的值,通过这个值来找到对用的getKeyMethodMap()方法的map的key,在使用这个key来获得指定Map中所对应的value值,这个值就是要调用的方法名。submit的value -MessageRperties中的value (value-key) -自定义的action中的Map中key对相应的值-方法名注意两点:第一点:资源文件中的key值和jsp中的页面中按钮的key值, 还有action类中getKeyMethodMap()中创建的Map的key值一定要一致。 第二点:页面上按钮的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 keyMethodMap; 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 response) throws Exception return mapping.findForward(delete); MessageRperties资源文件:button.add=add new userbutton.delete=delete user说明:MessageRperties资源文件的内容其实有两个重要的作用,一个是:=等号右边的value值就是按钮上显示的内容,即按钮的名字。二个是:=等号左边的key值和在Action中创建的Map的key值对应,有了key值了,也就能找到Map中所对应的方法了。注意:在继承LookupDispatchAction时,要覆盖getKeyMethodMap()方法,并定义Map,向Map中放入指定的键值对。struts-config.xml配置文件: JSP页面:input type=submit name=methodName value= input type=submit name=methodName value=* 小总结 *DispatchAction, MappingDispatchAction, LookupDispatchAction的区别:1, DispatchAction.多个提交共享一个路径;.需要一个额外的属性来标注要调用action哪个方法;.其中parameter=“method”所有提交路径都属性一致的;2, MappingDispatchAction .对DispatchAction的改进不在需要添加额外属性.每一个提交路径对应一个action的方法,一般情况下在struts-config.xml 中,提交路径和parameter配置完全相同;所以就可以从提交路径上直接看出 调用哪个方法。既:每个提交路径就对应一个方法;.其中可以通过parameter=“”属性来直接指定方法的名称; 3, LookupDispatchAction.适合一个form表单有多个提交按钮;.需要一个资源文件文件 ;.注意四点: 1).在JSP页面中,通过来从资源文件中读取按钮的名称; 2).在配制struts-config.xml文件中parameter的值,一定要和页面上按钮的namede 属性值保持一致; 3).在资源Rperties文件中,要有一个或者多个键-值对, 当页面通过key值来读取时,作为按钮的名称; 当Action通过key值来读取时,然后再通过自身的Map获得方法的名称, 从而决定调用哪个方法; 4).在实现的Action中,一定要覆盖getKeyMethodMap()方法;自己创建一个Map,其中Map中的key值一定要和资源文件中的key值要一致, 而value值一定是本action中的方法的名称;*3,基于struts的web应用的开发步骤:(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下,在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文件中的配置,解析配置文件中,配置文件的标签就会被映射成Struts框架中的ActionMapping对象。 action path=action的路径,在form表单中的action属性写的那个路径 type=action的类全限定名 name=ActionForm的名字,一定要和子元素的name属性值一致input=如果actionForm检验校验出错后要转去的页面 validate=true|false : 是否进行Form校验 scope=request|session(默认值)Form的保存空间 每个元素的详解:元素:是Struts配置文件的根元素。元素:是用来配置多个ActionForm Bean。元素包含零个或者多个子元素。元素属性有:name:指定该ActionForm Bean的唯一标识,在整个Struts框架中就可以使用这个名字来使用这个bean了,该属性是必须的。 tpye:指定ActionForm 类的全限定名,该属性是必须的。如果是动态的ActionForm Bean,还必须配置元素的子元素;子元素:用来指定表单字段,它有2个常用的属性:name:指定表单字段的名字,该属性是必须的。type:指定表单字段的类型,如果表单字段为Java类,必须输出完整的类名,该属性是必须的。元素:用于配置异常处理。元素可以包含多个或者零个元素。元素:用来设置Java异常和异常处理类org.apache.stuts.action.ExceptionHandler之间的映射。元素属性有:handler:指定异常处理类。默认值为org.apache.stuts.action.ExceptionHandler。key:指定在Resource Bundle中描述该异常的消息key。path:指定当异常发生时转去的路径。scope:指定ActionMessage实例的存放范围,可选值包括request和session。此项默认值request。type:指定所需处理的异常类的名字。此项是必须的。 元素:包含多个或者零个元素。元素:描述了从特定的请求路径到相应的Action的映射。元素的属性:path:指定访问Action的路径,它以/开头,没有扩展名。type:指定Action的全限定名。该项是必须的。name:指定和当前Action类相关的ActionForm Bean的名字,改名字必须是在元素中name属性定义过的名字,此项是可以选的。scope:指定ActionForm Bean存在的范围,可选择值有request和session,默认值为session。validate:指定是否要先调用ActionForm Bean中的validate方法进行校验,默认值为true。input: 指定包含输入表单的URL路径,当表单验证失败时,将把请

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论