DMI动态调用Action处理类中的方法

LoginAction.java

package org.sadhu.app.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/* */
public class LoginAction extends ActionSupport {
	private String userName;//账号
	private String password;//密码
	private String tip;//封装处理结果的tip属性,方便另外一个页面取。
	
	public String getUserName()
	{
		return this.userName;
	}
	public void setUserName(String userName)
	{
		this.userName = userName;
	}
	
	public String getPassword()
	{
		return this.password;
	}
	public void setPassword(String password)
	{
		this.password = password;
	}
	
	public String getTip()
	{
		return this.tip;
	}
	public void setTip(String tip)
	{
		this.tip = tip;
	}
	public String regist()throws Exception
	{
		ActionContext.getContext().getSession().put("user",getUserName());
		setTip("恭喜您,"+getUserName()+",您已经注册成功!");
		return SUCCESS;
	}
	//Action默认包含的控制逻辑
	public String execute()throws Exception
	{
		if(getUserName().equals("sadhu")&&getPassword().equals("sadhu"))
		{
			ActionContext.getContext().getSession().put("user",getUserName());
			setTip("欢迎,"+getUserName()+",您已经登陆成功!");
			return SUCCESS;
		}
		else
		{
			return ERROR;
		}
	}
}

login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!-- 引用struts2的标签库 -->
<%@taglib prefix="s" uri="/struts-tags" %>
<!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">
<title>
	<s:text name="loginPage" />
</title>
<script language="javascript" type="text/javascript">
	function regist()
	{
		var targetForm = document.forms[0];
		targetForm.action = "login!regist";
	}
</script>
</head>
<body>
	DMI,动态方法调用 actionName!methodName
	<form action="" method="post">
	<input type="text" name="userName" /><br/>
	<input type="password" name="password" /><br/>
	<input type="submit" value="注册" onclick="regist();" />
	</form>
</body>
</html>

需要设置Struts常量开启允许动态调用方法功能。

<!-- 设置常量开启动态调用方法 -->

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>


你可能感兴趣的:(DMI动态调用Action处理类中的方法)