zoukankan      html  css  js  c++  java
  • 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>
    View Code

    现在我们用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>

    可以看出代码更符合标签的语法了,代码看着比较简洁

  • 相关阅读:
    HDU 1213 How Many Tables(并查集,简单)
    POJ 1611 The Suspects(并查集,简单)
    HDU 4539 郑厂长系列故事――排兵布阵(曼哈顿距离)
    POJ 2411 Mondriaan'sDream(状压DP)
    ZOJ 4257 MostPowerful(状压DP,简单)
    HDU 3001 Traveling(状压DP)
    POJ 3311 Hie with the Pie(Floyd+状态压缩DP)
    POJ 1185 炮兵阵地(状态压缩DP)
    POJ 3254 Corn Fields(状态压缩DP)
    XueXX and Chessboard(dp)
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/10719643.html
Copyright © 2011-2022 走看看