北京建设有限公司信源官方网站/seo常用优化技巧
JSTL的相关概念以及JSTL常用标签的讲解和练习案例
一、 JSTL相关的概念和使用
- 概念:JavaServer Pages Tag Library JSP标准标签库,是由Apache组织提供的开源的免费的jsp标签 <标签>
- 作用:用于简化和替换jsp页面上的java代码
- 使用步骤:
①导入jstl相关jar包
②引入标签库:taglib指令:<%@ taglib %>
③使用标签:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
二、 常用的JSTL标签
- if:相当于java代码的if语句
(1)属性:
①test 必须属性,接受boolean表达式
②如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
③一般情况下,test属性值会结合el表达式一起使用
(2) 注意:
c : if标签没有else情况,想要else情况,则可以在定义一个c : if标签
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head><title>if标签</title>
</head>
<body><c:if test="true"><h1>我真是。。。</h1></c:if><br><%//判断request域中的一个list集合是否为空,如果不为null则显示遍历集合。List list = new ArrayList();list.add("aaaa");request.setAttribute("list",list);request.setAttribute("number",4);%><c:if test="${not empty list}">遍历集合。。。</c:if><br><c:if test="${number % 2 !=0}">${number}为奇数</c:if><c:if test="${number % 2 ==0}">${number}为偶数</c:if></body>
</html>
- choose:相当于java代码的switch语句
①. 使用choose标签声明 ----> 相当于switch声明
②. 使用when标签做判断 ----> 相当于case
③. 使用otherwise标签做其他情况的声明 ---->相当于default
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>choose标签</title>
</head>
<body><%--完成数字编号对应星期几案例--%><%request.setAttribute("number",3);%><c:choose><c:when test="${number == 1}">星期一</c:when><c:when test="${number == 2}">星期二</c:when><c:when test="${number == 3}">星期三</c:when><c:when test="${number == 4}">星期四</c:when><c:when test="${number == 5}">星期五</c:when><c:when test="${number == 6}">星期六</c:when><c:when test="${number == 7}">星期天</c:when><c:otherwise>数字输入有误</c:otherwise></c:choose>
</body>
</html>
- foreach:相当于java代码的for语句
for(int i=1;i<=10;i++){System.out.println(i);}
(1)完成重复的操作:
在Java里面for循环如下:
属性:
①begin:开始值。
②end:结束值。
③var:临时变量。
④step:步长。
⑤varStatus:循环状态对象。
index:容器中元素的索引,从0开始。
count:循环次数,从1开始。
在Java里面遍历容器如下:
List<User> list;
for(User user : list){ }
(2)遍历容器:
属性:
①items:容器对象。
②var:容器中元素的临时变量。
③varStatus:循环状态对象。
index:容器中元素的索引,从0开始。
count:循环次数,从1开始。
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>foreach标签</title>
</head>
<body><c:forEach begin="1" end="10" var="i" step="2" varStatus="s">${s.index} ${s.count} ${i} <br></c:forEach><hr><%List list = new ArrayList();list.add("aaa");list.add("bbb");list.add("ccc");request.setAttribute("list",list);%><c:forEach items="${list}" var="str" varStatus="s">${s.index}${s.count}${str}<br></c:forEach></body>
</html>
- 练习:
需求:在request域中有一个存有User对象的List集合。需要使用jstl+el将list集合数据展示到jsp页面的表格table中
User.java文件:
package cn.itcast.domain;
import java.text.SimpleDateFormat;
import java.util.Date;
public class User {private String name;private int age;private Date birthday;public User(String name, int age, Date birthday) {this.name = name;this.age = age;this.birthday = birthday;}public User() {}public String getBirStr(){if(birthday != null){//1.格式化日期对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//2.返回字符串即可return sdf.format(birthday);}else{return "";}}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}
}
jsp文件:
<%@ page import="cn.itcast.domain.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>test</title>
</head>
<body>
<%List list = new ArrayList();list.add(new User("张三",23,new Date()));list.add(new User("李四",24,new Date()));list.add(new User("王五",25,new Date()));request.setAttribute("list",list);
%>
<table border="1" width="500" align="center"><tr><th>编号</th><th>姓名</th><th>年龄</th><th>生日</th></tr><%--数据行--%><c:forEach items="${list}" var="user" varStatus="s"><c:if test="${s.count % 2 != 0}"><tr bgcolor="red"><td>${s.count}</td><td>${user.name}</td><td>${user.age}</td><td>${user.birStr}</td></tr></c:if><c:if test="${s.count % 2 == 0}"><tr bgcolor="green"><td>${s.count}</td><td>${user.name}</td><td>${user.age}</td><td>${user.birStr}</td></tr></c:if></c:forEach>
</table>
</body>
</html>