关于jsp中jstl-core标签循环遍历的使用
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
- public class CompleteForumPage implements Serializable{
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private Forum forum;
- private Integer currentPage;
- private Integer pageSize;
- private Integer totalCount;
- private Integer totalPage;
- private List<Comment>comments;
- //省略get set construct方法 实际中是一定要的
- }
容易看出CompleteForumPage对象中除了有简单JavaInteger类型还有List<object>类型还有一个Forum类型
- public class Forum implements Serializable{
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- //主键生成 用uuid
- private String forum_id;
- private String forum_title;
- private String forum_header;
- private String forum_description;
- private Date create_time;
- private Institution institution;
- private User author
- };
以上是Forum对象 然后里面还有User类和Institution类。。就不展开了,这大概也是关系型数据库的优点和缺点吧。
关于CompleteForumPage中List<Comment>的Comment对象
- public class Comment implements Serializable{
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- //数据库中是varchar 主键生成用uuid 吧
- private String comment_id;
- private String comment_details;
- private Forum forum;
- private User responser;
- private Date create_time;
- }
将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>也很重要 很常用 如
- <c:if test="${ss==pageBean.totalPage&&pageBean.currentPage<pageBean.totalPage }">
完整的是这样的
- <c:forEach begin="" end="${pageBean.totalPage }" var="ss" >
- <c:if test="${ss==1&&pageBean.currentPage>1 }">
- <li><a href="#">Previous</a></li>
- </c:if>
- <li class="active"><a href="#">${ss } </a></li>
- <c:if test="${ss==pageBean.totalPage&&pageBean.currentPage<pageBean.totalPage }">
- <li><a href="#">Next</a></li>
- </c:if>e'l
- </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>
关于jsp中jstl-core标签循环遍历的使用的更多相关文章
- JSP 中 JSTL 页面标签的笔记
jsp头部引入使用的标签 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%&g ...
- JavaScript 中的12种循环遍历方法
原文:JavaScript 中的12种循环遍历方法 题目:请介绍 JavaScript 中有哪些循环和遍历的方法,说说它们的应用场景和优缺点? 1.for 循环 let arr = [1,2,3];f ...
- JSP中使用<c:forEach>标签循环遍历元素
1.forEach标签元素 <c:forEach items="接收集合对象" var="迭代参数名称" varStatus="迭代状态,可访问 ...
- JSP页面通过c:forEach标签循环遍历List集合
c:forEach>标签有如下属性: 属性 描述 是否必要 默认值items 要被循环的信息 否 无begin 开始的元素(0=第一个元素,1=第二个元素) 否 0end 最后一个元素(0=第一 ...
- JSP中 JSTL和EL标签的使用
使用JSTL前的准备 想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar). JSTL简介 JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应 ...
- jsp中jstl标签的类似 if - else 语句 的语法
在jsp中引入jstl的标签库和函数库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c&q ...
- 转载:jsp中jstl标签的类似 if - else 语句 的语法
原文链接:http://www.cnblogs.com/wanggd/archive/2013/05/27/3101788.html 在jsp中引入jstl的标签库和函数库 <%@ taglib ...
- fn:indexOf()详解(jsp中JSTL标签库)
fn:indexOf()函数返回一个字符串中指定子串的位置. 语法 fn:indexOf()函数的语法如下: ${fn:indexOf(<原始字符串>,<子字符串>)} 实例演 ...
- 关于jsp中jstl报错Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core
有的时候在开发jsp时,需要使用jstl时,在jsp上面引用jstl却出现错误:Can not find the tag library descriptor for "http://jav ...
随机推荐
- Mybatis 学习---${ }与#{ }获取输入参数的区别、Foreach的用法
一.Mybatis中用#{}和${}获取输入参数的区别 1.“#{}“和“${}”都可以从接口输入中的map对象或者pojo对象中获取输入的参数值.例如 <mapper namespace=&q ...
- AspNet mvc的一个bug
[HttpPost] public ActionResult updateLoan(TuWenMilitaryRank entity) 使用mvc绑定表单 每次绑定的对象都为null,查看Reques ...
- CENTOS7错误:Cannot find a valid baseurl for repo: base/7/x86_6
CENTOS7错误:Cannot find a valid baseurl for repo: base/7/x86_6 解决办法: 1.进入/etc/sysconfig/network-script ...
- 表单取消历史保存之autocomplete的用法
表单取消历史保存之autocomplete的用法 应用场景 浏览器开启了表单自动填充设置后,有些表单中的input元素在添加时会以下拉的形式显示以前填写过的表单,有时候可能会影响用户的使用.比如:da ...
- Dos环境变量修改
批处理修改环境变量,修改用户变量.系统变量(全局变量),永久/临时设置环境变量.设置Java环境变量 临时环境变量 修改变量: set PATH=%Path%;%JAVA_HOME%\bin 含义:表 ...
- centos7 多网卡绑定bond0 之mod4
什么是mod4 mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合) 特点:创建一个聚合组,它们共享 ...
- iOS弹出UIViewController小视图
在TestViewController1中弹出TestViewController2 在TestViewController中点击按钮或者什么触发方法里面写入以下代码 TestViewControll ...
- 03.Python网络爬虫第一弹《Python网络爬虫相关基础概念》
爬虫介绍 引入 之前在授课过程中,好多同学都问过我这样的一个问题:为什么要学习爬虫,学习爬虫能够为我们以后的发展带来那些好处?其实学习爬虫的原因和为我们以后发展带来的好处都是显而易见的,无论是从实际的 ...
- 整理volatile相关知识点
前言:volatile关键字在面试中经常被问到,从volatile关键字可以引申出许多知识点,因此有必要对此进行总结.本文根据<深入理解Java虚拟机——JVM高级特性与最佳实践>中的相关 ...
- centos7下安装docker(17.4docker监控----prometheus)
Prometheus是一个非常优秀的监控工具.准确的说,应该是监控方案.Prometheus提供了监控数据搜集,存储,处理,可视化和告警一套完整的解决方案 Prometheus架构如盗图: 官网上的原 ...