Struts2的控制标签库和数据标签库(六)上

简介: Struts2的控制标签库和数据标签库(六)

Struts2提供了一个非常完整的标签库,作用非常强大。但效率不太高,有人说Struts效率缓慢就是因为标签库,但是其功能不得不让人佩服。


Struts2标签库分为普通标签库和UI标签库,


普通标签库又下分为两个: 控制标签和数据标签.


UI标签库分为form标签库,非form标签库,ajax标签库(这一章暂时不介绍ajax)。


一. 引入标签库


需要在jsp页面的开头引入struts-tags标签库(以下例子都默认添加了)


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!--需要引入struts的标签库-->
<%@ taglib uri="/struts-tags" prefix="s"%>


该 struts2-tags 被放置在 struts-core.jar 包下面的 META-INF 文件 夹下。


20200412173854462.png


二. Struts2的控制标签库


常用的控制标签库主要用 if else if else标签库,表示判断.


iterator标签库表示循环判断 (c标签时用forEach) 先介绍两个常用的


为了简化操作,在jsp中用<% %>来添加数据。


二.一 if elseif else 标签库(与java中if一样,也可以if单独, if else)


二.一.一 普通判断


<%
  request.setAttribute("age",25);
%>
用if elseif else标签库表示人.
<s:if test="#request.age>47">
  这是妈妈
</s:if>
<s:elseif test="#request.age>26">
  这是大姐
</s:elseif>
<s:else>
  这是二姐
</s:else>


二.一.二 判断对象是否为空


if 语句一般是不会这样单独用的,


常用的用法有两种,一种是if 判断对象或者集合,避免空指向的问题


<%
  //User user=new User();
  //user.setSex("男");
  User user=null;
  request.setAttribute("user",user);
%>
<s:if test="#request.user!=null">
  显示性别: ${user.sex}
</s:if>
<s:else>
  没有数据显示,避免.属性时出现错误
</s:else>


单个对象可以判断,集合也可以判断 <s:if test="#request.userList!=null"> 再<s:iterator /> 循环输出。


第二种,常见的是根据对象中的属性,如status(状态0或者1) 来做出不同的选择。


如果是0就怎么样,如果是1就怎么样。


在上面的性别上进行相应的追加


<s:if test="#request.user!=null">
显示性别: 
  <s:if test="#request.user.sex='男'">
      男的
  </s:if>
  <s:else>
      女的
  </s:else>
</s:if>


如果是字符串,就用’'括起来,


如果是数值,就直接 .user.age=24 ,用一个=号,不能用两个==


二 .二 iterator循环对象输出


这是循环输出的,有好多个属性:


    <s:iterator begin="" end="" step="" 
value="" var="" status="">
</s:iterator>


可以分成两组形式:


  1. begin(开始位置),end(结束位置), step(步长),var(表示每次的值)是一组
  2. value(接收到的值), var(变量) ,status(状态值)是一组。


二.二.一 前端循环遍历生成结构


第一组是没有从后端得到数据,只是单纯的遍历前端,如遍历10个


  • 标签


     <ul>
    <s:iterator begin="1" end="10" step="1" var="i">
      <li>${i}</li>
    </s:iterator>
  </ul>


会生成10 个 <li> </li> 标签元素。


二.二.二 循环遍历集合,展示集合数据


第二组是循环遍历后端集合对象中的值,注意里面有一个status,表示状态. status=“sta”


status有几个常用的值,


1.count 表示数目

2.index表示下标,是从0开始的,

3.first 是否第一个,

4.last是否第二个,

5.even是否为偶数,

6.odd是否为奇数,为boolean类型值。


其中 最常用的是index。


从后端SingleAction中得到的数据(有关数据得到,可以参与第五章的一.五封装List 对象到前端)


 public String getData() {
    UserService userService=new UserService();
    List<User> userList=userService.findAll();
    ActionContext.getContext().getValueStack().set("userList",userList);
    return SUCCESS;
  }


那么在前端展示时


<s:iterator value="userList" var="user" status="sta">
    <tr>
      <td>下标为:${sta.index}</td>
      <td>数目为:${sta.count}</td>
      <td>${user.name}</td>
      <td>${user.sex}</td>
      <td>${user.age}</td>
      <td>${user.relation}</td>
      <td>
        <a href="#">查看详情</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <a href="#">修改</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <a href="#">删除</a>
    </tr>
</s:iterator>


20200412173955642.png


二.三 append 追加标签


<%
  List<Student> studentList1=new ArrayList<Student>();
  List<Student> studentList2=new ArrayList<Student>();
  studentList1.add(new Student(1,"张三",10));
  studentList1.add(new Student(3,"李四",20));
  studentList2.add(new Student(5,"王五",30));
  studentList2.add(new Student(7,"赵六",40));
  request.setAttribute("studentList1",studentList1);
  request.setAttribute("studentList2",studentList2);
