Qual é a diferença entre incluir arquivos com JSP incluem diretiva, JSP inclui ação e usando JSP Tag Files?

Parece que há dois métodos para modelar com JSP. Incluindo arquivos com uma dessas instruções

<%@ include file="foo.html" %>
<jsp:include page="foo.html" />

ou usando arquivos de tag JSP

// Save this as mytag.tag
<%@ tag description="Description" pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
    <jsp:doBody/>
</body>
</html>

E em outra página JSP, chame-a com

<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>

<t:mytag>
    <h1>Hello World</h1>
</t:mytag>

Então, qual método devo usar? Um agora é considerado obsoleto ou ambos são válidos e abrangem diferentes casos de uso?

Editar

O uso desse arquivo de tag não é o mesmo que usar um include?

// Save this as product.tag
<%@ tag description="Product templage" pageEncoding="UTF-8"%>
<%@ tag import="com.myapp.Product" %>
<%@ attribute name="product" required="true" type="com.myapp.Product"%>

Product name: ${product.name} <br/>
Quantity: ${product.quantity} <br/>

E ligue para outro JSP com

<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>

<t:product>
    <c:forEach items="${cart.products}" var="product">
        <t:product product="${product}"/>
    </c:forEach>
</t:product>

Isso me parece ser o mesmo que usar um include e passar parâmetros para ele. Então, são Tag Files o mesmo que inclui?

questionAnswers(4)

yourAnswerToTheQuestion