使用<jsp:include>指令或<c:import>标签可以动态地向页面增加可重用的内容块,也可以设置请求参数。但是存在两个问题:
1)设置的参数会被当成请求参数传递。你只是想要把信息传给所包含的文件,结果却是参与了这个请求的所有组件都能看到这个值,请求参数本来的目的应该是标识表单数据;
2)如果JSP中有一大堆<jsp:include>指令或<c:import>标签,这样的JSP读起来很困难,倘若标记本身就能表示你要包含的是什么,那就更好了;
利用标记文件,可以使用一个定制标记调用可重用的内容,而不是使用通用的<jsp:include>指令或<c:import>标签。可以把它看成是一种“轻型标记处理器”,页面开发人员不用编写复杂的JAVA标记处理器类也能创建标记。
1.建立和使用标记文件
2.向标记文件发送参数
使用<jsp:include>指令传递参数时,会被设置成一个新的请求参数。
对于标记文件,发送的不是请求参数,而是标记属性。
3.标记文件的body-content
标记文件体中不允许有脚本。只能是两个值:empty或tagdependent(把标记体看做是纯文本)。
4.标记文件中的动态属性
标记文件也可以包含动态属性。对于标记文件,JSP引擎会提供Map对象,然后你可以使用forEachJSTL标签检查或迭代处理这个键值对的映射。
5.容器在哪里查找标记文件
容器会在4个位置上查找标记文件。
1)直接在WEB-INF/tags目录中查找;
2)在WEB-INF/tags的子目录中查找;
3)在WEB-INF/lib下一个JAR文件的META-INF/tags目录中查找;
4)在WEB-INF/lib下一个JAR文件的META-INF/tags的子目录中查找;
如果标记文件部署在一个JAR中,这个标记文件必须有一个TLD;