一、动态方法调用(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. yeoman(转)

    前言有一种技术可以提高我们的工作效率,可以让我们专心做我们擅长的事,可以屏蔽复杂性,可以规范我们的架构和我们的代码,可以让我们的享受编程的乐趣.Yeoman可以做到. 很多年以前,rails刚刚出世, ...

  2. java7笔记

    1 switch case 增加字符串类型,原理根据字符串hashcode以及string.equal比较2 数值字面量改进 新增二进制数值字面量 0b000004,在数值中间新增下划线方便阅读200 ...

  3. VIM使用(二) 浏览内核源代码

    为了实现类似SourceInsight功能,通过VIM+Ctags+Cscope+Taglist+Source Explore +NERD Tree实现. 一, 安装插件 1)安装Ctags 和Csc ...

  4. HttpURLConnection使用getInputStream无法执行

    url = new URL(urlStr); urlConn = (HttpURLConnection) url.openConnection(); // 设置请求方式为"GET" ...

  5. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

  6. WIN8 隐私声明

    隐私权声明 本应用连接网络仅为控制硬件设备,不会收集你的个人信息,也不共享你个个人信息. 应用名称 CrossMedia可视化控制系统(服务器版) 关于本应用 本应仅为控制设备应用,不关注任何配置相关 ...

  7. 《利用Python进行数据分析》第5章学习笔记

    pandas入门 数据结构 Series Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成.仅由一组数据即可产生最简单的Serie ...

  8. oracle ORA-12514: TNS: no listener 解决方案

    服务端:oracle 11g 客户端: pl/sql 问题描述: 用客户端 pl/sql 连接登录的时候,提示 "ORA-12514: TNS: no listener". 在服务 ...

  9. css使一行文字竖向排列

    .tnt { margin:0 auto;width:20px;line-height:24px;} <div class="tnt" > <asp:Label ...

  10. 苹果全新 Mac OS X 系统开放下载

    在今天的发布会上,苹果除了发布多款硬件产品之外,还更新了Mac OS X Mavericks(小牛)系统,作为重大改变,这一Mac系统将从今天起开始免费升级. 升级后的Mavericks系统将进一步与 ...