一、动态方法调用(DMI:Dynamic Method Invocation)

   ⒈struts2中同样提供了这个包含多个逻辑业处理的Action,这样就可以在一个Action中进行多个业务逻辑处理。例如:当用户通过不同的提交按钮来提交同一个表单的时候,系统通过不同的方法来处理用户不同的请求,这时候就需要让同一个Action中包含有多个控制处理的逻辑。

   ⒉动态方法调用有:

      ①、改变struts.xml中的action中的method属性。

      ②、改变form表单中的action属性来改变不同提交的请求逻辑。

      ③、使用通配符。

二、简单示例(改变form表单中的action属性):

   ①、首先显示一个表单,表单中有两个提交按钮,但分别代表不同的业务。当点击登录时用户登录;当点击注册时用户注册。

   

   ②、用户登录:

   

   ③、用户注册:  

   

   详细代码(本例子建立在struts2的基础上的简单例子,所以struts2的搭建在这里不详细演示,如果对struts2有疑问请求看:http://www.cnblogs.com/demoMeng/p/5841976.html):

    ①、登录注册的页面(index.jsp):DMI中改变form表单中action属性的方式的就下面的脚本段是关键,其他的struts.xml文件只要进行相关的配置即可。

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="js/jquery-1.7.2.js"></script>
<title>index</title>
<script type="text/javascript">
$(function(){
$("input:eq(3)").click(function(){
  //获取表单并且改变action的属性值
$("#form").attr("action","userCreate"); });
}); </script> </head>
<body>
<form action="userLogin" method="post" id="form">
姓名:<input type="text" name="name" /><br><br>
密码:<input type="password" name="password" /><br><br>
<input type="submit" value="登录">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="注册">
</form>
</body>
</html>

    ②、struts.xml:配置文件

      

<struts>
<package name="myP" extends="struts-default">
<action name="in" class="action.Action" method="go">
<result name="login">WEB-INF/jsp/index.jsp</result>
</action>
<action name="userLogin" class="action.Action" method="test">
<result name="userLogin">WEB-INF/jsp/userLogin.jsp</result>
</action>
<action name="userCreate" class="action.Action" method="create">
<result name="userCreate">WEB-INF/jsp/userCreate.jsp</result>
</action>
</package> </struts>

      

     ③、Action类:

      

package action;

import com.opensymphony.xwork2.ActionSupport;

public class Action extends ActionSupport {

    private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} public String go(){
System.out.println("去登录注册页面!!");
return "login";
} public String test(){ System.out.println("用户登录");
return "userLogin";
} public String create(){ System.out.println("用户注册");
return "userCreate";
} }

    


   本例子只是简单的DMI中的一种方式,没有加入过多的业务逻辑处理如:用户登录是否正确并且符合条件。只是一个简单示例,具体实战中需要使用到的业务需要进一步修改分析和完善,谢谢浏览。

     

struts之动态方法调用改变表单action属性的更多相关文章

  1. struts之动态方法调用使用通配符

    一.DMI动态方法调用的其中一种改变form表单中action属性的方式已经讲过了.还有两种,一种是改变struts.xml配置文件中action标签中的method属性,来指定执行不同的方法处理不同 ...

  2. Struts(八):动态方法调用

    动态方法调用:通过url动态调用action中的方法. 默认情况下,Struts的动态方法调用处于禁用状态. 测试定义一个action类: package com.dx.actions; public ...

  3. Struts2笔记——通配符和动态方法调用

     通配符映射 * 一个 Web应用可能有成百上千个 action 声明. 可以利用 struts提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系 * 通配符映射规则     > 若 ...

  4. Struts2-整理笔记(二)常量配置、动态方法调用、Action类详解

    1.修改struts2常量配置(3种) 第一种 在str/struts.xml中添加constant标签 <struts> <!-- 如果使用使用动态方法调用和include冲突 - ...

  5. Struts2学习第七课 动态方法调用

    动态方法调用:通过url动态调用Action中的方法. action声明: <package name="struts-app2" namespace="/&quo ...

  6. Form表单中的action路径问题,form表单action路径《jsp--->Servlet路劲问题》这个和上一个《jsp--->Servlet》文章有关

    Form表单中的action路径问题,form表单action路径 热度5 评论 50 www.BkJia.Com  网友分享于:  2014-08-14 08:08:01     浏览数44525次 ...

  7. Struts 2之动态方法调用,不会的赶紧来

    学习Struts2框架以来为了减少Action 的数量,我们可以使用动态方法进行处理. 动态方法调用(Dynamic Method Invocation,DMI)是指表单元素的Action并不是直接等 ...

  8. struts.enable.DynamicMethodInvocation = true 动态方法调用

    default.properties 在Struts 2的核心jar包-struts2-core中,有一个default.properties的默认配置文件.里面配置了一些全局的信息,比如: stru ...

  9. struts.enable.DynamicMethodInvocation = true 动态方法调用(转)

    原文地址:http://blog.csdn.net/wfcaven/article/details/5937557 default.properties 在Struts 2的核心jar包-struts ...

随机推荐

  1. Windows server 修改mysql端口

    [此方法对mysql免安装版本适用] (最好先停止mysql服务) 1.解压MySQL后,在MySQL根目录下有一个my-default.ini,将该文件复制粘贴一份,重命名为:my.ini,还是放在 ...

  2. ofbiz 代码日记

    写代码一定要尽善尽美.. //修改方法 //条件查询 用于修改 List<GenericValue> stoList = delegator.findByAnd("YcrossS ...

  3. Android中的IntentService

    首先说下,其他概念:Android中的本地服务与远程服务是什么? 本地服务:LocalService 应用程序内部------startService远程服务:RemoteService androi ...

  4. Java学习笔记(五)

    作业1:将指定目录下的所有文件显示到列表框(JList)组件中. 代码如下: import java.awt.; import java.awt.event.; import javax.swing. ...

  5. Mac OS 中 安装配置软件

    1. (2014.1.22) 配置Apache + PHP + MySQL: http://dancewithnet.com/2010/05/09/run-apache-php-mysql-in-ma ...

  6. HDU4430 Yukari's Birthday(枚举+二分)

    Yukari's Birthday  HDU4430 就是枚举+二分: 注意处理怎样判断溢出...(因为题目只要10^12) 先前还以为要用到快速幂和等比数列的快速求和(但肯定会超__int64) 而 ...

  7. switch...case和if...else if的判断应用

    判断成绩所属等级的 两种方法 1...      switch...case方法: #include<stdio.h> int main(void) { ;i <= ;++i) // ...

  8. 申请Google API Key

    想使用google map api 必须从google网站上获取key之后才有权限使用,但是要想申请key必须要有证明书,也就是所谓的MD5.下面一步一步来说明: 步骤1: 如果你使用的是eclips ...

  9. 中国大学MOOC-陈越、何钦铭-数据结构-2016秋期末考试

    判断题: 1-1 N2logN和NlogN2具有相同的增长速度. (2分) 1-2 对一棵平衡二叉树,所有非叶结点的平衡因子都是0,当且仅当该树是完全二叉树.(2分) 1-3 无向连通图所有顶点的度之 ...

  10. phoenix 开发API系列 目录

    phoenix 开发API系列(一)创建简单的http api phoenix 开发API系列(二)phoenix 各类 api 实现方式 phoenix 开发API系列(三)phoenix api ...