Struts2.0标签学习 程序员

1.引入Struts标签的原因

使用标志(Tag)的一个目的就是避免在JSP页面中出现过多的<%%>的语句,使页面与后台代码分离。

 

2.如何引入

要在JSP中使用Struts 2.0标志,先要指明标志的引入。通过JSP代码的顶部加入以下代码<%@taglib prefix="s" uri="/struts-tags" %>


3表达式语言的优势

避免(MyType) request.getAttribute()myBean.getMyProperty()之类的语句,使页面更简洁; 
支持运算符(如+-*/),比普通的标志具有更高的自由度和更强的功能; 
简单明了地表达代码逻辑,使用代码更可读与便于维护。 


4.Struts 2中支持的表达式语言
OGNLObject-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言; 
JSTLJSP Standard Tag Library),JSP 2.0集成的标准的表达式语言; 
Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如PythonRubySmarttalk等)的一些起特性; 
Velocity,严格来说不是表达式语言,它是一种基于Java的模板匹配引擎,具说其性能要比JSP好。 
Struts 2默认的表达式语言是OGNL

 

Struts2 Taglib抽象了不同表示技术,现在Struts2主要支持三种表示技术:JSP,FreeMarker和Velocity。但部分的Tag在三种表示技术下都可以使用,但是也有部分只能在某一种情况下使用。

Struts 2框架的标签库可以分为以下3类。

— 用户界面标签(UI标签):主要用来生成HTML元素的标签。

— 非用户界面标签:主要用于数据访问、逻辑控制等。

— AJAX标签:AJAX是Web 2.0阶段系列技术和相关产品服务中非常重要的一种技术,其全称是异步JavaScript和XML(即Asynchronous JavaScript and XML)。该标签用来支持AJAX技术。

其中,用户界面标签(UI标签),可以分为下面两类。

— 表单标签:表单标签主要用于生成HTML页面的Form元素,以及普通表单元素的标签。

— 非表单标签:非表单标签主要用于生成页面上的tree、Tab页等。

非界面标签,即非UI标签,也可以分为以下两类。

— 数据访问标签:主要包含用于输出值栈(ValueStack)中的值、完成国际化等功能的标签。

— 流程控制标签:主要包含用于实现分支、循环等流程控制的标签。

Struts 2框架的标签库可以按照如图9.1所示分类。

 

图9.1  Struts 2标签库分类

Struts 2标签库简化了开发代码,增强了代码的可读性和可维护性。

5. Struts2标签

A

<s:a href=""></s:a>-----超链接,类似于html里的<a></a>
<s:action name=""></s:action>-----执行一个view里面的一个action
<s:actionerror/>-----如果actionerrors有值那么显示出来
<s:actionmessage/>-----如果actionmessage有值那么显示出来
<s:append></s:append>-----添加一个值到list,类似于list.add();
<s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajax

B
<s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值

C
<s:checkbox></s:checkbox>-----复选框
<s:checkboxlist list=""></s:checkboxlist>-----多选框
<s:combobox list=""></s:combobox>-----下拉框
<s:component></s:component>-----图像符号

D
<s:date/>-----获取日期格式
<s:datetimepicker></s:datetimepicker>-----日期输入框
<s:debug></s:debug>-----显示错误信息
<s:div></s:div>-----表示一个块,类似于html<div></div>
<s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----双下拉框

E
<s:if test=""></s:if>
<s:elseif test=""></s:elseif>
<s:else></s:else>-----3个标签一起使用,表示条件判断

F
<s:fielderror></s:fielderror>-----显示文件错误信息
<s:file></s:file>-----文件上传
<s:form action=""></s:form>-----获取相应form的值

G
<s:generator separator="" val=""></s:generator>----<s:iterator>标签一起使用

H
<s:head/>-----<head></head>里使用,表示头文件结束
<s:hidden></s:hidden>-----隐藏值

I
<s:i18n name=""></s:i18n>-----加载资源包到值堆栈
<s:include value=""></s:include>-----包含一个输出,servletjsp页面
<s:inputtransferselect list=""></s:inputtransferselect>-----获取form的一个输入
<s:iterator></s:iterator>-----用于遍历集合

L
<s:label></s:label>-----只读的标签

M
<s:merge></s:merge>-----合并遍历集合出来的值

