编译自定义JSP标记处理程序

时间:2016-04-06 04:51:05

标签: java jsp compilation custom-tags tag-handler

package com.mytag.tags;

import java.util.Date;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class MyTagHandler extends SimpleTagSupport{

public int doStartTag() throws JspException {
    JspWriter out=pageContext.getOut();
    try{
        out.print(new java.util.Date());
    }catch(Exception e){System.out.println(e);}
    return SKIP_BODY;
    }

}

需要在不使用任何IDE的情况下编译此自定义JSP标记处理程序。 任何人都可以提一下如何编译它我试过 javac -cp" C:\ Users \ dell \ Desktop \ jst L2 \ WEB-INF \ lib中\ javax.servlet.jsp.jstl-1.2.1.jar;" MyTagHandler.java 它没有工作

1 个答案:

答案 0 :(得分:1)

这段代码根本不是JSTL。此代码是自定义JSP标记处理程序。 JSTL是您通过http://java.sun.com/jsp/jstl/*命名空间URI在JSP中导入的标记,例如<c:xxx><fmt:xxx>等.JSTL不代表“自定义JSP标记处理程序”。要了解有关JSTL究竟是什么的更多信息,请访问our JSTL wiki page

至于具体问题,您只需要在运行时类路径中使用JSP API。这应该已经被导入的包名称暗示:javax.servlet.jsp.*。您没有在任何地方导入javax.servlet.jsp.jstl.*,因此不需要JSTL API JAR文件。

您通常会在目标服务器的库/模块文件夹中找到JSP API JAR文件。您在/WEB-INF/lib文件夹中手动放置JSTL这一事实表明您并未针对真正的Java EE服务器(如WildFly,TomEE等),而是以Tomcat等准系统servlet容器为目标。因此,我将以Tomcat为例。您可以在Tomcat安装的/lib文件夹中找到JSP API。

假设在C:\Java\apache-tomcat-8.0.33中安装了(解压缩)Tomcat,这是编译自定义JSP标记处理程序的正确命令:

javac -cp "C:\Java\apache-tomcat-8.0.33\lib\jsp-api.jar" com/mytag/tags/MyTagHandler.java

请注意,这会弹出“找不到符号”的编译错误,但该部分与当前要求的问题完全无关。要解决新的编译错误,请转到What does a "Cannot find symbol" compilation error mean?