• jsp02


    el表达式,jstl标签

    1.el表达式是什么?

    sun制定的一种规范,主要是给标签的属性赋值,或者直接输出。

    <%=user.name%>

    java5版本以上支持jsp的el表达式和jstl标签

    否则需要引入两个jar包

    jstl.jar
    standard.jar

    2.el基本语法

    ${el表达式}

    1)用于访问bean属性

    设置了get,set方法的类,get,set方法就是bean属性

    语法1:${user.name}  直接输出用户的名称

    <body>
    <%
    User u=new User();
    u.setName("煲仔");
    u.setAge(23);
    u.setHobbies(new String[]{"吃饭","睡觉"});
    User u2=new User();
    u2.setName("xiaoli");
    u.setLover(u2);
    //将对象放入作用域
    request.setAttribute("u",u);//将新建的对象放入request作用域中,通过‘u’关键字找到
    %>
    <!-- Java代码写法 -->
    <%=u.getName() %>
    <!-- 语法1 -->
    ${u.name}
    <!-- 语法2 -->
    ${ u["name"]} <br>

    ${u["hobbies"][1] }
    ${u.hobbies[1] }
    <!-- 语法2通常用来做绑定名 -->
    <%
    request.setAttribute("propname","name");
    %>
    ${u[propname] }<!-- 这里[]内不要写双引号 -->
    <!-- 访问引用类型 -->
    ${u.lover.name }
    <!-- 指定查找范围 -->
    ===========${sessionScope.u.name }
    </body>

    步骤:

      1)定义实体类对象 User -》属性和get,set方法

      2)在jsp中引入该实体类

      3)(前提是作用于中有user对象)使用el表达式访问对象的属性

    语法2:${user["name"]}

      []:可以写下标

         可以写绑定名

    查找规则:

    容器会根据绑定名,依次从pageContext,request,session,application四个作用域中查找,找到了之后会调用getXXX方法,获取对应的属性值,如果找不到,返回"",

    可以指定范围,如pageScope,requestScope,sessionScope,applicationScope

    2)获取请求参数

    如:请求地址

    http://localhost:8080/servlet09/jsp02.jsp?name=bz&hobbies=sing&hobbies=sleep

    ${param.name}   ->获取name参数的值

    ${paramValues.hobbies} ->获取hobbies参数的值  ${paramValues.hobbies[0]}    ${paramValues.hobbies[1]}  

    <body>
        ${param.name }
        ${paramValues.hobbies[0] }
        ${paramValues.hobbies[1] }
    </body>

    3)常规的计算

    *算术运算 + - * / %

    *关系运算>  <  ==

    *逻辑运算 & | !   (不支持&&,||)

    *非空运算  empty

    <body>
        <!-- 算术运算 -->
        ${1+2}
        ${"12"+"12" }
    
        <!-- 关系运算 -->
        ${"ab"=="ab" }
        ${"ab" eq "ab" }
        ${3>2 }
        
        <%
            pageContext.setAttribute("checkCode","abx");
         %>
         <!-- 比较checkCode的值是否等于"abx" -->
         ${"abx" eq checkCode }
        
        ${"ab" != "ab" }
        
        <% request.setAttribute("str","");
            List list =new ArrayList();
            request.setAttribute("list",list);
            request.setAttribute("obj",null);
         %>
         空字符串的运算结果:
         ${empty str }<br/>
         集合内容为空,结果
         ${empty list }<br/>
         对象内容为空,结果
         ${empty obj }<br/>
        访问一个不存在的绑定名
        ${empty aa }
        
    </body>

    3.jstl标签

    jsp头文件<%@page language="java" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    使用步骤:

     1)引入jar包(jstl.jar 和standard.jar)

     2)在jsp界面中,通过taglib指令引入标签库

     3)在jsp页面中使用jstl标签

    1))判断标签

    <c:if test="" var="" scope="" ></c:if>

    test:true/false,返回true 执行标签体,返回false,不执行

    var:指定一个绑定名,绑定值就是表示test的值

    scope:表示指定变量的绑定范围

    2))分支标签

    <c:choose>

      <c:when test=""></c:when>                   //条件,可以有多个

      <c:otherwise></c:otherwise>  //表示上面的情况都不成立,执行这条语句

    </c:choose>

    test:true/false,返回true,执行标签体,如果返回false,继续往下执行

    when至少一个,otherwise最多一个

    3))循环标签

    -循环的对象是集合

    <c:forEach items="" var="" varStatus="" ></c:forEach>

    -循环的对象是数组

    <c:forEach begin="" end="" var=""></c:forEch>

    <body>
        <c:if test="${1==1}">1等于1哦</c:if>
        <c:if test="${1==2}">1等于2哦</c:if>
        
            <%
            User u=new User();
            u.setName("煲仔");
            u.setAge(23);
            u.setHobbies(new String[]{"吃饭","睡觉"});
            User u2=new User();
            u2.setName("xiaoli");
            u.setLover(u2);
            //将对象放入作用域
            request.setAttribute("u",u);//将新建的对象放入request作用域中,通过‘u’关键字找到
         %>
        
        <c:choose>
            <c:when test="${u.age>18}">成年</c:when>
            <c:when test="${u.age>18}">成人</c:when>
            <c:otherwise>未成年</c:otherwise>
        </c:choose>
        
        <% User u1=new User();
            u1.setName("王1");
            User u3=new User();
            u3.setName("王2");
            List<User> us=new ArrayList<User>();
            us.add(u1);
            us.add(u3);
            //将集合绑定到作用域
            request.setAttribute("us",us);
          %>
        
        <table>
        <tr>
            <td>序号</td>
            <td>用户名</td>
        </tr>
        <!-- 
            items:需要遍历的集合
            var:每一次遍历取出的单个对象,相当于us[i]
            varStatus:指定一个绑定名,绑定值是一个Java对象,该对象中,封装了当前遍历的信息,如:遍历的次数(count),遍历的下标(index)
         -->
        <c:forEach items="${us}" var="u" varStatus="rs">
            <tr>
                <td>${rs.count}</td>
                <td>${u.name}</td>
            </tr>
        </c:forEach>
        </table>
    </body>

    案例:

    1)用el表达式和jstl标签改写list和update

    2)实现分页功能

      思路:求总页数:总页数=总记录数%每页显示记录数==0?总页数:总页数+1

          totalPage=allnum%perPage==0?allnum/perPage:allPage/perPage+1;

    6条记录 w1 w2 w3 w4 w5 w6

    每页显示2条记录      查询第一页的记录 w1 w2

    select*from admin limit 'from','size';

    from:从第几条开始查询

    size:查询几条数据

    page:当前页码

    perPage:每页显示记录数 = size

    from=(page-1)*perPage;

  • 相关阅读:
    C++ 子类调用基类构造函数的简单示例
    无锁编程原子操作 概念记录
    C++ 随手bug 小计
    vector size函数也有大大的坑
    vb.net Try 错误导致 For Each 循环中断
    mysql5.7执行sql语句成功,但是报错Err:1055
    python生成EXE可执行文件的方法
    mysql5.7修改my.ini的默认字符集后,无法重启服务
    日历中常用的功能
    Maven的配置
  • 原文地址:https://www.cnblogs.com/yingyigongzi/p/9176624.html
Copyright © 2020-2023  润新知