在上一篇中,我们写了将数据传到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表达式的更多相关文章

  1. 使用jstl+el表达式遇到的几个问题

    1.使用jstl访问Map<Integer,String>中的内容时总取不到? el表达式的一个bug,在解析数字的时候,会自动将数字转换成Long类型. 我的解决办法是,Map的key改 ...

  2. JSTL+EL表达式+JSP自定义框架案例

    不会框架不要紧,我带你自定义框架 前言:这标题说的有点大了,当一回标题党,之前在学JSP的时候提到了JSTL和EL表达式,由于一直钟情于Servlet,迟迟没有更新别的,这回算是跳出来了.这回放个大招 ...

  3. 使用jstl el表达式对form表单的功能进行区分 比如新建和修改共用一个form

    新建一个专栏,修改这个专栏信息 完全可以做在一个jsp的一个form中 但是,需要注意的是,使用mvc的对象属性自动封装的话 如果id为空,将会报错,无法进入controller中的 所以要在页面上判 ...

  4. EL表达式具体解释

    在 JSP 页面中,使用标签库取代传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而.由自己定义标签非常easy造成反复定义和非标准的实现.鉴于此.出现了 JSTL ( JSP St ...

  5. 访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决

    访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决 2017年05月09日 10:54:18 AinUser 阅读数:922 标签: el表达式4 ...

  6. 【JavaWeb】EL表达式&过滤器&监听器

    EL表达式和JSTL EL表达式 EL表达式概述 基本概念 EL表达式,全称是Expression Language.意为表达式语言.它是Servlet规范中的一部分,是JSP2.0规范加入的内容.其 ...

  7. [转]EL表达式和JSTL表达式实例

    /* **Title:EL表达式和JSTL表达式实例 **Author:Insun **Blog:http://yxmhero1989.blog.163.com/ */ 为了方便写JSP,我们引入了E ...

  8. 简述jsp之EL表达式和jstl及其使用

    Jsp的指令之include指令include指令:代表的是页面的包含. 作用:可以把一些jsp的页面包含在一起,对外展示. 页面的布局,现在已经不用了,现在都用css+div进行布局.include ...

  9. EL表达式和JSTL

    EL相关概念JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段.所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作:它不是编程语言,甚至不是脚本 ...

  10. JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)

    1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% requ ...

随机推荐

  1. SpringBoot之profile详解

    SpringBoot中使用配置文件application.properties&application.yml两种方式,在这两种方式下分别对应各自的profile配置方式,同时还存在命令行.虚 ...

  2. SpringBoot关于SpringDataJpa中findOne()方法报错问题

    问题描述: 首先用的SpringDataJPA的1.11版本,可以使用findOne()方法根据id查询 然后我使用了2.0.5版本,发现findOne()方法报错了,不能用来当作根据id查询了. 当 ...

  3. 【杂】暴力出奇迹,lz水数据

    做了个填涂颜色的题qwq 洛谷上的qwq,然后我就把这道题水过去了qwq(显然这是不对的,我们不能水数据qwq)当然我本身是80分的qwq end-

  4. [springMvc] 源码分析笔记(一)

    1. Servlet 结构图 2. servlet接口 public interface Servlet { //init方法在容器启动时被容器调用(当load-on-startup设置为负数或者不设 ...

  5. highchart 十字准星 crosshairs

    crosshairs: true, crosshairs: [true, true], // 同时启用竖直及水平准星线 crosshairs: [{ // 设置准星线样式 width: 2, colo ...

  6. oralce 常用sql

    查看表空间及其数据文件 SELECT * FROM dba_data_files; 查看用户下的表SELECT * FROM user_tables; 查看用户表的注释SELECT * FROM us ...

  7. javascript设计模式阅读后的感悟与总结

    单例模式 用于创建唯一的一个对象. 核心在于一个判断 var index if(index){ return index; } init(); 这样只会在第一次的时候初始化创建对象,以后都不会再创建对 ...

  8. 笔记:stm32 printf重定向到UART疑点解析

    在调试过程中往往需要通过打印来看系统运行状态:在STM32平台上,打印重定向有多种实现方案:其一是编译时使用keil自带的MacroLIB,据说这个库对一些C语言基础设施做了新的实现,代码结构更加紧凑 ...

  9. dockerfile语法规则

    编写Dockerfile 在前面的章节,我们学习了通过docker命令来下载镜像,运行镜像,在容器中部署自己的程序,最后将容器提交到自己的镜像中.但是,这并不是Docker推荐的镜像构建方式.在这一章 ...

  10. Angular2+URL中的 # 引发的思考

    1.先分析 # 的作用 1.1. # 的涵义 #代表网页中的位置.其右面的字符就是该位置的标识符.比如,http://www.example.com/index.html#print就代表网页inde ...