All Downloads are FREE. Search and download functionalities are using the official Maven repository.

system.web.servlet.LinkServletData Maven / Gradle / Ivy

The newest version!
package system.web.servlet;

import java.util.HashMap;
import java.util.Map;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import system.web.XY_Instruction;
import system.base.annotation.JWFilter;
import system.web.filter.chain.config.LinkFilters;
import system.base.annotation.Validate;
import system.web.validate.model.InitValidateModel;
import system.web.validate.model.ValidateModel;

/**
 *
 * @author wangchunzi
 */
final public class LinkServletData {

    private static final Map requestURLMap = new HashMap();
    private static boolean openServlet = false;

    private final system.web.hm.model.LinkHMData hp = new system.web.hm.model.LinkHMData();
    private final InitValidateModel validate = new InitValidateModel();
    system.base.log.SysLog log = new system.base.log.SysLog();
    private final system.web.filter.chain.InitJWFilterModel filterObject = new system.web.filter.chain.InitJWFilterModel();

    public static boolean isOpenServlet() {
        return openServlet;
    }

    //-------------------初始化数据---------------------------------
    public static ServletModel getLinkModel(final String servletURL) {
        return requestURLMap.get(servletURL);
    }

    ValidateModel vm = null; //校验对象的数据中心
    int validate_instruction = 0;//校验指令
//    int method_instruction = 0;//方法指令(静态方法=16,对象方法=0)

    public void DoH(Class c, LinkFilters lf, String servletMapPath) throws InstantiationException, IllegalAccessException {
        String[] urlPatterns = null;
        if ((HttpServlet.class.isAssignableFrom(c) && HttpServlet.class != c)
                || (Servlet.class.isAssignableFrom(c) && Servlet.class != c)) {
            filterObject.clear();
            vm = null; //校验对象的数据中心 校验对象初始化
            validate_instruction = 0;//校验指令 

            //执行过滤器判断
            if (null != c.getAnnotation(JWFilter.class)) {
                //执行标注在类的过滤器处理
                filterObject.iniFilterModel_H(((JWFilter) c.getAnnotation(JWFilter.class)).value());
            }
            //执行过滤器判断
            if (null != c.getAnnotation(Validate.class)) {
                Validate at_Validate = (Validate) c.getAnnotation(Validate.class);
                if (null != at_Validate && ValidateModel.class.isAssignableFrom(at_Validate.value())) {
                    validate.doinitData(at_Validate.value());
                    vm = validate.get(at_Validate.value());
                    validate_instruction = XY_Instruction.VALIDATE;
                }
            }

            if (null != c.getAnnotation(WebServlet.class)) {
                WebServlet web = (WebServlet) c.getAnnotation(WebServlet.class);
                urlPatterns = web.urlPatterns();
            }
            //对原生的servlet执行行全局检查
            filterObject.iniGrobalConfiguration(lf.getResource(servletMapPath, c.getName()));
            //执行方法过滤器(全局集合+@H集合=方法集合。)
            filterObject.iniFilterModel_M(null);

            if (null != urlPatterns) {
                for (String url : urlPatterns) {
                    /**
                     *
                     * @param fmTop 执行顶部过滤链
                     * @param vm 执行校验
                     * @param fmCenter 执行中部过滤链
                     * @param fmButtom 执行底部过滤链
                     * @param instruction 指令1-15.
                     */
                    requestURLMap.put(url, new ServletModel(
                            filterObject.getHMFilterModel_TOP()//顶部过滤链
                            , vm //执行校验
                            , filterObject.getHMFilterModel_CENTER()//中部过滤链
                            , filterObject.getHMFilterModel_BUTTOM() //底部过滤链
                            , filterObject.getFilterInstruction() + validate_instruction//KEY
                    ));
                    openServlet = true;
                    log.putLog(1, c.getName() + "映射URL : " + url + "//指令:" + (filterObject.getFilterInstruction() + validate_instruction));
                }
            }
            log.println();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy