欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    struts(培训笔记).pdf

    • 资源ID:50073119       资源大小:164.21KB        全文页数:14页
    • 资源格式: PDF        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    struts(培训笔记).pdf

    StrutsMVCStrutsMVCStrutsMVCStrutsMVC框架框架web 应用的分层交互层,表现数据,收集数据,也就是视图层,接受请求,通过处理层完成相应的响应。(V,C)处理层,完成数据的处理,也就是业务层(M)。MVC 设计模式(应用观察者模式的框架模式)M model,模型,操作数据的业务处理层。V view,示图,采集和显示数据,为业务层提供数据,表现业务层输出的数据,只关心数据的类型,不管新数据的来源。C ctrl,控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图。MVC 框架的实现模型模型一:JSP+JavaBean,JSP 既充当控制,又充当视图,以页面为核心,JSP 使用 jsp:useBean,他不能够实现不同的页面,显示不同的数据,需要借助于中间类来调用 JavaBean 的方法才能实现。模型二:JSP+Servlet+JavaBean,以控制为核心,JSP 只负责显示和收集数据,sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种 MVC 的实现模式。StrutsMVC 框架Struts是使用 MVC 的实现模式二来实现的,也就是以控制器为核心。Struts提供了一些组件使用 MVC 开发应用程序:Model:Struts没有提供 model 类。这个商业逻辑必须由 Web 应用程序的开发者以 JavaBean或 EJB的形式提供View:Struts提供了 action form 创建 form bean,用于在 controller 和 view间传输数据。此外,Struts提供了自定义 JSP 标签库,辅助开发者用 JSP 创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于 JSP 中。Controller:Struts提供了一个核心的控制器 ActionServlet,通过这个核心的控制器来调用其他用户注册了的自定义的控制器 Action,自定义 Action 需要符合 Struts 的自定义 Action 规范,还需要在 struts-config.xml 的特定配置文件中进行配置,接收 JSP 输入字段形成 Actionform,然后调用一个 Action 控制器。Action 控制器中提供了 model 的逻辑接口。写一个基于 Struts的 web 应用1,创建一个符合标准的 web 应用的结构,也就是一个有 WEB-INF 文件夹的应用文件夹,在应用中需要使用到 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 就是样板文件。部署应用看 struts 是否发布成功。actionorg.apache.struts.action.ActionServletconfig/WEB-INF/struts-config.xmlaction*.do3,写 jsp 页面和业务,实体,和自定义控制器类 Action,自定义 Action 是要继承于 Action类例:import org.apache.struts.action.*;import javax.servlet.http.*;public class LoginAction extends Actionpublic ActionForwardexecute(ActionMapping mapping,ActionForm form,HttpServletRequestrequest,HttpServletResponseresponse)throwsExceptionif(request.getParameter(username).equals(admin)&request.getParameter(passwd).equals(123)returnmapping.findForward(success);returnmapping.findForward(fail);在 struts-config.xml 文件中的配置,解析配置文件中,配置文件的 action 标签就会被映射成ActionMapping 对象。ActionForm 是可以自动将表单中的数据封装成对象,当然,一个自定义 ActionForm 也是要遵守 Struts规范的,也就是要继承于 ActionForm,并在以上的 struts-config.xml 进行配置。ServletController(ActionServlet 和自定义的 Action),配置Ctrler 需要配置 struts-config.xml,通过客户端 form 的 action 来查找调用相应的 action,自定义 action 中的 mapping 对应的是配置文件中的 forward标签,通过 forward 的 path 属性来跳转到相应的路径。基于 struts的 web 应用的开发步骤1,对应用环境进行配置2,创建 web应用的结构,需要将 struts 应用的 jar 文件进行部署。3,在 web服务器部署 struts4,配置 struts-config.xml 文件,配置 Actoin5,写自定义 Action,实体,以及业务类ActionFormActionFormActionFormActionForm的校验的校验ActionForm 的校验是 struts 提供的一项类似于 Javascript 的表单校验的功能。他可以验证用户填写的表单数据的正确性。ActionForm 的校验,如果表单中的数据符不符合规定格式的要求,ActionForm 的 validate()方法会返回一个 ActionError 对象,ActionError 对象中封装了一个或多个应用发现的校验错误,每一个错误有一个 ActionMessage 对象表达,我们可以通过判断这个ActionError 的对象是否为空,如果为空那么表单的数据符合格式要求,不为空就是表单项中就有不符合格式要求的项。struts 标签在使用 struts标签的 JSP 页面中要先加上以下的标签库的引用这个标签可以从指定的资源文件中根据指定的 key 值来取得可以对应的值,但是需要在 struts-config.xml 中进行配置。配置资源,这些资源可以在 ActionMessage中使用,也就是在构造 ActionMessage是指定资源文件中的 key 这样,在发现校验错误时,就可以先在资源文件中指定的 key 的值了。可以使用 struts的、标签都可以显示指定错误的消息。.struts 会自动的判断返回 ActionError 是否为空,如果是空可以自动的转向指定页面,也可以强制不进行校验,虽然可以在 Form中不去覆盖 validate()方法,但是那样是不可取的。要实现上面提得到功能还需要在 struts-config 中配置。$error标签只会原样输出在 ActionErrors中 ActionMessage 对应资源文件中对应的值。标签还可以对输出在 ActionError 中 ActionMessage 对应资源文件中对应的值作一些显示效果的修改。标签只 会 取 资源 文 件 中指 定 key 所对应 的 值,使 用bean:message 标签可以实现国际化。struts 的 html 标签struts 的 html 标签的使用类似于 html 标签,但是少有区别,指定类型的方式变成使用不同的标签,这样会绑定 struts,所以旨在需要时使用。Struts预定义的 Action 类注意:在使用继承 Struts预定义的 Action 类,一定不要覆盖 execute方法,否则会导致无法调用自定义 Action 相应方法。DispatchAction 类(org.apache.struts.actions.DispatchAction)DispatchAction 类是 Action 类的子类,他提供了有实现的 execute方法。我们写的自定义 Action 类,可以继承 DispatchAction 类,但不要覆盖 execute方法,可以在自定义类中写反回值和参数表都与 execute方法相同的方法,可以通过在 struts-congfig.xml中为这个 action 的配置中添加一个参数,来判断调哪一个方法,实际上 DispatchAction 类就是通过反射机制,通过 form中参数调用了自定义 Action 中的方法,当然这些方法的定义要符合规范,使用继承 DispatchAction 类的自定义的 Action 类,也就会共享同一的 Action 路径。注意:使用继承 DispatchAction 类的自定义的 Action,只会匹配一个 action 路径,只能共享一个 ActionForm,如果加上校验,会产生 form 表单的参数不一致的情况,会导致校验无法通过。例:public class MyAction extends DispatchActionActionForwardadd(ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse,ActionMapping mapping)throws Exceptionreturnmapping.findForward(sucess)MappingDispatchAction 类(org.apache.struts.actions.MappingDispatchAction)MappingDispatchAction 类是 DispatchAction 的子类,他和DispatchAction 不同点就是可以去匹配多个 action 路径,这样也就是结决了共用 ActoinForm 的校验问题了,多个 Action 的路径使用同一的自定义 Action 类,这样就不用共享同一个 ActionForm,也就不会有校验问题了。例:public class MyAction extends MappingDispatchActionActionForwardadd(ActionFormform,HttpServletRequestrequest,HttpServletResponseresponseActionMapping mapping)throws Exceptionreturnmapping.findForward(add)ActionForward del(ActionForm form,HttpServletRequest request,HttpServletResponseresponseActionMapping mapping)throws Exceptionreturnmapping.findForward(del)在 JSP 页面中也不用在使用隐藏域传递参数,直接在 form 中的 action 中就可以直接使用xxx.do 匹配了。LookupDispatchAction(org.apache.struts.actions.LookupDispatchAction)LookupDispatchAction 类也是 DispatchAction 类的子类,他所实现的功能是解决一个表单多种提交问题的,他是通过使用资源文件,用submit 按钮的 value 来作为资源文件中的 key 所对应的值,通过这个值来找到对用的 key,在使用这个 key 来获得指定 Map 中所对应的值,这个值就是要调用的方法名。submit的value-MessageResource.properties中的key-Map中key 对相应的值-action例:input type=submit value=name=methodNameinputtype=submitvalue=name=methodNameMessageResource.propertiesbutton.add=add new userbutton.delete=delete user注意:在继承 LookupDispatchAction 时,要覆盖 getKeyMethodMap()方法,并定义 Map,向Map 中放入指定的键值对。public classAddDelLookupDispatchAction extends LookupDispatchActionpublic Map getKeyMethodMap()Map keyMethodMap=new HashMap();keyMethodMap.put(button.add,add);keyMethodMap.put(button.delete,delete);returnkeyMethodMap;public ActionForwardadd(ActionMapping mapping,ActionForm form,HttpServletRequestrequest,HttpServletResponseresponse)throwsExceptionreturnmapping.findForward(add);public ActionForwarddelete(ActionMapping mapping,ActionForm form,HttpServletRequestrequest,HttpServletResponseresponse)throwsExceptionreturnmapping.findForward(delete);自定义的 Action 类的一些规则1,尽量不要在 Action 类中使用(静态)成员变量,如果使用要加上同步。2,尽量使各模块间的耦合性降低,最大限度的针对接口编程。3,可以将共代码方在覆盖父类的方法中,最后可以用 super.xxx(xxx)来调用父类的方法,使用父类的实现,并加上了自定义的功能。StrutsStrutsStrutsStruts的的TokenTokenTokenToken(令牌)机制(令牌)机制Struts使用 Token 机制,来防止恶意的破坏和重复提交问题,也就是点击后退后在再提交,这是 Struts无法发现的,在form中生成一个 token码,在session 中也报村有一个同样的 token码,当表单提交后,判断两个 token 码向等后,就会改变 session 中的这个 token 码,当然在用回退后,form的 token 码是不会变的,在提交,还会判断两个 token 码是否相等,如果不等就会抛出异常,证明这是过时的垃圾数据。void saveToken(HttpServletRequest request)方法用于将在客户端生成的 token 码,保存在session 中。void resetToken(HttpServletRequest request)方法用于重置 token 码,生成新的 token 码。boolean isTokenValid(HttpServletRequest request,boolean reset)判断 token 码是否相等,并且是否重置 token 码。reset 是设定是否重置 token 码,一般设为 true。设置 token 码public ActionForwardtoadd(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponseresponse)throws ExceptionsaveToken(request);returnmapping.findForward(next);验证 token 码public ActionForwardadd(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponseresponse)throws Exceptionif(isTokenValid(request,true)request.setAttribute(message,contratulation!);else request.setAttribute(message,sorry);returnmapping.findForward(next);Struts的异常处理Struts只处理 action 的异常,配置 struts的异常处理全局的异常处理.在 exception 标签中的 key,也就是在出现异常时会封装在 ActionErrors 中,也就是可以在页面中使用。ActionError(String key,Object value0),可以通过在构造 ActionError 时,指定不同的 key 值来对异常进行分类,并且在 html:error 标签的自己构造 ActionErrors并使用下面的方法发送void saveErrors(HttpServletRequest request,ActionErrorserrors)这个方法用以把封装了异常的 ActionErrors的 key 存储到 request 中。Struts动态 FormDynaActionForm,动态的 ActionForm,动态的 form 不需要去写特定的 ActionForm 类,只需要在配置文件中配置好form中的属性名和属性类型。以,Struts会自动的封装成动态的 Form。.动态的 ActionForm的使用上和普通的 ActionForm 相同。在 Struts中的 Form 要是粗粒度的,不要写太多的 Form,要根据情况确定 Form 的多少。Struts的动态校验Struts可以通过继承 DynaActionForm,并覆盖 validate()方法来打倒校验的目的。也可以通过配置校验规则来进行动态 Form的校验实质上就是翻译成 javasctipt 代码。使用校验规则来进行动态校验时需要写 validation.xml,validator-rules.xml还需要对 struts-config.xml 进行配置validation.xmlminlength5maxlength8struts-config.xmlStrutsStrutsStrutsStruts的标签的标签bean,html,logic 标签库,在 Struts的标签也支持 JSP2.0 的 EL 表达式。bean 标签库bean 标签库,是用来访为 JavaBean 的属性或者是为 Bean 的属性赋值,创建 JavaBean,类似于 JSP 中的 jsp:useBean 动作的功能。bean 标签库中的标签中大部分都有以下的属性id=xxx 指定 Bean 的名字标识,Bean 在被读出后将引用保存在以这个 id 命名的对象中,也就是在 JSP 中使用的变量的引用。name=xxxx指定要读取 Bean 的名字property=xxxxscope=page|request|session|application资源读取标签读取资源文件使用这个标签可以对 Cookie 进行操作读取 header 信息例:可以将资源写到页面的标签将 Bean 的属性加入到输出流中name 属性是要加入的资源,也就是先前在其他资源标签中的 id 属性定义的名字定义变量例:读取消息,可以根据 key 读取消息。例:html 标签库对应 html 中的,使用会将表单中的属性自动封装成 Form,他的 action属性可以直接写 struts的配置文件中的 path、以上者写标签的使用是和 html 中的 form 相对应的。这个标签用来表示一组选择项Struts的 Tiles 框架Tiles 是一个框架,他实现了页面的复合视图,页面代码中不仅有数据,也有页面的布局格式。要在基于 Struts应用中使用 Tiles 框架,就要在 struts-config.xml 中配置tiles 的布局配置文件 tiles-defs.xml在 struts-config.xml 中要把 forward的配置更改一下这样就会使页面加上 header.jsp和 footer.jsp 显示在配置好的页面中在页 面 中 使 用 tiles 标签 时,要 引 入 标 签 库,在 struts-config.xml 中要把 forward的配置更改一下

    注意事项

    本文(struts(培训笔记).pdf)为本站会员(赵**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开