0
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 它不工作

4

1 回答 1

1

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

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

您通常可以在目标服务器的 library/module 文件夹中找到 JSP API JAR 文件。您手动将 JSTL 放置在/WEB-INF/lib文件夹中的事实表明,您的目标不是真正的 Java EE 服务器,例如 WildFly、TomEE 等,而是准系统 servletcontainer,例如Tomcat。因此,我将假设 Tomcat 作为示例。/lib您可以在Tomcat 安装文件夹中找到 JSP API 。

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

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

请注意,这会弹出“找不到符号”编译错误,但该部分与当前提出的问题完全无关。为了解决新的编译错误,请参阅“找不到符号”编译错误是什么意思?

于 2016-04-06T07:33:57.620 回答