《研磨struts2》第八章 Struts2的Taglib 之 8.1 Struts2的Taglib概述

8.1  Struts2Taglib概述

8.1.1概述

Struts2自带了一套非常强大的标签库,不仅自身功能强大,而且与Struts2中的其它部分无缝结合。在学习之前,先来简要回忆一下标签到底是干什么的?

估计大多数朋友都使用过JSTL,那自然熟悉JSTL的核心标签,也就是c标签。在JSP页面上使用标签,可以分离JSP上的Java代码与HTML。其中HTML用来管理把数据展现在哪儿,而Java代码用来获取数据。

先来看一个例子,如果现在request的user属性上有一个放好的UserModel,如果不使用标签,直接用Java代码来访问数据,将会写出如下的代码:

 

java代码:
  1. <%@page import="cn.javass.user.UserModel" %>  
  2.     <%UserModel user = (UserModel)request.getAttribute("user"); %>  
  3.     <table border="1">  
  4.         <tr>  
  5.             <td colspan="2">用户信息</td>  
  6.         </tr>  
  7.         <tr>  
  8.             <td>姓名</td>  
  9.             <td><%=user.getName()%></td>  
  10.         </tr>  
  11.         <tr>  
  12.             <td>年龄</td>  
  13.             <td><%=user.getAge()%></td>  
  14.         </tr>  
  15.     </table>  

你会看到,上例的HTML与Java代码混杂,而且在操作的时候,Java是一种强语言类型,要导入所有要使用的类,还要手工到request中去获取属性,非常麻烦。

       但是,如果使用c标签加上EL表达式,就清晰了许多:

 

java代码:
  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
  2.     <table border="1">  
  3.         <tr>  
  4.             <td colspan="2">用户信息</td>  
  5.         </tr>  
  6.         <tr>  
  7.             <td>姓名</td>  
  8.             <td><c:out value="${user.name}"/></td>  
  9.         </tr>  
  10.         <tr>  
  11.             <td>年龄</td>  
  12.             <td><c:out value="${user.age}"/></td>  
  13.         </tr>  
  14.     </table>  

现在再引用request中的user属性的时候,不需要知道它的类型,想要引用它的name属性,只需要使用EL表达式${user.name}即可。这样,c标签就代替了原来的Java代码,使得页面变得整洁;而且由于EL是弱类型语言,不需要知道user的类型,因此,那些烦人的导入也就不用写了。

       了解了标签是做什么的,接下来来说明一下标签被调用的时机:标签是在JSP页面初始化的时候被调用,然后生成相应的HTML代码。所以,学习某些可见标签的捷径,就是在页面初始化之后,查看它的源文件,看看生成的HTML代码到底是什么样的。

8.1.2 Struts2标签的分类

Struts2标签包含很多内容,可以按照其功能大致分为四类:

  • 数据标签:用来从值栈上取值或者向值栈赋值。
  • 控制标签:控制程序的运行流程,比如分支和循环控制。
  • UI标签:用来显示UI界面的标签,多会生成HTML。
  • 杂项标签:用于完成其它功能的标签,比如生成URL和输出国际化文本等

当然,这些并不是Struts2标签库的全部,除此之外,还有一些其他作用的标签,比如ajax标签。

       接下来讲述一些主要的标签,由于有些标签的属性太多,不能一一列举,只能讲述一个标签主要的属性。

 

私塾在线网站原创《研磨struts2》系列

转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4077.html

欢迎访问http://sishuok.com获取更多内容

猜你喜欢

转载自rubbing-struts2.iteye.com/blog/1517954