Struts框架(二)——对象

来源:互联网 发布:dnf 登陆器源码 编辑:程序博客网 时间:2024/05/21 14:45

引言:

               知识在于总结,生命在于运动。

概述:

              本篇博客,小编为大家带来自己学习Struts过程中了解到几个有用的对象,分别是ActionForm、ActionForward、ActionMapping、Action、ActionMessage。

内容:

               一 ActionForm:主要说明ActionForm在Struts中的作用。

              (1)表单数据收集:

                       1)通过http提交表单数据:核心就是将ActionForm对象中的属性与页面的值匹配起来,在该对象java类中编写属性,并得到其get、set方法,然后在action中调用ActionForm得到页面的值。

                       2)通过http上传文件:在ActionForm中使用FormFile来接收上传的文件,然后Action中调用FormFile取得数据,采用流输出,即完成上传。

              (2)类型转换:所有从表单提交到后台的数据均为字符串类型,通过ActionForm自动转换为int、boolean、Date、Double类型。

                       1)boolean:yes、1、no、true都会转换成true类型,而且忽略大小写其他情况都转换成false

                       2)Date类型转换:如果是java.sql.Date,页面日期的格式必须为yyyy-mm-dd,才可以转换;如果是java.util.Date,默认情况下struts无法转换。

                       3) 自定义转换器:第一步,实现converter接口,实现convert方法;第二步,将实现的converter注册,通常情况采用servlet注册;第三步,采用servlet注册需要配置的标签 <load-on-startup>10</load-on-startup>(也可以采用struts plugin注册)

              (3)作为传输对象:实体对象赋值为值对象或数据传输对象,实体对象改变不会影响前台显示。

              (4)动态ActionForm:把页面中的Html元素的名字和值放入map中,通过get方法取出相应的值,并采用EL表达式的输入方式${dynabean.map.prop};好处是可以减少静态ActionForm的数量,若进行动态ActionForm的验证,通过使用动态验证框架validator。

          二 ActionForward:Action操作成功后,会回传给ActionServlet,个人感觉与Action中的forward的属性差不多。

              (1)转发(froward)与重定向(redirect):redirect=true为重定向,反之为转发

                 (2)全局与局部ActionForward:全局forward,所有action都可以使用;局部forward只能被包含它的action使用。使用原则:就近原则,一般都是以局部优先,然后再解析全局的forward。

              (3)受保护的页面可以放到WEB-INF文件夹下,避免通过URL直接进入页面的情况,不过要注意的是Action中的路径也要做相应的改变。

              (4)struts-config.xml不能在运行时修改,动态ActionForward,可以运行期修改。

              (5)我们可以采用手动转向: response.sendRedirect(request.getContextPath()+ "/login.jsp");

           三 ActionMapping:web应用中,每个资源都必须通过url来进行引用,为了给动作定制一个url或者说路径,Struts提供了ActionMapping 对象。

              (1)主要功能:管理Action的信息和管理Action执行完成以后的转向信息。接收特定http请求,映射到Action,并将相关信息存储在ActionMapping中,ActionServlet将ActionMapping的信息传送到Action类的execute()方法,Action将使用ActionMapping的findForward()方法,此方法返回一个指定名称的ActionForward,这样就实现了转发;若没有找到具体的ActionForward,返回值为null。

              (2)主要属性:path、forward、type、name、scope(取值包括session和request,默认为session)、validate、input、parameter、unknown(注意只能有一个action包含该属性,相当于forward跳转到error页面)。

                 (3)主要方法:public ExceptionConfig findException(Class type) ,查找异常对象;

                                         public ActionForward    findForward(String name) 可在映射中动态添加ActionForward

                                         public String[]         findForwards()找到一个Action可以使用的actionForward列表

                                         public ActionForward    getInputForward() 得到本action的输入ActionForard.


            (4)如何配置:             
    <struts-config>      <action-mappings>      <actionpathactionpath="/login"      type="com.bjpowernode.struts.LoginAction"      name="loginForm"                      scope="request"                      >      <forwardnameforwardname="success" path="/login_success.jsp" />      <forwardnameforwardname="error"path="/login_error.jsp"/>                      </action>      </action-mappings>      </struts-config>  
                 四 Action对象:http://blog.csdn.net/lsh6688/article/details/7525963
                  五 ActionMessage对象:存储提示消息的对象,例如错误消息提示等。

              (1)如何创建消息对象:ActionMessage msg = new ActionMessage("key")。

              (2)如何将消息从Action传递给JSP:传递的消息分为普通的消息和错误消息,通过调用父类(Action)所提供的方法saveMessage()/saveErrors()来保存消息对象。

              (3)如何在JSP中使用消息对象:使用<html:messages/>标签来显示消息,该标签包含四大属性:name-消息对象的名称;id-消息对象的标识;property-指定显示哪条消息;message-取值为true,显示普通消息,取值为false,将显示错误消息。还有一个标签<html:errors/>只显示错误消息。

总结:

             这么多核新对象,最重要的其实是Action对象,可以说Action是Struts的灵魂,相信了解过的都知道。这里小编为大家展示了Struts的核心对象,希望大家阅读的过程中,多提问题和建议,在交流中共同进步。

0 0
原创粉丝点击