【问题标题】:What are JSTL mandatory Jars什么是 JSTL 强制罐子
【发布时间】:2017-02-18 14:34:11
【问题描述】:

我是新手,刚开始学习 Java。从jstl标签中,我对jstl了解了很多。

我使用IDE(eclispe mars)通过添加一个简单的jsp页面来创建一个动态的web项目,然后将war导出到tomcat7的webapps文件夹中。我对jstl强制jar的依赖做了一些测试。

我的核心项目文件是:

web.xml: 

  <web-app xmlns:xsi="http:....... version="3.0">   //use servlet 3.0

index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jstl Tag Lib</title>
</head>
<body>
<h2>2+2=${2+2}</h2> //this line works, el is a part of jsp.

//below lines work fine if there are proper jstl jars.
<c:set var="salary" scope="session" value="${2000*2}" />
salary:<c:out value="${salary}" />
</body>
</html>

在 WEB-INF/lib/ 文件夹中,我有 3 种罐子,所有 3 组都可以正常工作。

1) 只包含:

jstl-1.2.jar

什么组织提供它?阿帕奇雄猫?

2) 只包含:

javax.servlet.jsp.jstl-api-1.2.1.jar
javax.servlet.jsp.jstl-1.2.4.jar

在这里,我有一个问题:这两个罐子有什么区别?

3) 只包含:

taglibs-standard-impl-1.2.5.jar
taglibs-standard-compat-1.2.5.jar
taglibs-standard-jstlel-1.2.5.jar
taglibs-standard-spec-1.2.5.jar

鞋罐从http://tomcat.apache.org/download-taglibs.cgi下载 在这里,我有一个问题:三个罐子有什么区别? 因为不知道有什么区别,所以把三个jar放到lib文件夹下,但是运行时发现taglibs-standard-impl.*.jar是强制的。

【问题讨论】:

标签: jsp tomcat jstl


【解决方案1】:

我整晚都在思考这个问题,我意识到答案可能就在罐子旁边。问题的最后一部分,关于4个apache tomcat jars,来自link,有2个readme文本文件(Source READMEBinary README

上面写着:

There are three primary sub-modules:

    spec            <-- contains Apache's implementation of the API classes
    impl            <-- contains the implementation of tags from the 1.1
                        namespace http://java.sun.com/jsp/jstl/*
    jstlel          <-- contains the implementation of tags from the 1.0
                        namespace http://java.sun.com/jstl/* and uses the
                        original JSTL 1.0 version of EL

In addition, the following modules provide supporting functionality
    build-tools     <-- build support such as checkstyle rules
    compat          <-- contains the implementation of tags from the 1.0
                        namespace but uses the JSP container's implementation
                        of EL (which will be 2.1 or later).

二进制自述文件:

This version of the Standard Tag Library has the following runtime
dependencies:

   1. Dependencies provided by a JSP 2.1 container:
      - Java 1.5 or later
      - Servlet 2.5 or later
      - JSP 2.1 or later

   2. Additional dependencies
      - The XML tag library requires Apache Xalan 2.7.1 or later

---
Apache Xalan 2.7.1

To address performance issues with XSLT processing, this version relies on
implementation specific functionality from Apache Xalan. The following
libraries should be included in the classpath for your application:
   - xalan-2.7.1.jar
   - serializer-2.7.1.jar

---------------------------------------------------------------------------
ADD DEPENDENCIES TO A WEB APPLICATION

To use this distribution with your own web applications, add the following JAR
files to the '/WEB-INF/lib' directory of your application:
   - taglibs-standard-spec-1.2.5.jar
   - taglibs-standard-impl-1.2.5.jar
   - taglibs-standard-jstlel-1.2.5.jar
   - xalan-2.7.1.jar
   - serializer-2.7.1.jar

If you do not use JSTL 1.0 tags then the "taglibs-standard-jstlel" JAR may be
omitted. If you do not use the XML library, then the Apache Xalan dependencies
may also be omitted.

If you build you application with Maven, add the following dependencies to
your pom.xml file:

    <dependency>
      <groupId>org.apache.taglibs</groupId>
      <artifactId>taglibs-standard-spec</artifactId>
      <version>1.2.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taglibs</groupId>
      <artifactId>taglibs-standard-impl</artifactId>
      <version>1.2.5</version>
    </dependency>

我也使用jd-gui来反编译jar,然后我在taglibs-standard-impl-1.2.5.jar中找到了一些类,它们的基类在taglibs-standard-spec-1.2.5.jar中。

同样使用反编译方法,我可以发现,

jstl-1.2.jar 是一个单一的jar,但它在jar 中有两个主要的包。 - 1) org.apache.taglibs.standard - 2) javax.servlet.jsp.jstl

javax.servlet.jsp.jstl-1.2.4.jar 和 javax.servlet.jsp.jstl-api-1.2.1.jar 是另一个组 jar。

每个jar中只有一个主包,它们是javax.servlet.jsp.jstl-1.2.4.jar中的org.apache.taglibs.standard命名空间和javax.servlet.jsp.jstl命名空间javax.servlet.jsp.jstl-api-1.2.1.jar。所以我们可以说两个jar的组合等于jstl.jar

情况类似于apache tomcat jars组。不同的是,apache tomcat实现将更多的类分成3或4个不同的jar文件。

所以到目前为止,我可以说我了解了那些 apache tomcat jar 的大部分基本用法。

【讨论】:

  • 那么它们各自的用途是什么?
猜你喜欢
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
相关资源
最近更新 更多