转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/15/251411.htmlhtml
Struts的整个视图层(就是MVC模式中的View层)是由Struts的定制标签(或者称为定制动做)和客户端代码(Javascript、HTML等)实现的。这些Struts标签被写在JSP页面中,用于生成客户端代码、进行逻辑判断等工做,使用Struts标签能够尽可能避免直接在JSP页面中直接使用Java代码,以使得JSP页面更容易编写和维护。
java
1、Struts1.x标签库概述apache
Struts的标签库分为以下五类:
session
1. HTML标签库布局
在HTML标签库中的定制标签通常和HTML中的tag是一一对应。如HTML中的<form>、各类类型的<input>在HTML标签库中都有定制标签和其对应。HTML标签库的目的是将视图层的组件和控制层链接起来(事实上,不使用HTML标签库中的定制标签也能够完成一样的工做,只是须要写更多的代码)。spa
2. Bean标签库.net
Bean标签库中的定制标签主要用来向客户端输出文本信息。那么Struts为何要单独提供一个标签库来向客户端输出文本信息呢?缘由有两个:orm
1. 为Struts提供国际化支持(也就是说能够从属性文件中读取文本信息,并将其输出到客户端)。htm
2. 为了不直接使用Java代码得到存储在request和session对象中的内容。对象
3. Logic标签库
为了不在JSP页面中直接使用Java代码进行逻辑判断和循环操做。Logic标签库提供了一组标签用于在不使用Java代码的状况下也能够完成一样的工做。并且使用标签进行逻辑判断和循环操做要比使用Java代码更容易理解和维护。
4. Nested标签库
这个标签库中的标签有来显示form或对象中的“nested”属性。
5. Tiles标签库
这个标签库的标签容许咱们为视图层创建布局(layout)。
在Struts的标签库中有一些标签和JSTL有必定的重合,如Logic标签库的逻辑判断标签。可是JSTL要求Servlet容器要符合JSP 2.0规范,不然JSTL没法正常工做。这对于那么运行在较低版本的Servleet容器中的程序就没法享受JSTL给咱们带来的强大的功能。但Struts标签却没这个要求。所以,若是咱们的Web程序中使用了Struts,建议尽可能使用Struts标签库中的标签,除非能保证Web应用程序的运行环境都支持JSP 2.0规范。
2、安装和声明Struts标签
因为在MyEclipse中已经带了Struts相应的jar包,所以,使用MyEclipse来开发基于Struts的Web应用程序就无需再安装Struts了。若是读者想使用其余的Struts版本,能够到http://struts.apache.org/去下载。
Struts标签库的声明和JSTL相似,它们都须要使用taglib指令。其实在MyEclipse中咱们根本不须要记忆如何来声明Struts标签,所以,若是使用MyEclipse的高级JSP模板创建JSP页面,MyEclipse就会自动将声明Struts标签的语句加到了JSP页面中。在打开高级JSP模板后,在“Template to use”下拉列表框中选择“Standard JSP using Struts 1.2/1.3”,而后点击“Finish”按钮创建一个JSP页面。打开这个刚创建的JSP页面,咱们会在page指令的下面看到四条tablib指令,其中Nested标签库并未自动加入,若是JSP页面中使用了Nested标签库中的标签,就须要咱们手工加入Nested标签库的定义,Struts标签库的声明代码以下:
在上面的Struts标签库的声明中,taglib标签的prefix属性值能够是任何字符串(但不一样的标签库的prefix的值不一样相同),但建议按着上面代码的声明语句中的prefix属性值来声明相应的Struts标签库。
还有一点须要注意,taglib指令的uri属性除了使用在.tld文件中定义的uri值来定位标签库外,还能够直接使用.tld文件的相对路径来定位。在使用MyEclipse将一个Web工程加入Struts特性后,会自动在WEB-INF目录中加入以下五个文件:
1. struts-bean.tld:用于声明Bean标签库中标签的tld文件。
2. struts-html.tld:用于声明HTML标签库中标签的tld文件。
3. struts-logic.tld:用于声明Logic标签库中标签的tld文件。
4. struts-tiles.tld:用于声明Tiles标签库中标签的tld文件。
5. struts-nested.tld:用于声明Nested标签库中标签的tld文件。
所以,也能够使用以下的代码来声明Struts标签。
其中WEB-INF前面的“/”表示Web根目录。感兴趣的读者也能够打开这些.tld文件,查看其中的内容。也能够将这些.tld文件中的<uri>标签的内容改成其余的内容,如将struts-bean.tld文件中的<uri>标签的内容改成struts-bean,那么就能够使用以下的语句来声明Bean标签库了:
但要注意,要想使修改生效,须要重启Tomcat或是从新发布当前的Web应用程序。