首页 > 其他分享 >structs里Dispatchaction VS LookupDispathAction

structs里Dispatchaction VS LookupDispathAction

时间:2022-12-05 10:05:02浏览次数:38  
标签:LookupDispathAction request mapping DispatchAction public add VS action structs


Struts里这两个玩意还是十分有用的,近来学习到,故总结之

首先, DispatchAction 的作用简单地说就是把原来我们写在多个 acton 里的操作放在同一个

action里处理,比如在商品购物系统中,有增加商品,删除商品,修改商品和查看商品,以前的话,要写三个action来操作之,现在可以合在一个action里进行操作了,可以创建一个类,继承自dispatchaction类的子类,不需要覆盖execute()方法。比如

import org.apache.struts.actions.DispatchAction;
public class ItemeAction extends DispatchAction{
//增加商品
public ActionForward add(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
...
...
}
/**编辑商品**/
public ActionForward edit(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
...
...
}
}


 

接着,我们配置

<action path="/item"
input="inputitem.jsp"
parameter="method" scope="request"
type="ItemeAction"
validate="false">
</action>



上面的配置,要注意的是,要加上parameter="method".当itemaction这个类执行时,它实际上执行的是基类的dispatchaction的execute方法。DispatchAction根据参数method的值来确定具体调用的是其中的哪一个方法,比如一个用户的调用是
​​http://localhost/xxx/item?method=add​​,则调用itemaction类add的方法


再来看下lookupdispatchaction.该类是DispatchAction类的一个子类,它的应用场合在于多个同名提交按钮的表单场合。比如在一个购物的应用中,一个按钮用来“更新”购物车,一个用来移除购物车里的商品,一个用来做“提交结帐”的功能,假如他们的名字都叫action的按钮,则代码为

<html:form action="/cart"> 

<html:submit property="action">
<bean:message key="cart.update"/> </html:submit>
<html:submit property="action">
<bean:message key="cart.check"/>
</html:submit>
.............. </html:form>

然后配置其action,

<action path="/carts"
type="cartaction"
name="cartForm"
scope="request"
parameter="action">
//注意这里parameter名要为action

</action>,


接下来是创建lookupdispatchaction类的子类,扩展LookupDispatchAction类,需要实现getKeyMethodMap()方法,该方法返回java.util.Map类的对象,如

protected Map getKeyMethodMap() { 

Map map = new HashMap();
map.put("cart.update", "update");
map.put("cart.check", "checkcart");
return map;
}
public ActionForward update(ActionMapping mapping,

ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
// do add
return mapping.findForward("success");
}



public ActionForward checkcart(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
// do delete
return mapping.findForward("success");
}

标签:LookupDispathAction,request,mapping,DispatchAction,public,add,VS,action,structs
From: https://blog.51cto.com/u_14230175/5911331

相关文章

  • opencv460在win10+vs2017上的编译
    近期有网友提问,正好把最新的460编译情况简单整理一下。1、下载并解压2、cmake打开,一般选择最新版本cmake3、如果需要编译64位的,这里一定要选64.默认是32位。此外,openc......
  • vs code markdown转html
    1.安装扩展插件"CopyMarkdownasHTML"2.打开.md文件3.用Ctrl+Shift+P打开命令面板,输入"markdown",在下拉选项中选择"Markdown:CopyasHTML",则转换后的.html文本已经存于......
  • VSCode配置C-C++环境
    转载自:【教程】VScode中配置C语言/C++运行环境_哔哩哔哩_bilibili下载编辑器VScode官网:https://code.visualstudio.com/安装VScode(建议附加任务全部勾选)下载......
  • VSCode外部终端中文乱码问题
    转载自:https://www.cnblogs.com/stu-jyj3621在处理这个问题之前,你首先得知道为什么会出现这个这个问题。你在使用VScode编辑代码时,代码页面中文正常,而终端输出那里中文......
  • VS2022之DebuggerVisualizer
    在Debug程序时,面对一些大集合,之前是这样查看的,如下图,这样看起来不直观,集合中的数据只能一个一个实体查看: VS2022预览版带来一个新功能,集合表格可视化,比如下面这样......
  • VS2022之DebuggerVisualizer
    在Debug程序时,面对一些大集合,之前是这样查看的,如下图,这样看起来不直观,集合中的数据只能一个一个实体查看:  VS2022预览版带来一个新功能,集合表格可视化,比如下......
  • DevSecOps之组件卡点(初级)
    目录为什么需要组件卡点解决方案为什么需要组件卡点现代的软件开发或多或少的都会引入第三方的开源组件,如何保证这些开源组件是安全性的?解决方案大致步骤根据企业的......
  • Winform程序在VS中打包成安装程序(带卸载)
    场景在VS中进行Winform开发时,可以直接在项目上右击选择生成  则会在项目的bin目录下直接生成exe等文件,此时将这个文件夹直接整个复制到别的地方就可以运行。 ......
  • vscode免密连接远程服务器
    下载两个扩展  出现“远程资源管理器”选项:点击上图+号,输入ssh地址[ssh用户名@服务器地址]  点击上图设置(+号右边)  选择第一个选项,输入服务器信息,如下:......
  • vsCode的css代码提示reference,怎么关闭?
      设置中,去掉Editor:CodeLens对勾 ......