servicesupport.java

来自「struts spring hibernate制作的留言本」· Java 代码 · 共 81 行

JAVA
81
字号
package anni.tools;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;


/**
 * 功能跟struts的DispathAction差不多吧?
 * 使用反射自动转发请求
 *
 * @author Lingo
 * @version 1.0
 * @since 2006-01-01 19:41
 */
public class ServiceSupport implements Service {
    /**
     * 类.
     */
    private Class clazz;

    /**
     * 参数类型.
     */
    private Class[] paramTypes;

    /**
     * 参数数组.
     */
    private Object[] params;

    /**
     * 构造方法.
     * 初始化反射需要的参数
     *
     * @author Lingo
     * @since 2006-01-01 19:41
     */
    public ServiceSupport() {
        clazz = this.getClass();
        paramTypes = new Class[] {HttpServletRequest.class};
    }

    /**
     * 修改了请求转发的主方法.
     * 这里采用了反射,以后就不用再进行手工添加了。
     *
     * @author Lingo
     * @since 2005-12-25 17:07
     * @param request 请求
     * @return String 跳转的URL
     */
    public final String service(final HttpServletRequest request) {
        String action = request.getParameter("action");

        try {
            /*
             * Log.info(clazz);
             * Method[] m=clazz.getDeclaredMethods();
             * Log.info(Arrays.asList(m));
             */
            Method method = clazz.getDeclaredMethod(action, paramTypes);
            /*
             * Log.info(method);
             */
            params = new Object[] {request};

            Object result = method.invoke(this, params);

            return result.toString();
        } catch (Throwable ex) {
            /*
             * Log.info("error : "+ex.getMessage());
             */
            System.out.println("找不到请求的对应方法 : " + action);

            return "/";
        }
    }
}

⌨️ 快捷键说明

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