博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts.xml中Action的method与路径的三种匹配方法
阅读量:6909 次
发布时间:2019-06-27

本文共 1642 字,大约阅读时间需要 5 分钟。

首先我们有一个Action——UserAction

public class UserAction extends ActionSupport 

    public String add() 
    { 
        return "add"; 
    }

    public String modify() 

    { 
        return "modify"; 
    } 
}

1 指定method

<package name="user" namespace="/userPath" extends="struts-default"> 

   <action name=" userAdd " class="com.xy.UserAction" method="add"> 
    <result name="add">add.jsp</result> 
   </action> 
   <action name=" userModify " class="com.xy.UserAction" method="modify"> 
    <result name="modify">modify.jsp</result> 
   </action> 
</package>

路径: 

userPath/userAdd 
userPath/userModify

特点: 

不灵活,CRUD四个操作就要配4个action。

 

 

2 动态方法调用DMI(Dynamic Method Invocation)

<package name="user" namespace="/userPath" extends="struts-default"> 

   <action name="user" class="com.xy.UserAction"> 
    <result name="add">add.jsp</result> 
 <result name="modify">modify.jsp</result> 
   </action> 
</package>

路径: 

userPath/user!add 
userPath/user!modify

特点: 

灵活。只要指定不同的方法就可以做不同的操作。

 

 

3 通配符

<package name="all" namespace="/" extends="struts-default"> 

   <action name="*_*" class="com.xy.{1}Action" method="{2}"> 
 <result name="add">{1}_add.jsp</result> 
 <result name="modify">{1}_modify.jsp</result> 
   </action> 
</package>

路径: 

User_add 
User_modify

特点: 

更加灵活。整个项目甚至只要配一个总的action。是指定方法的一个特殊的用法。不过我觉得用DMI可以将每个模块分的清楚。

推荐的方法是动态调用,也就是DMI.

 注意的问题:

1.比如在地址栏中输入

但是:如果这样输入的话,会报错(There is no Action mapped for namespace [/front] and action name [helloword!add()] associated with context path [/Struts2_10003].)

因为:struts2中默认不允许使用DMI

所以:需要在配置文件中打开: <constant name="struts.enable.DynamicMethodInvocation" value="true"/>这样大家在地址栏动态输入就可以得到预期的页面

2.如果想要利用DMI的方式传递参数的话:userPath/user!add?flag=true

本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/4603207.html,如需转载请自行联系原作者
你可能感兴趣的文章
异步提交form表单
查看>>
A Newbie’s Install of Keras & Tensorflow on Windows 10 with R
查看>>
关于使用input type=file 标签上传文件的注意细节(上传文件 无法获取文件 问题)...
查看>>
<if test="outState!=null">OUT_STATE=#{outState},</if>空格问题
查看>>
.Net内存回收
查看>>
js 获取/设置文本输入域内光标的位置的方法
查看>>
oracle sql developer 出现 : 适配器无法建立连接问题解决方案 The Network Adapter could not establish the connection...
查看>>
Linux下connect超时处理【总结】
查看>>
高性能数据库集群:读写分离
查看>>
Laravel 5.5 Blade::if 简介
查看>>
centos7搭建ELK Cluster集群日志分析平台(三):Kibana
查看>>
UITextField 监听内容变更解决方案
查看>>
详解jar命令打包生成双击即可运行的Java程序
查看>>
SAMBA 与ISCSI区别
查看>>
zabbix 历史数据清理及libdata1文件过大处理
查看>>
HTML5 学习手笔二:canvas API 绘制树形图案A
查看>>
socket通信中select函数的使用和解释
查看>>
MySQL order by后对其他索引的干扰,导致优化器走错索引
查看>>
大学生IT博客大赛技术50强获奖图书
查看>>
学习OpenGL
查看>>