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应用程序。

转载于:https://blog.51cto.com/yuke198907/1341808

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

  1. Struts1.x系列教程(16):使用LocaleAction类实现国际化的Web程序

     我们曾经在<Struts1.x系列教程(13):国际化>一文中讲过如何通过编程的方式实现多语言的Web页面.在本文中,我们会介绍另外一种实现多语言Web页面的方法.这种方式与<St ...

  2. EWSTM8系列教程01_IAR介绍、下载、安装和注册

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!https://www.cnblogs.com/captainbed 正文: IAR最新全套 ...

  3. Struts1.x系列教程(5):HTML标签库

    HTML标签库中的标签基本上都是和HTML Tag一一对应的.但我们经常使用的主要是<html:form>标签及其子标签.因此,在本文将介绍一下<html:form>及其常用子 ...

  4. Struts1.x系列教程(6):Bean标签库

    Bean标签库共有11个标签.这些标签可以完成如下五种工作: 1.       获得HTTP请求信息 2.       访问Java对象 3.       访问JSP内嵌对象和Struts配置对象 4 ...

  5. Struts1.x系列教程:用MyEclipse开发第一个Struts程序

    本系列教程将详细介绍Struts 1.x的基本原理和使用方法,读者可以参阅<Struts 2系列教程>来比较Struts 1.x和Struts 2.x的相同点和不同点. 在这篇文章中将以一 ...

  6. 2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)

    文章目录 引言 相关教程直通车: day01_Flink概述.安装部署和入门案例 今日目标 Flink概述 什么是批处理和流处理 为什么需要流计算 Flink的发展史 Flink的官方介绍 Flink ...

  7. 【视频教程】帝国CMS制作网站系列教程14—标签模板及标签讲解

    作为一个程序员,搭建一个自己的博客网站是件非常容易的事情,但是作为很多非程序员非计算机专业的学习者来讲,可能就需要花点时间进行学习,而如果你想通过自学来学习怎么制作一个属于自己的网站的话,那这套帝国C ...

  8. Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序

    本文为原创,如需转载,请注明作者和出处,谢谢! 本系列教程将详细介绍Struts 1.x的基本原理和使用方法,读者可以参阅<Struts 2系列教程>来比较Struts 1.x和Strut ...

  9. conda安装tensorflow-gpu简洁版_【DP系列教程02】DeePMDkit:conda安装 amp; 离线安装

    点开安装教程前,是不是已经做好了看一篇万字长文的心理准备.DP君既然可以教会大家5分钟setup一个DeePMD-kit训练,就一定要教会大家如何在5分钟内学会安装DeePMD-kit.当然了,这样高 ...

最新文章

  1. iOS实现三屏复用循环广告[从服务器请求的广告]
  2. Leetcode Combinations
  3. 动态内存管理:malloc和free以及new和delete的联系与区别
  4. 关于Tomcat5.5中EL表达式无效的解决办法
  5. ISA Server 2004防火墙的基本配置
  6. ARMv8体系结构基础02:搭建实验环境
  7. android中webview使用打开系统相机录像_有没有什么高效使用微信的经验?
  8. linux系统管理Linux系统实验,操作系统原理与Linux系统实验
  9. 干货 | 手把手带你搞硬件设计!
  10. 郭盛华是如何登上神坛?令全世界认识了中国的黑科技
  11. informix mysql_Informix数据库查看数据库大小
  12. 字母顺序排序(C语言)
  13. 关于numpy.take()用法
  14. html实现选择头像,HTML5实现上传头像图片大小选择(简单实现)
  15. Ceph-deploy 搭建Ceph分布式存储系统
  16. 机器学习的思考–计算机的潜意识
  17. win10本地组策略功能说明
  18. Windows2012r2 安装SQLSERVER2017 与 SQLSERVER2016 的错误提示解决KB2919355 以及 KB2919442
  19. 复习总结:大学物理(大物)
  20. 除了男足,中国元素霸占了世界杯

热门文章

  1. Windows上通过VLC播放器搭建rtsp流媒体测试地址操作步骤
  2. OpenCV中resize函数五种插值算法的实现过程
  3. 如何给页面加上loding_如何给片头添加字幕?视频剪辑大神们都这样玩
  4. yudian温控表a1温度怎么补偿_冰箱冷藏温度多少合适 冰箱冷藏温度怎么调节 看完这篇你就有答案 冰箱...
  5. mysql语句生成工具_强烈推荐一款MySQL语句优化辅助工具,值得收藏
  6. python selenium unittest_python+selenium+unittest——ui自动化的轻量级选择
  7. 清除图片下默认的小间隙_密封间隙对迷宫密封性能影响的三维数值分析
  8. SpringBoot复习:3(@Conditional)
  9. 微信公众号开发 微信消息回复开发 文本消息 图片消息开发
  10. java英文字符串大小写转换 必须使用_【Java基础】之字符串大小写转换不利用API....