⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 actionhelper.java

📁 稿件名称:基于JAVA的JNDI技术和反射机制 稿件作者:段谟意 源代码名称:WEB-INF 调试环境:Win XP;Tomcat, JVM:JDK 1.5.2
💻 JAVA
字号:
package ddd.com.action;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.lang.reflect.*;
import ddd.com.parse.ActionParser;
import ddd.com.config.*;
import ddd.com.ConfigConstants;
import ddd.com.form.*;
public class ActionHelper
{
	private HashMap actionMap;
	private HashMap formbeanMap;
	public ActionHelper(ServletContext sct)
	{
		ActionParser actionParser=new ActionParser();
		actionParser.init(sct,ConfigConstants.XMLSOURCE);
		actionMap=actionParser.getActions();
		formbeanMap=actionParser.getFormbeans();
	}
	public ActionConfig getActionConfig(String path)
	{
		return (ActionConfig)actionMap.get(path);
	}
	public Action getAction(ServletContext sct,HttpServletRequest req,String path)
	{
		HashMap actions=(HashMap)sct.getAttribute("actions");
		if(actions==null)
		{
			actions=new HashMap();
			sct.setAttribute("actions",actions);
		}
		Action action=(Action)actions.get(path);
		if(action==null)
		{
			ActionConfig aConfig=(ActionConfig)actionMap.get(path);
			if(aConfig!=null)
			{
				try
				{
					action=(Action)Class.forName(aConfig.getType()).newInstance();
					actions.put(path,action);
				}
				catch(Exception e)
				{
					sct.log("getAction",e);
				}
			}
		}
		return action;
	}
	public ActionForm getActionForm(ActionConfig aConfig,ServletContext sct,
		HttpServletRequest req,String path)
	{
		String name=aConfig.getName();
		if(name!=null)
		{
			HashMap forms=(HashMap)sct.getAttribute("forms");
			if(forms==null)
			{
				forms=new HashMap();
				sct.setAttribute("forms",forms);
			}
			ActionForm form=(ActionForm)forms.get(name);
			FormbeanConfig formbeanConfig=(FormbeanConfig)formbeanMap.get(name);
			if(formbeanConfig!=null)
			{
				try
				{
					Class formClass=Class.forName(formbeanConfig.getType());
					if(form==null)
					{
						try
						{
							form=(ActionForm)formClass.newInstance();
						}
						catch(Exception e)
						{
							sct.log("getActionForm",e);
						}
					}
					else
						form.reset();				
					Field[] fs=formClass.getDeclaredFields();
					for(int i=0;i<fs.length;i++)
					{
						String fieldname=fs[i].getName();
						String methodname="set"+Character.toUpperCase(fieldname.charAt(0))+fieldname.substring(1);
						String value=req.getParameter(fieldname);
						Method m=formClass.getDeclaredMethod(methodname,new Class[]{fs[i].getType()});
						m.invoke(form,new Object[]{value});
					}
					forms.put(name,form);
				}
				catch(Exception e)
				{
					sct.log("getActionForm",e);
				}
				return form;	
			}
			else
			{
				sct.log("getActionForm formbeanConfig==null");
				return null;
			}			
		}
		else
		{
			sct.log("getActionForm name==null");
			return null;
		}		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -