Struts2 Wildcard 和DMI

2019-02-28 10:39:50 浏览数 (1)

关于Struts2 Action中的最基本method配置我就不说,那个比较死板。关于这个method有两个动态调用Action方法的方法:WildCard(通配符)和DMI(动态方法调用)。

后台的Action代码就不写了,和其他的一样,不一样的地方在于struts文件的配置。

这里一个添加用户为例:

(一) WildCard配置方式:(局部代码)

代码语言:javascript复制
<package name="actions" extends="user" namespace="/user">
    <action name="User_*" class="com.struts2.action.UserAction" method="{1}">
    <result>/User{1}_success.jsp</result>
    </action>
</package>

在添加用户页面代码如下:

代码语言:javascript复制
<form action="user/user_add" method="get"> 输入用户名:
<input name="name" type="text" />
<input name="submit" type="submit" value="添加" />
</form>

这样通过Struts配置文件中的通配符就可以调用UserAction类中的add方法。操作完成之后转发到Useradd_success.jsp页面。

(二) DMI配置方法和平常一样。不需要配置Action中的method方法。在调用的时候指定即可。 Struts配置文件:

代码语言:javascript复制
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="actions" extends="user" namespace="/user">
        <action name="User" class="com.struts2.action.UserAction">
            <result>/User_success.jsp</result>
        </action>
</package>

在添加用户页面代码如下:

代码语言:javascript复制
<form action="user/user!add" method="get"> 输入用户名:

<input name="name" type="text" />
<input name="submit" type="submit" value="添加" />
</form>

这样也可以完成UserAction中的add方法调用,不过在完成调用之后转到的页面比较固定了。

这个两种方法哪个更好用呢?我没有用过sturts做东西,目前还不清楚,不过根据试验效果第一种方法可能用的要多一些,因为很多页面的命名直接就是根据他的功能来完成的。 比如说添加用户页面(user_add.jsp),删除用户页面(user_delete.jsp),这样的话用通配符来完成个人感觉还是很方便的。 不过要想高效的使用通配符,那么就应该在项目开发之前就做好约定。页面该怎么命名,通配符怎么写。都要明确定义。

0 人点赞