Struts2之动态方法调用改变表单action属性
一、动态方法调用(DMI:Dynamic Method Invocation)
⒈struts2中同样提供了这个包含多个逻辑业处理的Action,这样就可以在一个Action中进行多个业务逻辑处理。例如:当用户通过不同的提交按钮来提交同一个表单的时候,系统通过不同的方法来处理用户不同的请求,这时候就需要让同一个Action中包含有多个控制处理的逻辑。
⒉动态方法调用有:
①、改变struts.xml中的action中的method属性。
②、改变form表单中的action属性来改变不同提交的请求逻辑。
③、使用通配符。
二、简单示例(改变form表单中的action属性):
①、首先显示一个表单,表单中有两个提交按钮,但分别代表不同的业务。当点击登录时用户登录;当点击注册时用户注册。
②、用户登录:
③、用户注册:
①、登录注册的页面(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="登录">
<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中的一种方式,没有加入过多的业务逻辑处理如:用户登录是否正确并且符合条件。只是一个简单示例,具体实战中需要使用到的业务需要进一步修改分析和完善,谢谢浏览。