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

📄 jspparseeventlistener.java

📁 低版本的tomcat 对于有些老版本的应用还真的需要老版的中间件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                throw new CompileException(start,
					   Constants.getString("jsp.error.page.multiple.language"));

            listener.languageDir = true;
            if (language != null)
                if (!language.equalsIgnoreCase("java"))
                    throw new CompileException(start,
					       Constants.getString("jsp.error.page.nomapping.language")+language);
        }
    }

    static final class ImportsHandler implements PageDirectiveHandler {
        public void handlePageDirectiveAttribute(JspParseEventListener listener,
                                                 String importPkgs,
                                                 Mark start, Mark stop)
            throws JasperException
        {
            if (importPkgs != null) {
                StringTokenizer tokenizer = new StringTokenizer(importPkgs, ",");
                while (tokenizer.hasMoreTokens())
                    listener.imports.addElement(tokenizer.nextToken());
            }
        }
    }

    static final class ExtendsHandler implements PageDirectiveHandler {
        public void handlePageDirectiveAttribute(JspParseEventListener listener,
                                                 String extendsClzz,
                                                 Mark start, Mark stop)
            throws JasperException
        {
            if (listener.extendsDir == true)
                throw new CompileException(start,
					   Constants.getString("jsp.error.page.multiple.extends"));

            listener.extendsDir = true;
            if (extendsClzz != null)  {
                listener.extendsClass = extendsClzz;

		/*
		 * If page superclass is top level class (i.e. not in a pkg)
		 * explicitly import it. If this is not done, the compiler
		 * will assume the extended class is in the same pkg as
		 * the generated servlet.
		 */
		if (extendsClzz.indexOf(".") == -1)  {
                    listener.imports.addElement(extendsClzz);
		}
            }
        }
    }

    public void handleDirective(String directive, Mark start,
				Mark stop, Hashtable attrs)
	throws JasperException
    {
        Constants.message("jsp.message.handling_directive",
                          new Object[] { directive, attrs },
                          Logger.DEBUG);

	if (directive.equals("page")) {
	    Enumeration e = attrs.keys();
	    String attr;
	    while (e.hasMoreElements()) {
		attr = (String) e.nextElement();
                for(int i = 0; i < pdhis.length; i++) {
                    PageDirectiveHandlerInfo pdhi = pdhis[i];
                    if (attr.equals(pdhi.attribute)) {
                        String value = (String) attrs.get(pdhi.attribute);
                        pdhi.handler.handlePageDirectiveAttribute(this, value,
                                                                  start, stop);
                    }
                }
            }
        }

        // Do some validations...
        if (bufferSize == 0 && autoFlush == false)
            throw new CompileException(start, Constants.getString(
	    				"jsp.error.page.bad_b_and_a_combo"));

	if (directive.equals("taglib")) {
            String uri = (String) attrs.get("uri");
            String prefix = (String) attrs.get("prefix");
            try {
                TagLibraryInfo tl = new TagLibraryInfoImpl(ctxt,
                                                               prefix,
                                                               uri);
                libraries.addTagLibrary(prefix, tl);
            } catch (Exception ex) {
                ex.printStackTrace();
                Object[] args = new Object[] { uri, ex.getMessage() };
                throw new CompileException(start, Constants.getString("jsp.error.badtaglib",
                                                              args));
            }
	}

	if (directive.equals("include")) {
	    String file = (String) attrs.get("file");
	    if (file == null)
		throw new CompileException(start,
					   Constants.getString("jsp.error.include.missing.file"));

            // jsp.error.include.bad.file needs taking care of here??
            try {
                reader.pushFile(file);
            } catch (FileNotFoundException fnfe) {
                throw new CompileException(start,
					   Constants.getString("jsp.error.include.bad.file"));
            }
	}
    }


    class GeneratorWrapper
        implements Generator, ClassDeclarationPhase,
                   FileDeclarationPhase, ServiceMethodPhase,
                   InitMethodPhase, StaticInitializerPhase
    {
        Generator generator;
        Mark start, stop;

        GeneratorWrapper(Generator generator, Mark start, Mark stop) {
            this.generator = generator;
            this.start = start;
            this.stop = stop;
        }

        /*
         * This is really a no-op.
         */
        public boolean generateCoordinates(Class phase) {
            return generator.generateCoordinates(phase);
        }

        public void init(JspCompilationContext ctxt)
            throws JasperException
        {
            generator.init(ctxt);
        }

        public void generate(ServletWriter out, Class phase)
				throws JasperException
	{
            if (phase.isInstance(generator)) {
                boolean genCoords = generator.generateCoordinates(phase);
                if (genCoords) {
		    commentGenerator.generateStartComment
			(generator, out, start, stop);
                }
                generator.generate(out, phase);
                if (genCoords) {
		    commentGenerator.generateEndComment
			(generator, out, start, stop);
                }
            }
        }
    }

    public void handleDeclaration(Mark start, Mark stop, Hashtable attrs)
	throws JasperException
    {
        Generator gen
            = new GeneratorWrapper(new DeclarationGenerator(reader.getChars(
	    			   start, stop)), start, stop);
	addGenerator(gen);
    }

    public void handleScriptlet(Mark start, Mark stop, Hashtable attrs)
	throws JasperException
    {
        Generator gen
            = new GeneratorWrapper(new ScriptletGenerator(reader.getChars(
	    			   start, stop)), start, stop);
	addGenerator(gen);
    }

    public void handleExpression(Mark start, Mark stop, Hashtable attrs)
	throws JasperException
    {
        Generator gen
            = new GeneratorWrapper(new ExpressionGenerator(reader.getChars(
	    			   start, stop)), start, stop);
	addGenerator(gen);
    }

    public void handleBean(Mark start, Mark stop, Hashtable attrs)
	throws JasperException
    {
        Generator gen
            = new GeneratorWrapper(new BeanGenerator(start, attrs, beanInfo,
                                                     genSessionVariable),
                                   start, stop);

	addGenerator(gen);
    }

    public void handleBeanEnd(Mark start, Mark stop, Hashtable attrs)
	throws JasperException
    {
        Generator gen
            = new GeneratorWrapper(new BeanEndGenerator(),
                                   start, stop);
	// End the block started by useBean body.
	addGenerator(gen);
    }

    public void handleGetProperty(Mark start, Mark stop, Hashtable attrs)
	throws JasperException
    {
        Generator gen
            = new GeneratorWrapper(new GetPropertyGenerator(start, stop, attrs,
	    			   beanInfo), start, stop);

	addGenerator(gen);
    }

    public void handleSetProperty(Mark start, Mark stop, Hashtable attrs)
	throws JasperException
    {
        Generator gen
            = new GeneratorWrapper(new SetPropertyGenerator(start, stop, attrs,
	    			   beanInfo), start, stop);

	addGenerator(gen);
    }

    public void handlePlugin(Mark start, Mark stop, Hashtable attrs,
    				Hashtable param, String fallback)
	throws JasperException
    {
        Constants.message("jsp.message.handling_plugin",
                          new Object[] { attrs },
                          Logger.DEBUG);

	Generator gen = new GeneratorWrapper (new PluginGenerator (start, attrs,
					      param, fallback), start, stop);
	addGenerator (gen);
    }

    public void handleForward(Mark start, Mark stop, Hashtable attrs, Hashtable param)
	throws JasperException
    {
        Generator gen
            = new GeneratorWrapper(new ForwardGenerator(start, attrs, param),
                                   start, stop);

	addGenerator(gen);
    }

    public void handleInclude(Mark start, Mark stop, Hashtable attrs, Hashtable param)
	throws JasperException
    {
        Generator gen
            = new GeneratorWrapper(new IncludeGenerator(start, attrs, param),
                                   start, stop);

	addGenerator(gen);
    }


    public void handleCharData(Mark start, Mark stop, char[] chars) throws JasperException {
        GeneratorBase cdg;

        if (ctxt.getOptions().getLargeFile())
            cdg = new StoredCharDataGenerator(vector, dataFile, stringId++, chars);
        else if(ctxt.getOptions().getMappedFile())
            cdg = new MappedCharDataGenerator(chars);
	else
	    cdg = new CharDataGenerator(chars);


        Generator gen
            = new GeneratorWrapper(cdg,
                                   start, stop);

	addGenerator(gen);
    }

    public void handleTagBegin(Mark start, Mark stop, Hashtable attrs, String prefix,
			       String shortTagName, TagLibraryInfo tli,
			       TagInfo ti)
	throws JasperException
    {
        TagBeginGenerator tbg = new TagBeginGenerator(start, prefix, shortTagName, attrs,
	    tli, ti, libraries, getTagHandlerStack(), getTagVarNumbers());
        Generator gen = new GeneratorWrapper(tbg, start, stop);

	addGenerator(gen);
    }

    public void handleTagEnd(Mark start, Mark stop, String prefix,
			     String shortTagName, Hashtable attrs,
                             TagLibraryInfo tli, TagInfo ti)
	throws JasperException
    {
        TagEndGenerator teg = new TagEndGenerator(prefix, shortTagName, attrs,
	    tli, ti, libraries, getTagHandlerStack(), getTagVarNumbers());
        Generator gen = new GeneratorWrapper(teg, start, stop);

	addGenerator(gen);
    }

    public TagLibraries getTagLibraries() {
	return libraries;
    }
}

⌨️ 快捷键说明

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