• 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>一起使用

  • 相关阅读:
    centos7下redis6的安装
    Centos MySQL 5.7安装、升级教程
    Python之SSH-paramiko模块的使用
    Linux进程管理工具之Supervisor的使用
    Python-RPC框架之-ZeroRPC和SimpleXMLRPCServer
    Django入门--简单的form验证
    redis常用指令
    MySQL自增主键ID重新排序
    批量微博删除脚本
    解决springboot2.x集成redis节点故障redisTemplate报错redis Command timed out
  • 原文地址:https://www.cnblogs.com/sallon/p/2637716.html
Copyright © 2020-2023  润新知