引荐课程:Java教程。
下面引见jsp中action的功用:
完全的action
<action path="/aFullAction" type="somePackage.someActionClass"> name="someForm" input="someJSP.jsp" <forward name="successful" path="someJSP.jsp"/> <forward name="failed" 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。
唯一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被用作在应用程式编译好后充任体系参数,只须要变动这个设置文档而无需从新编译体系。
两个action对应一个form
<action path="/anAction" type="somePackage.someActionClass"> name="someForm" input="someJSP.jsp" <forward name="successful" path="/anotherAction.do"/> </action> <action path="/anotherAction" type="somePackage.someOtherActionClass"> name="someForm" input="someOtherJSP.jsp" <forward name="successful" 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"> name="someForm" input="someJSP.jsp" <forward name="successful" path="/anotherAction.do" redirect="true"/> </action> <action path="/anotherAction" type="somePackage.someOtherActionClass">" name="someOtherForm" input="someOtherJSP.jsp" <forward name="successful" 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是什么的细致内容,更多请关注ki4网别的相干文章!