%>
</head>
<body>
<s:append var="studentList3">
  <s:param value="#request.studentList1"></s:param>
  <s:param value="#request.studentList2"></s:param>
</s:append>
<table>
  <tr>
    <th>序号</th>
    <th>编号</th>
    <th>姓名</th>
    <th>年龄</th>
  </tr>
  <s:iterator value="studentList3" status="status">
  <tr>
    <td><s:property value="#status.index+1"/></td>
    <td><s:property value="id"/></td>
    <td><s:property value="name"/></td>
    <td><s:property value="age"/></td>
  </tr>
  </s:iterator>
</table>


在<s:param>节点中添加要组合添加的标签,将值总体放置在<s:append>节点中的var变量中,以后遍历时只遍历var中的studentList3即可。 从后向前添加,有顺序。


二.四 generator 分隔标签


<s:generator separator="," val="'张三,李四,王五'" var="nameList"></s:generator>
<s:iterator value="#nameList" var="a">
  <s:property value="#a"/>
</s:iterator>


val表示要分隔的字符串,用’'单引号括起来,separator指定分隔符, var为整体的值。


再用s:iterator进行遍历输出


其中var该属性指定了保存在context中的名字,如果没有指定该属性将不会保存在context中

相关文章
|
5月前
|
SQL XML Java
JSP 教程 之 JSP 标准标签库(JSTL) 4
**JSP的JSTL是用于简化Web开发的标签库,包括核心、格式化、SQL、XML和函数5个部分。SQL标签库允许与数据库交互,如设定数据源、执行查询和更新,以及处理参数。例如, `&lt;sql:setDataSource&gt;` 定义数据源, `&lt;sql:query&gt;` 执行查询。通过使用JSTL,开发者能更整洁地处理JSP页面。**
51 8
|
5月前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 3
JSP标准标签库(JSTL)是用于JSP的实用标签集合,涵盖核心任务如迭代、条件、XML处理和国际化。它包括5个部分:核心、格式化、SQL、XML和函数标签。格式化标签(fmt)用于文本、日期、时间和数字的格式化,例如`&lt;fmt:formatNumber&gt;`和`&lt;fmt:formatDate&gt;`,以及资源管理和区域设置。这些标签简化了JSP应用中的常见操作。
41 5
|
5月前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 2
JSTL是JSP的标签库,用于简化页面开发,包含核心、格式化、SQL、XML和函数5类标签。核心标签如`&lt;c:out&gt;`显示数据,`&lt;c:set&gt;`设置变量,`&lt;c:if&gt;`进行条件判断,`&lt;c:forEach&gt;`用于迭代。通过`&lt;%@ taglib %&gt;`导入,如`&lt;c:out&gt;`来自`http://java.sun.com/jsp/jstl/core`。
51 2
|
3月前
|
存储 前端开发 Java
JSTL核心标签库
这篇文章详细介绍了JSTL核心标签库中的表达式标签,包括输出、变量设置、变量移除、导入、重定向、传递参数、条件判断、条件选择、循环等标签的语法和使用示例,旨在简化JSP程序的开发。
|
5月前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 5
JSP的JSTL是用于简化JSP开发的标签库,包括核心、格式化、SQL、XML和函数五大标签集。XML标签库处理XML文档,如`&lt;x:out&gt;`显示XML数据,`&lt;x:parse&gt;`解析XML,`&lt;x:forEach&gt;`遍历节点。使用前需添加XercesImpl.jar和xalan.jar到Tomcat的lib目录。
41 6
|
XML SQL 存储
【Javaweb】JSP标准标签库
【Javaweb】JSP标准标签库
119 0
【Javaweb】JSP标准标签库
|
SQL XML Java
JSTL标签库(JSP标准标签库)
JSTL(JSP Standard Tag Library,核心标签库)是 JSP 标签的集合,它封装了 JSP 应用的通用核心功能。 JSP 标签是一组与 HTML 标签相似,但又比 HTML 标签强大的功能标签。JSTL 用来简化 JSP 开发,可以使我们不用嵌入 Java 代码就能够开发出复杂的 JSP 页面。 JSTL 包含 5 类标签库:core 标签库、fmt 标签库、fn 标签库、XML 标签库和 SQL 标签库。这 5 类标签库基本覆盖了 Web 开发中的所涉及的技术展示。
|
Java 开发者
Struts2的控制标签库和数据标签库(六)下
Struts2的控制标签库和数据标签库(六)
120 0
Struts2的控制标签库和数据标签库(六)下
|
SQL XML Java
12.标准标签库(JSTL)
1.JSTL标签库安装     JSTL的概念:   JSP标准标签库(JSP Standard Tag Library)是一个实现 Web 应用程序中常见的通用功能的定制标记库集功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问JSTL标签库由几个子标签库组成,主要分为以下几种:核心标签、XML标签、格式化标签(I18N)、SQL标签、函数标签库。
1882 0