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,如需转载请自行联系原作者

相关文章
|
3月前
|
Web App开发 人工智能 自然语言处理
快速搞定Dify+Chrome MCP:打造能操作网页的AI助手
用Dify+Chrome MCP,3分钟打造能“动手”操作网页的AI助手!无需编程,通过自然语言指令实现自动填表、数据抓取、网页点击等自动化任务。本地部署简单,支持搜索、登录、监控等场景,让AI成为你的7×24小时数字员工,高效处理重复性网页工作。
vscode——如何将终端调整到右侧
vscode——如何将终端调整到右侧
514 1
|
芯片
如何根据设备文档和开发板标识来确定 GPIO 引脚的编号
要确定GPIO引脚编号,首先查阅设备的官方文档,了解引脚布局和功能。接着,查看开发板上的标识,如数字或字母标记,对照文档确认具体编号。此过程确保正确连接硬件,避免损坏设备。
|
安全 网络安全 API
2024年海外十大数据泄露事件
2024年,全球网络安全面临严峻挑战,多个行业遭受重大数据泄露事件。UnitedHealth Group数百万患者数据遭窃;AT&T几乎全网客户记录外泄;Trello 1500万用户信息泄露;France Travail 4300万人受影响;MITRE因VPN漏洞受损;Dropbox客户信息外流;BBC Pension Scheme逾2.5万名成员信息暴露;TeamViewer员工目录遭入侵;Advance Auto Parts 230万人信息被盗;Nissan Oceania也未能幸免。这些事件强调了强化数据保护及网络安全策略的重要性。
550 3
2024年海外十大数据泄露事件
|
运维 监控 负载均衡
|
数据采集 关系型数据库 MySQL
基于Python对二手车之家的数据采集与分析
本文介绍了基于Python的二手车之家数据采集与分析系统,通过爬虫技术获取数据并利用Pandas和NumPy等库进行数据处理与分析,旨在帮助用户了解二手车市场趋势并制定交易策略。
799 2
基于Python对二手车之家的数据采集与分析
|
缓存 关系型数据库 MySQL
mysql用in查询大量数据的方法
在MySQL中使用 IN 子句来查询大量数据时,性能可能会成为一个问题
1089 0
|
容器
push_back还是emplace_back?
emplace_back() 是 C++11 之后,vector容器中添加的新方法,和 push_back()一样,都是在容器末尾添加一个新的元素,相对于push_back函数,它减少了一次类的构造。不同的是emplace_back() 在效率上相比较于 push_back() 有了一定的提升。
177 0
|
Ubuntu 网络协议 Linux
如何白piao一个免费的泛域名SSL证书
为了给个人博客提速,全部静态资源放到云上的对象存储中,并且加了CDN,耗费了不少RMB。新申请的域名也备案通过了,但是SSL证书一般需要按年付款,看了下「鹅云」上最便宜的泛域名证书也裤头一紧
6179 0
如何白piao一个免费的泛域名SSL证书
|
数据采集 JavaScript 前端开发
深度剖析Selenium与Scrapy的黄金组合:实现动态网页爬虫
深度剖析Selenium与Scrapy的黄金组合:实现动态网页爬虫