我是新手,刚开始学习Java。从jstl标签,我对jstl了解很多。
我使用IDE(eclispe mars)通过添加一个简单的jsp页面来创建动态Web项目,然后将war导出到tomcat7的webapps文件夹。我对jstl强制性罐子的依赖性做了一些测试。
我的核心项目文件是:
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
什么组织提供它? apache tomcat?
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
Thoes jars从http://tomcat.apache.org/download-taglibs.cgi下载 在这里,我有一个问题:三罐的区别是什么? 因为我不知道区别,所以我把三个罐子放到lib文件夹中,但是我发现taglibs-standard-impl。*。jar在runnnig时是强制性的。
答案 0 :(得分:1)
我想到了夜晚的问题,我意识到答案可能就在罐子旁边。关于4个apache tomcat jar的问题的最后一部分,从link开始,有2个自述文本文件(Source README,Binary 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).
Binary README:
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 namesapce in javax.servlet.jsp.jstl-API-1.2.1.jar。所以我们可以说两个罐子的组合等于jstl.jar
情况类似于apache tomcat jars组。不同之处在于apache tomcat实现将更多的类划分为3个或4个不同的jar文件。
到目前为止,我可以说我理解了那些apache tomcat jar的大部分基本用法。