这一句<%@ taglib prefix="s" uri="/struts-tags" %>就是从地址/struts-tags下面寻找标签库,可能有人会好奇这个地址在哪里呢?答案是它定义在Struts 2库文件struts2-core-2.0.11.jar里面的文件META-INF/struts-tags.tld里面,在这个文件的开头有这么一段 代码:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

<tlib-version>2.2.3</tlib-version>

<jsp-version>1.2</jsp-version>

<short-name>s</short-name>

<uri>/struts-tags</uri>

....

大家可以注意到粗斜体的<uri>/struts-tags</uri>刚好与JSP文件引入taglib声明里面的 uri属性匹配,这样就找到了对应的标签定义位置了。Tomcat等Web服务器会自动加载所有jar文件下的META-INF子目录下的.tld标记定 义文件,这也是为什么好多框架不需要把tld文件复制到WEB-INF。

posted on 2014-09-16 21:57  yuyezhulan  阅读(2016)  评论(0编辑  收藏  举报