专栏首页Python程序员杂谈Struts2 Wildcard 和DMI

Struts2 Wildcard 和DMI

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

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

这里一个添加用户为例:

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

<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>

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

<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配置文件:

<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>

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

<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 条评论
登录 后参与评论

相关文章

  • Struts2之Validation的简单使用实例

    本来不打算写这些细枝末节的东西了,因为在文档中都有现成的实例,写了也只能自己用来参考,不过这个Validation文档中给的不全,从网上查之后才知道用法。 首先...

    the5fire
  • 3、backbone中的model实例[验证部分更新1.0.0]

    关于backbone,最基础的一个东西就是model,这个东西就像是后端开发中的数据库映射那个model一样,也是数据对象的模型,并且应该是和后端的model有...

    the5fire
  • django 自定义后台图片上传

    今天终于是抽时间完成了后台上传图片的功能,确切的说是上传文件的功能。终于可以在blog方便的插入自己的图片了,之前不做这个功能是觉得服务器在国外,弄个图片上去图...

    the5fire
  • python学习之旅(十六)

    在“主程序”中,变量'_name_'的值是'_main_',而在导入的模块中,这个值就被设定为模块的名字

    py3study
  • JS 完美的 AOP 编程

    villainhr
  • javaScript 的面向对象程序

    数据属性(数据属性包含一个数据值的位置,这个位置可以读取和写入值,数据属性有4描述)

    用户1197315
  • Hibernate EntityManager

    Java Persistence API(JPA)是EJB3.0规范之一,定义了对数据库数据进行持久化操作的接口。HIbernate

    Hongten
  • JS 原生面经从初级到高级【近1.5W字】

    1.函数声明有预解析,而且函数声明的优先级高于变量; 2.使用Function构造函数定义函数的方式是一个函数表达式,这种方式会导致解析两次代码,影响性能。第一...

    火狼1
  • 热门数据分析面试题。

    Sql中有一类函数叫聚合函数,比如count、sum、avg、min、max等,这些函数的可以将多行数据按照规整聚集为一行,一般聚集前的数据行要大于聚集后的数据...

    张俊红
  • 面向对象的程序设计

    ECMA-262把对象定义为:”无序属性的集合,其属性可以包含基本值、对象或者函数。”

    奋飛

扫码关注云+社区

领取腾讯云代金券