JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

这里说一下核心标签的使用

核心标签:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

  上述代码复制在新建的jsp文件顶部(只要放在上面,哪都行).如果没有tomcat的servlet包的话是不能用jsp的,建议看Javaweb章节。

重点来说一下<c:foreach> 配合<c:if test="">的使用。

  对jsp有了解的都知道从各个scope中取出一些值,回显到页面上。存储的值可以是对象,list,string等类型。通过复杂类型在这里作简要的介绍:

  首先将一个CompleteForumPage对象存到springmvc的model中,相当于Javaweb中普通的request域,struts的servletContext域。作用范围都是一次请求redirect后内容消失,不同的是springmvc的model域的值可以改变,此处不扩展。

来看一下CompleteForumPage

 1 public class CompleteForumPage implements Serializable{
 2
 3     /**
 4      *
 5      */
 6     private static final long serialVersionUID = 1L;
 7     private Forum forum;
 8     private Integer currentPage;
 9     private Integer pageSize;
10     private Integer totalCount;
11     private Integer totalPage;
12     private List<Comment>comments;
13 //省略get set construct方法 实际中是一定要的
14
15 }

容易看出CompleteForumPage对象中除了有简单JavaInteger类型还有List<object>类型还有一个Forum类型

 1 public class Forum implements Serializable{
 2
 3     /**
 4      *
 5      */
 6     private static final long serialVersionUID = 1L;
 7 //主键生成  用uuid
 8     private String forum_id;
 9     private String forum_title;
10     private String forum_header;
11     private String forum_description;
12     private Date create_time;
13     private Institution institution;
14     private User author
15 };

以上是Forum对象 然后里面还有User类和Institution类。。就不展开了,这大概也是关系型数据库的优点和缺点吧。

关于CompleteForumPage中List<Comment>的Comment对象

 1 public class Comment implements Serializable{
 2
 3
 4     /**
 5      *
 6      */
 7     private static final long serialVersionUID = 1L;
 8     //数据库中是varchar  主键生成用uuid 吧
 9     private String comment_id;
10     private String comment_details;
11     private Forum forum;
12     private User responser;
13     private Date create_time;
14 }

将CompleteForumPage存入model中然后放在jsp页面中回显。首先注意到有个Comment的List。通过

model.addAttribute("pageBean", forumCommentPage);

将一个forumCommentPage对象存在model中

再在jsp中取出回显

<c:forEach items="${pageBean.comments }" var="comment" varStatus="s" >
${comment.responser.username }
</c:forEach>

类似于上面的这种操作可以将数据取出 取出时回显到页面的就是html数据 ,你对其作属性类型对应的操作如:Integer的pageSize 你可以做++ 和--  前提是在jsp的翻译标签内。之外就变成html的字符了。解释下上述:

items:期望在foreach中遍历的对象可以是map set list 操作时一样的。这里我存了是List<Comment>对象,参照上述实体代码理解。 var表示每一个for 循环的对象类似Java中

for(Comment comment : comments){}

varStatus这里看不出有什么作用,我们可以通过${s.index}查看遍历到第几个list中的对象了  重点:${ }一定要用这个c标签的符号包起来

在<c:foreach></c:foreach>内部可以取出你遍历的对象的属性。由于我List中的object是Comment  对应的Comment有 String类型 Forum类型 和User类型

上面我取出的是 User类型 重点:我使用的是responser 而不是User  这是因为你只能你var的是Comment  而User只是Comment的一个属性,c标签正是取出属性。接着我又取出了User 的username属性。

但是我这样做是有点问题的,这会在后台消耗大量的资源来连接查询对应的对象。看起来问题不大,但是在高并发的情况下大批量的sql查询语句几乎能让你的服务器挂掉。这也算是关系型数据库的一个不好的地方。

其他如Comment 的comment_id可用${comment.comment_id} .如需其他的请参照前述代码,不做赘述。

再就是取CompleteForumPage的属性。我们在model域中存储的名字叫pageBean  所以 CompleteForumPage对象的名字即是pageBean,如想取出其属性可直接${pageBean.currentPage}这样。很简单。

核心标签库中还有一个<c:if>也很重要 很常用  如

1 <c:if test="${ss==pageBean.totalPage&&pageBean.currentPage<pageBean.totalPage }">

完整的是这样的

 1 <c:forEach begin="1" end="${pageBean.totalPage }" var="ss" >
 2                 <c:if test="${ss==1&&pageBean.currentPage>1 }">
 3                     <li><a href="#">Previous</a></li>
 4                     </c:if>
 5
 6                     <li class="active"><a href="#">${ss } </a></li>
 7                     <c:if test="${ss==pageBean.totalPage&&pageBean.currentPage<pageBean.totalPage }">
 8                     <li><a href="#">Next</a></li>
 9                     </c:if>e'l
10 </c:forEach>

