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

简介: 本文为原创,如需转载,请注明作者和出处,谢谢!     Struts的整个视图层(就是MVC模式中的View层)是由Struts的定制标签(或者称为定制动作)和客户端代码(Javascript、HTML等)实现的。

本文为原创,如需转载,请注明作者和出处,谢谢!


    Struts的整个视图层(就是MVC模式中的View层)是由Struts的定制标签(或者称为定制动作)和客户端代码(JavascriptHTML)实现的。这些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代码获得存储在requestsession对象中的内容。

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来开发基于StrutsWeb应用程序就无需再安装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应用程序。

目录
相关文章
|
Linux 开发工具 git
10 推荐免费 Git 仓库
Git 免费仓库 Gitee 开源中国-基于 Git 的代码托管和研发协作平台【推荐】 https://gitee.com/
2396 0
10 推荐免费 Git 仓库
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
1150 1
|
存储 安全 搜索推荐
HTTPS协议深度解析
【7月更文挑战第12天】HTTPS协议通过加密通信和身份验证机制,为数据传输提供了强有力的安全保障。在现代互联网环境中,HTTPS已成为保障网站和用户数据安全的重要手段。了解HTTPS的工作原理和安全性特性,有助于更好地应用和维护HTTPS,提升网络安全水平。
1368 5
|
自然语言处理 数据可视化 数据库
#7892133 基于django和neo4j的旅游领域问答系统和图谱展示
#7892133 基于django和neo4j的旅游领域问答系统和图谱展示
95 1
|
存储 Linux Apache
释放磁盘空间:解决文件删除但空间未释放的困扰
在管理Linux系统的日常中,最令人头疼的时刻之一就是发现尽管已删除了巨大的文件,但是磁盘空间的占用率仍然没有任何下降。这种情况不仅让我怀疑自己的操作是否正确,同时也给操作系统的运行带来了隐患。 究竟问题出在哪,又该如何解决?本次记录,将演示释放磁盘空间:解决文件删除但空间未释放的困扰。
释放磁盘空间:解决文件删除但空间未释放的困扰
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之使用sql查询报错无权限,是什么原因
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
运维 Cloud Native 数据库
开发人员必须知道的软件系统架构分类知识
日常工作中或者是看各种资料或阅读书籍时,大佬们关于软件架构的描述中经常会看到SaaS和云原生,微服务,事件驱动型这几种词汇,其实这几类架构描的角度是不一样的。
359 7
|
数据安全/隐私保护 Windows
Windows卸载与清除工具 “ Geek 与 CCleaner ”
一、Geek的简介 1、大概介绍 geek是一款专业的Windows软件卸载软件,它可以卸载程序并查找以前卸载的应用程序在注册表中留下的点点滴滴,彻底地卸载干净,还用户一个干净整洁的电脑。 2、详细介绍 Geek Uninstaller - the best FREE uninstaller
1058 1
|
定位技术 图形学 容器
Qt5入门学习——图形视图框架
Qt5入门学习——图形视图框架
643 0
Qt5入门学习——图形视图框架
|
存储 缓存 运维
Redis 架构及介质选择指引 | 学习笔记
快速学习 Redis 架构及介质选择指引
Redis 架构及介质选择指引 | 学习笔记