jstl,el表达式
Posted Zs夏至
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jstl,el表达式相关的知识,希望对你有一定的参考价值。
在上一篇中,我们写了将数据传到jsp页面,在jsp页面进行展示数组,但是我们发现,在jsp页面写代码是一件很烦的事,一个循环要拆成两部分,例如for循环,在例如if语句:
<%int a=22;%> <%if(a>20){%> hello world <%}else{%> world hello <%}%>
这是很烦很痛苦的的 一件事,那么怎么解决这个问题呢,这里用到了jstl技术;
再写jstl技术之前,我们先简单了解一下el表达式,el表达式要和jstl结合在一起使用,我们先简单知道用法;
el表达式的用法与jquery用法类似:
jquery:$("#logo") 选中id为logo的标签
el:${a} 选中变量a;在编写过程具体体现:我们在上一篇中,有一个在jsp页面获得共享数据的代码:
${stu} <% List<Map<String ,Object>> stuAll = (List<Map<String, Object>>) request.getAttribute("stuAll");%>
上面两句代码,得到的结果是一样的,明显发现使用el表达式大大减少了我们的代码量,看着也比较简洁,现在得到了集合,我们要怎么遍历它呢,所以要用到jstl,使用jstl结合el表达式,来达到遍历集合的目的;
这里还是以上一节最后写的代码为例,展示学生表的数据;上一节我们的jsp代码是:
<%@ page import="java.util.List" %> <%@ page import="java.util.Map" %><%-- Created by IntelliJ IDEA. User: 赵帅 Date: 2019/4/16 Time: 18:41 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <%--用html标签来搭建表格--%> <table border="1" cellspacing="0"> <tr> <th>id</th> <th>name</th> <th>age</th> </tr> <%--在jsp中写java代码,获得共享数据list,java代码要写在<%%>标签中--%> <% List<Map<String ,Object>> stuAll = (List<Map<String, Object>>) request.getAttribute("stuAll"); for (Map<String, Object> map : stuAll) {%> <tr> <%--获得一个变量的值标签为 <%= 变量名%> --%> <td><%= map.get("id")%></td> <td><%= map.get("sname")%></td> <td><%= map.get("age")%></td> </tr> <%--这个括号与for循环的括号组成一对--%> <%}%> </table> </body> </html>
现在我们用jstl+el在写一遍:
写之前我们需要导两个jar包: jstl.jar
standard.jar
现在加上我们之前导入的数据库链接以及servlet包总共有4个包;下面写展示数据代码:
<%-- Created by IntelliJ IDEA. User: 赵帅 Date: 2019/4/16 Time: 18:41 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--首先导入指令--%> <%--自定义标签 c --%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%--这里写下jsp的三大指令: <%@include file=""%> 用于指定包含另一个页面 --%> <%-- <%@page file=""%> 该指令是针对当前页面的指令 --%> <%-- <%@taglib uri="" prefix="" %> 用于定义和访问自定义标签 --%> <html> <head> <title>Title</title> </head> <body> <table border="1" cellspacing="0"> <tr> <th>id</th> <th>sname</th> <th>age</th> </tr> <%--使用自定义的标签c: foreach相当于java中增强性for循环 var定义一个变量接收值,items是要遍历的集合数组等; 这里写一下可能出现的问题,共享的数据名不能为数字--%> <c:forEach var="stu" items="${stuAll}"> <tr> <td>${stu.id}</td> <td>${stu.sname}</td> <td>${stu.age}</td> </tr> </c:forEach> </table> </body> </html>
可以看出代码更符合标签的语法了,代码看着比较简洁
以上是关于jstl,el表达式的主要内容,如果未能解决你的问题,请参考以下文章