当前位置:七道奇文章资讯编程技术Java编程
日期:2011-01-26 02:54:00  来源:本站整理

JSP中Action属性的功效浅析[Java编程]

赞助商链接



  本文“JSP中Action属性的功效浅析[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

    1. 完好的action

﹤action path="/aFullAction"
type="somePackage.someActionClass"﹥

input="someJSP.jsp"
﹤forward path="someJSP.jsp"/﹥
﹤forward path="someOtherJSP.jsp"/﹥
﹤/action﹥

    首先,Struts的ActionServlet接纳到一个恳求,然后按照struts-config.XML的配置定位到呼应的mapping(映射);接下来假定form的范围是request或在定义的范围中很难找到这个form,成立一个新的form实例;获得form实例今后,调用其reset ()办法,然后将表单中的参数放入form,假定validate属性不为false,调用validate()办法;假定validate()返回非空的ActionErrors,将会被转到input属性指定的URI,假定返回空的ActionErrors,那么履行Action的execute() 办法,按照返回的ActionForward肯定目标URI.

    这样做的效果是:execute()仅当validate()成功今后才履行;input属性指定的是个URI.

    2. 唯一Form的action

﹤action path="/aFormOnlyAction"
type="org.apache.struts.actions.ForwardAction"

input="someJSP.jsp"
parameter="someOtherJSP.jsp"
/>

    首先,Struts会在定义的scope搜索someForm,假定找到则重用,假定很难找到则新建一个实例;获得form实例今后,调用其reset()办法,然后将表单中的参数放入form,假定validate属性不为false,调用validate()办法;假定validate()返回非空的 ActionErrors,将会被转到input属性指定的URI,假定返回空的ActionErrors,那么转到parameter属性指定的目标 URI.

    这样做的效果是:没有action类可以存放我们的业务逻辑,所以任何需求写入的逻辑都只能写到form的reset()或 validate()办法中.validate()的作用是考证和拜候业务层.因为这里的action映射不包含forward(也没有意义),所以不能重定向,只能用默许的那个forward.这种唯一form的action可以用来处理数据获得并forward到另一个JSP来显示.

    3. 唯一Action的action

﹤action path="/anActionOnlyAction"
type="somePackage.someActionClass"﹥
input="someJSP.jsp"
﹤forward path="someJSP.jsp"/﹥
﹤forward path="someOtherJSP.jsp"/﹥
﹤/action﹥

    首先,ActionServlet接纳到恳求后,获得action类实例,调用execute()办法;然后按照返回的ActionForward在配置中找forward,forward到指定的URI或action.

    这样做的效果是:没有form实例被传入execute()办法,于是execute()必须自己从恳求中获得参数.Action可以被forward或重定向.这种action不能处理通过HTML FORM提交的恳求,只能处理链接式的恳求.

    4. 唯一JSP的action

﹤action path="/aJSPOnlyAction"
type="org.apache.struts.actions.ForwardAction"
parameter="someOtherJSP.jsp"
/﹥

    首先,ActionServlet接到恳求后调用ForwardAction的execute()办法,execute()按照配置的parameter属性值来forward到那个URI.

    这样做的效果是:没有任何form被实例化,对比实际的情形大概是form在request更高级别的范围中定义;或这个action被用作在利用程式编译好后充当系统参数,只需求更改这个配置文档而无需重新编译系统.

    5. 两个action对应一个form

﹤action path="/anAction"
type="somePackage.someActionClass"﹥

input="someJSP.jsp"
﹤forward path="/anotherAction.do"/﹥
﹤/action﹥
﹤action path="/anotherAction"
type="somePackage.someOtherActionClass"﹥

input="someOtherJSP.jsp"
﹤forward path="someResultJSP.jsp"/﹥
﹤/action﹥

    就每个单独的action来说,处理上并没有和完好的action有什么实质的辨别.这个组合情势可以被用来传送号令对象(form).需求注意的是在后一个action中一样会调用form的reset()和validate()办法,因此我们必须确保form中的信息不被重写.

    处理的方法大致分为两种:

    a) 在request中放入一个指导器表明前一个action有意向后一个action传送form,从而在后一个action可以保存那个form中的值,这一方法只能在利用forward时利用.b) 当利用redirect而不是forward时,可以把指导器放在session或更高的级别,在号令链的最后一环将这个指导器排除.

﹤action path="/anAction"
type="somePackage.someActionClass"﹥

input="someJSP.jsp"
﹤forward path="/anotherAction.do" redirect="true"/﹥
﹤/action﹥
﹤action path="/anotherAction"
type="somePackage.someOtherActionClass"﹥"

input="someOtherJSP.jsp"
﹤forward path="someResultJSP.jsp"/﹥
﹤/action﹥

    这个组合方法跟前一种在流程上没有太大辨别,只是我们目前关于两个action辨别供应了form,于是代码看上去越发清楚.于是我们可以辨别处理Web利用程式的输入和输出.值得注意的是,后一个action一样会尝试往form中写入那些参数,但是我们可以这样处理:

    a) 在后一个form中利用另一套属性名;

    b) 只供应getter而不供应setter.

    大致的处理是这样:

    前一个action接纳输入、考证、然后将数据写入业务层或长期层,重定向到后一个action,后一个action手动的从业务层/长期层取出数据,写入form(通过其他方法),交给前台JSP显示.

    这样做的好处是没必要保存输入form中的值,因此可以利用redirect而不是forward.这样就降低了两个action之间的耦合度,同时也避免了不必要的反复提交.


  以上是“JSP中Action属性的功效浅析[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • JSP中衔接SQL 2000数据库的问题总结
  • JSP中Action属性的功效浅析
  • MYSQL,Oracle,SQL数据库在JSP中的驱动
  • <b>在JSP中拜候数据库大全</b>
  • jsp中的时间挑选器的代码
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .