在Struts框架中,您始终需要配置Struts标记库才能在视图页面(JSP)中对其进行访问。 有两种配置方法。
1. Strut标签库手动配置
手动配置是一种古老而经典的方法,用于Struts版本<= 1.1和Servlet <2.3容器中。 下载所有Struts依赖项,确保将以下“ tld ”文件复制到WEB-INF文件夹,您可以在下载的Struts库中找到这些文件。
- struts-bean.tld
- struts-html.tld
- struts-logic.tld
- struts-tiles.tld
在web.xml中声明taglib uri
web.xml
...
<taglib>
<taglib-uri>
http://struts.apache.org/tags-bean
</taglib-uri>
<taglib-location>
/WEB-INF/struts-bean.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>
http://struts.apache.org/tags-html
</taglib-uri>
<taglib-location>
/WEB-INF/struts-html.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>
http://struts.apache.org/tags-logic
</taglib-uri>
<taglib-location>
/WEB-INF/struts-logic.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>
http://struts.apache.org/tags-tiles
</taglib-uri>
<taglib-location>
/WEB-INF/struts-tiles.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>
http://struts.apache.org/tags-nested
</taglib-uri>
<taglib-location>
/WEB-INF/struts-nested.tld
</taglib-location>
</taglib>
...
现在,您可以在JSP页面中访问它。 JSP的@taglib uri必须与web.xml匹配<taglib-uri>
实际上,您可以定义自己的taglib uri名称,例如
web.xml
...
<taglib>
<taglib-uri>
customer-anything/tags-bean
</taglib-uri>
<taglib-location>
/WEB-INF/struts-bean.tld
</taglib-location>
</taglib>
...
然后通过您的自定义taglib uri名称访问它。
2. Strut标签库自动配置
这是简单的方法,仅在Struts 1.2、1.3和Servlet 2.3 / 2.4容器中使用。 您不再需要在web.xml中定义“ tlds ”详细信息,只需在项目类路径中包含struts-taglib.jar或将其复制到WEB-INF / lib文件夹即可。
所有“ tld ”详细信息都在“ struts-taglib.jar \ META-INF \ tld ”文件夹中定义。 在部署期间, struts-bean.tld , struts-html.tld , struts-logic.tld和struts-tiles.tld将自动部署。 但是,您只能通过以下“ pre-fixed uri ”名称访问它。 在这种方法中,不允许更改“ taglib uri ”名称。
常问问题
问:好像“ taglib uri”指向Apache网站,客户端无法访问互联网怎么办?
答 :taglib uri是在“ struts-taglib.jar \ META-INF \ tld ”文件夹中定义的,它只是一个项目uri名称,并不指向Apache网站,即使在没有Internet访问环境的情况下,您仍然可以访问它。
问:手动配置可以在最新的Struts 1.2或1.3中使用吗?
答 :是的,Struts是向后兼容的,Struts 1.2和1.3仍然支持旧方法。
问:哪种方法最好?
答 :取决于,自动配置只能在Servlet 2.3 / 2.4容器中使用。 如果可以选择,请转到自动方法,为什么要手动复制tld文件?
参考
翻译自: https://mkyong.com/struts/configure-the-struts-tag-libraries/