Struts2的简单搭建(三)

来源:互联网 发布:淘宝品牌男装店 编辑:程序博客网 时间:2024/06/09 21:06

Struts2简单搭建学习

本节的目标

1.struts.xml中action的配置2.动态方法调用3.为action指定method来实现调用

struts.xml中action的配置

1.action是package下的一个子节点,我们通过配置action来让struts2知道,用户的请求是哪个action,struts2应该用那个action来应对。2.action节点下面还有一个子节点是resultresult的定义是让逻辑视图与物理视图做对应,不同的逻辑视图都会在result中做映射,然后做不同的页面跳转。3.action的name也是访问时用到的name,这时候用户可以随意定义,但是,不建议使用“-”,“.”作为连接使用过,如“pkk.user”,"pkk-user",这样有可能会引发一些未知异常信息。我们可以使用“/”来定义,但是使用之前需要启用struts.enable.SlashesInActionNames为true,这时候方可使用。4.action节点有参数name还有class,但是我们如果不指定action的话,可以走默认的action类ActionSupport来进行处理,当然我们可以通过指定默认的action处理类。因为在平常,我们配置的package,不是直接的继承struts-default,就是间接的继承,都是走ActionSupport处理类。例子如下:
<!--允许action使用“/”作为名称--><constant name="struts.enable.SlashesInActionNames" value="true"/><!--访问地址:http://localhost:8081/namespace/testAction!testSuccess.action-->    <package name="backTest" namespace="/namespace" extends="web-default">        <action name="testAction" class="com.pkk.action.TestAction">            <result name="success">index.jsp</result>            <result name="input">/pages/sys/SysVerifyError.jsp</result>        </action>        <!--如果 不设置action就会走默认的action类来进行处理-->        <default-class-ref class="com.pkk.action.BaseAction"/>    </package>

动态方法调用

DMI(Dynamic Method Invocation)动态方法调用,就是一个action并不是等同于一个action,简单来说,他是通过actionName+"!"+MethodName(方法名称).action方式调用如:action="http://localhost:8081/namespace/ActionName!MethodName.action"通过这种方式简化了不同的业务处理对应一个action的创建的麻烦,使用动态方法调用,可以做到一个类只配置一个action,或多个类只配置一个action(前提是多类中不包含相同的方法名称),通过actionName+!+MethodName方式调用,启用此方式,需要添加:<!--方法动态调用-->    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

为action指定method来实现调用

配置action时也可以指定一个methodmethod为一个类中的方法,指定后可以进行根据actionname和方法的方法限定一个请求。这时候struts会调用相应的方法,而不是走默认的execute方法来处理请求。
<!--http://localhost:8081/namespace/testAction!testSuccess.action-->    <package name="backTest" namespace="/namespace" extends="web-default">        <action name="testAction" class="com.pkk.action.TestAction" method="userLogin">            <result name="success">index.jsp</result>            <result name="input">/pages/sys/SysVerifyError.jsp</result>        </action>    </package>