这个foreach有点不同 ,这个类似于我们用的for(;;;)就是从1到end值 然后ss会记录每次循环的index,ss从你设置的begin开始初始值也就是你的begin。可以灵活使用。上述代码是我做的一个分页判断 第一页不显示Previous最后一页不显示next。

其中这个是个判断语句类似if但是它没有else所以使用起来有点麻烦 需要判断== 和!=才能做到if else 的效果

<c:if test="${ss==pageBean.totalPage&&pageBean.currentPage<pageBean.totalPage }"><li><a href="#">Next</a></li></c:if>

转载于:https://www.cnblogs.com/notably/p/10561726.html

关于jsp中jstl-core标签循环遍历的使用相关推荐

  1. JSTL中的Core标签库

    一.目标 掌握JSTL中的Core标签库中常用标签的语法和使用. 需求分析 在页面中JSTL的核心标签库使用非常广泛,本案例将使用其中几个常用标签模拟查询用户订单并在页面显示的效果. 设计思路(实现原 ...

  2. jsp页面中JSTL/EL标签引用java后台静态static字段的方法总结

    转载自   jsp页面中JSTL/EL标签引用java后台静态static字段的方法总结 为什么使用该功能? 项目中的每个页面都包含产品名称.Logo.版本等信息,我希望修改一处,其它所有的全部跟着变 ...

  3. java 遍历对象_java中some(),every()循环遍历,Object.getOwnPropertyNames()遍历对象的属性...

    由于java知识的应用具有一定的广泛性,所以它经常会应用到我们的日常使用当中.那么今天就为大家介绍一下java中some(),every()循环遍历,Object.getOwnPropertyName ...

  4. 深入体验JavaWeb开发内幕——简述JSP中的自定义标签叫你快速学会

    转载自   深入体验JavaWeb开发内幕--简述JSP中的自定义标签叫你快速学会 自定义标签,顾名思义,就是自己定义的标签.那么我们为什么要自己定义一些标签呢? 我们知道,如果要在JSP中获取数据我 ...

  5. JSP中使用<c:forEach>标签循环遍历元素

    1.forEach标签元素 <c:forEach items="接收集合对象" var="迭代参数名称" varStatus="迭代状态,可访问 ...

  6. JSP中 JSTL和EL标签的使用

    使用JSTL前的准备 想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar). JSTL简介 JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应 ...

  7. jsp中jstl标签的类似 if - else 语句 的语法

    在jsp中引入jstl的标签库和函数库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c&q ...

  8. 【郭林专刊】JSP中JSTL提供的函数标签EL表达式操作字符串的方法

    首先在jsp页面导入标签 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions&qu ...

  9. 自定义JSP中的Taglib标签之四自定义标签中的Function函数

    转自http://www.cnblogs.com/edwardlauxh/archive/2010/05/19/1918589.html 之前例子已经写好了,由于时间关系一直没有发布,这次带来的是关于 ...

最新文章

  1. 日元兑换——国内兑换需要护照和签证,国外的机场有兑换ATM
  2. JavaScript HTML DOM - 改变 CSS
  3. 数据挖掘在企业中应用的四种途径
  4. [poj] 2749 building roads
  5. Visual Studio Code 中文下载
  6. 线程可警告状态以及APC队列
  7. 给apm换一个软件源
  8. 【手把手带你入门深度学习之150行代码的汉字识别系统】学习笔记 ·002 训练神经网络
  9. 用python画图代码-常用激活函数的python画图代码
  10. 2021-06-13list map set 并发问题
  11. 前端_day04_行,块,RGB,行高,overflow
  12. 四川开大c语言程序设计0002,C语言程序设计0002.pdf
  13. java 随机抽取数组内容_工具类:随机抽取数组或集合中的几个不重复元素
  14. idea 安装 jclasslib
  15. PCIe/PCI插槽不够用怎么办
  16. 为个人博客添加文章评论功能
  17. 如何用MATLAB读取大文本文件
  18. VMware的VMDK转换为HyperV的vhdx
  19. 从长尾市场切入 鲲云科技能做出一颗AI芯吗
  20. 传输层 --- 面向连接的传输TCP

热门文章

  1. My Appointment - Belonging to me, Search by team, Search by group
  2. 如何在S/4HANA生产订单创建上下文里拿到前置销售订单信息
  3. help.hybris.com和help.sap.com网站的搜索实现
  4. python不能安装pip_python – 无法安装pip:权限被拒绝错误
  5. python读取math_怎么使用python安装math库?怎么用?
  6. py获取前端的参数_微前端 qiankun 项目实践
  7. stringbuffer mysql_javascript制作sql转换为stringBuffer的小工具
  8. android问题总结报告,Android开发中常见的问题总结
  9. UE4学习-自定义相机视图
  10. python csv模块追加列,使用Python在CSV上添加新列