图2.5 在JSP页面中输出Action的返回信息 2.6 改进视图组件 通过前面的几节的介绍,我们已经明白了Struts 2 MVC框架的基本数据流,已经完成了Struts 2应用中模型、控制器、视图3个组件的开发。但应用中的视图组件:JSP页面非常丑陋,特别是输出Action返回信息的JSP页面,使用了大量的Java脚本来控制输出,下面将会使用Struts 2的标签来改善整个应用视图组件。 2.6.1 改善输出页面 为了控制输出Struts 2的ValueStack中封装的值,Struts 2提供了大量的标签。其中比较常用的标签有: — if:该标签支持标签体,如果if标签里判断的表达式返回真,则输出标签体内容。 — else:该标签不能独立使用,它需要与if标签结合使用,如果if标签内判断的表达式返回假,则输出该标签里的标签体。 — iterator:主要用于迭代输出某个集合属性的各个集合元素。 — property:该标签用于输出指定属性值。 关于Struts 2标签库更深入的使用,第10章还会深入介绍,故此处不再详细讲解。通过使用上面的几个标签,替换showBook.jsp页面中的Java脚本,修改后的showBook.jsp页面代码如下: <%@ page language=\contentType=\charset=GBK\%> <%@taglib prefix=%uri=\
作者李刚的图书
上面的JSP页面使用了Struts 2的标签库,因此必须在JSP页面的首部添加taglib指令,该taglib指令用于导入标签库。
提示 如果需要使用某个标签库中的标签,则必须在页面的开始导入该标签库。 页面中使用Struts 2的iterator标签迭代输出ValueStack中的books数组,并为每个数组元素定义了一个序号:index。通过判断序号是否为奇数,如果行序号为奇数,则输出一个有背景色的表格行;否则输出一个无背景色的表格行。
在浏览器中再次向getBooks.action发送请求(发送请求之前,必须先登录本系统),将看到如图2.6所示的界面。
图2.6 使用Struts 2标签改善后的输出界面 上面页面的输出效果与图2.5并没有太大的不同,只是使用不同颜色来分隔了记录行。这也得益于Struts 2标签库的简洁。 关键在于2.5.4节中的JSP页面代码与本节页面代码的差异:前面JSP页面使用了大量的Java脚本,让整个页面的代码看起来非常凌乱,降低了可阅读性、可维护性。但本页面中仅使用Struts 2脚本控制输出,完全消除了页面中的Java脚本,降低了该页面的后期维护成本。 2.6.2 使用UI标签简化表单页面 前面已经提到过,Struts 2的一个重要组件就是标签库。Struts 2标签库中不仅提供了前面所示的基本控制、数据输出等功能,还提供了非常丰富的UI组件,除了提供系列的主题相关标签外,还提供了一系列的表单相关的标签。 Struts 2为常用表单域都提供了对应的标签,下面是常用的表单域标签。 — form:对应一个表单元素。 — checkbox:对应一个复选框元素。 — password:对应一个密码输入框。 — radio:对应一个单选框元素。 — reset:对应一个重设按钮。 — select:对应一个下拉列表框。 — submit:对应一个提交按钮。 — textarea:对应一个多行文本域。 — textfield:对应一个单行文本框。 关于这些界面相关的标签,同样将在第10章详细介绍。下面将使用Struts 2的表单相关标签简化用户登录的login.jsp页面,修改的login.jsp页面的代码如下: <%@ page language=\contentType=\charset=GBK\<%@taglib prefix=%uri=\