Struts1.x系列教程(4):标签库概述与安装

简介:
  Struts 的整个视图层(就是 MVC 模式中的 View 层)是由 Struts 的定制标签(或者称为定制动作)和客户端代码 (Javascript HTML ) 实现的。这些 Struts 标签被写在 JSP 页面中,用于生成客户端代码、进行逻辑判断等工作,使用 Struts 标签可以尽量避免直接在 JSP 页面中直接使用 Java 代码,以使得 JSP 页面更容易编写和维护。

一、 Struts1.x 标签库概述

Struts
的标签库分为如下五类:

1. HTML 标签库
HTML 标签库中的定制标签一般和HTML 中的tag 是一一对应。如HTML 中的<form> 、各种类型的<input> HTML 标签库中都有定制标签和其对应。HTML 标签库的目的是将视图层的组件和控制层连接起来(事实上,不使用HTML 标签库中的定制标签也可以完成同样的工作,只是需要写更多的代码)。
2. Bean 标签库
Bean 标签库中的定制标签主要用来向客户端输出文本信息。那么Struts 为什么要单独提供一个标签库来向客户端输出文本信息呢?原因有两个:
1.  Struts 提供国际化支持(也就是说可以从属性文件中读取文本信息,并将其输出到客户端)。
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 规范。
二、安装和声明 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 标签库的声明代码如下:
   < %@ taglib  uri ="http://struts.apache.org/tags-bean"  prefix ="bean"  % >
  
< %@ taglib  uri ="http://struts.apache.org/tags-html"  prefix ="html"  % >
  
< %@ taglib  uri ="http://struts.apache.org/tags-logic"  prefix ="logic"  % >
  
< %@ taglib  uri ="http://struts.apache.org/tags-tiles"  prefix ="tiles"  % >
  < %--  JSP高级模板并未加入Nested标签库声明,需要手工加入--% >
  < %@ taglib  uri ="http://struts.apache.org/tags-nested"  prefix ="nested"  % >
     在上面的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 标签。
   < %@ taglib  uri ="/WEB-INF/struts-bean.tld"  prefix ="bean" % >
  
< %@ taglib  uri ="/WEB-INF/struts-html.tld"  prefix ="html" % >
  
< %@ taglib  uri ="/WEB-INF/struts-logic.tld"  prefix ="logic" % >
  
< %@ taglib  uri ="/WEB-INF/struts-tiles.tld"  prefix ="tiles" % >
  
< %--  JSP高级模板并未加入Nested标签库声明,需要手工加入--% >
  
< %@ taglib  uri ="/WEB-INF/struts-nested.tld"  prefix ="nested" % >
其中WEB-INF 前面的“/ ”表示Web 根目录。感兴趣的读者也可以打开这些.tld 文件,查看其中的内容。也可以将这些.tld 文件中的<uri> 标签的内容改为其他的内容,如将struts-bean.tld 文件中的<uri> 标签的内容改为struts-bean ,那么就可以使用如下的语句来声明Bean 标签库了:
< %@ taglib  uri ="struts-bean"  prefix ="bean" % >
     但要注意,要想使修改生效,需要重启Tomcat 或是重新发布当前的Web 应用程序。



 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/215242,如需转载请自行联系原作者

相关文章
|
XML 前端开发 Java
框架技术,Struts2入门配置
框架技术,Struts2入门配置
130 0
框架技术,Struts2入门配置
|
XML 设计模式 SQL
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(1)
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(1)
179 0
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(1)
|
Java 开发者 索引
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(2)
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(2)
92 0
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(2)
|
Java 开发框架 C++
|
XML 前端开发 Java
|
前端开发 Java 开发框架
|
前端开发 Java 容器

相关课程

更多

相关实验场景

更多