O
<s:optgroup></s:optgroup>-----获取标签组
<s:optiontransferselect doubleList="" list="" doubleName=""></s:optiontransferselect>-----左右选择框

P
<s:param></s:param>-----为其他标签提供参数
<s:password></s:password>-----密码输入框
<s:property/>-----得到'value'的属性
<s:push value=""></s:push>-----value的值push到栈中,从而使property标签的能够获取value的属性

R

<s:radio list=""></s:radio>-----单选按钮
<s:reset></s:reset>-----重置按钮


S
<s:select list=""></s:select>-----单选框
<s:set name=""></s:set>-----赋予变量一个特定范围内的值
<s:sort comparator=""></s:sort>-----通过属性给list分类
<s:submit></s:submit>-----提交按钮
<s:subset></s:subset>-----为遍历集合输出子集

T
<s:tabbedPanel id=""></s:tabbedPanel>-----表格框
<s:table></s:table>-----表格
<s:text name=""></s:text>-----I18n文本信息
<s:textarea></s:textarea>-----文本域输入框
<s:textfield></s:textfield>-----文本输入框
<s:token></s:token>-----拦截器
<s:tree></s:tree>-----
<s:treenode label=""></s:treenode>-----树的结构

U
<s:updownselect list=""></s:updownselect>-----多选择框
<s:url></s:url>-----创建url

 

6常用的Struts 2.0的标签库

1.1.往action里传值的使用方式: 
<input name="userName" type="text" class="input6" size="15"> 
a. userName属性需要在访问的action中提供相应的属性,并有SET/GET方法。 
b. 可以不在访问的action中提供相应的属性,用request.getParameter(“userName”);

1.2.显示标签 property 用于输出指定值: 
<s:property value=" userName "/> action返回到指定页面是,可以通过该标签显示action中的属性信息。(注 userName必须在action中存在,并有GET方法)。 
1.3.往对象中传值<s:textfield> 用于从页面往action中的对象内传值: 
<s:text name="user. userName " id="username"/> 
该标签可以在页面中向action中的实体对象内直接传值。(注:在action中要存在user对象,并有SET/GET方法。) 
1.4.判断<s:if> </s:if> 用于在页面中判断指定数据 
<s:if test="userName == admin">…. </s:if> 
<s:else>…. </s:else> 
该标签用于对指定的数据进行判断,但指定的数据必须在action中存在。 
1.5.迭代<s:iterator>用于将ListMapArrayList等集合进行循环遍历 
<s:iterator value="userList" id="user" status="u"> 
<s:property value="userName"/></a> 
</s:iterator> 
该标签用于将userList集合中的元素进行循环,用过property进行显示集合中的指定元素值。 
1.6URL地址标签,<s:url>用于生成一个URL地址,可以通过URL标签指定的<s:param>子元素向URL地址发送请求参数 
<s:url action=" "> 
<s:param name=" " value=""></s:param> 
</s:url> 
其中action为请求地址,param子元素为地址后面所带的参数。 
1.7.超链接 <a href >一般和<s:url>标签一起使用,用于带多个参数。 
<a href=" 
<s:url action=" "> 
<s:param name=" " value=""></s:param> 
<s:param name=" " value=""></s:param> 
<s:param name=" " value=""></s:param> 
</s:url>"> 
超链接</a> 
1.8set标签,用于将某个值放入指定的范围内。例如application,session等。 
<s:set name="user" value="userName" scope=”request”/> 
user值放入request范围内。 
7. Struts2页面开发中常用标签使用规范: 
1.1.通过<input name="userName" type="text" class=" " size="15"> 
action中传值,action中要有相应的属性,并提供SET/GET方法。 
(在数量少时可以使用request.getParameter(“userName”);) 

1.2.在页面显示action传来的数据,使用property标签。需要显示的数据从action中获得。 

1.3.往action中的实体对象内传值,使用textfield标签。 

1.4.在页面中判断指定值使用<s:if>标签。判断数据从action中获得。 

1.5.在页面中需要循环列表显示的数据使用<s:iterator>标签,列表数据从action中获得。 

1.6URL地址和超链接可以使用<a href><s:url>,在传多值时建议<a href><s:url>一起使用

原文地址:https://www.cnblogs.com/sallon/p/2637716.html