栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

EL表达式和JSTL(配合Jsp使用的)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

EL表达式和JSTL(配合Jsp使用的)

El表达式 : 概念 :

expression Language 表达式语言

作用 :

替换和简化jsp页面中java代码的编写

语法 :

${表达式}

注意 : JSP是默认支持EL表达式的

① 在page中 , 添加属性 isELIgnored=“true” 忽略页面中所有的EL表达式② 直接在表达式前边加一个 " "


使用 : 运算 :

运算符 :

算数运算符 : + , - , * , /(div) , %(mod)

比较运算符 : > , < , >= , <= , == , !=

逻辑运算符 : && (and) , || (or) , ! (not)

空运算符 : empty

empty 用于判断字符串 , 集合 , 数组对象是否为null ,或者长度是否为0

只要有一个满足就返回true

使用 :

  ${empty 字符串|集合|数组}
获取值 :

(1)el表达式只能从域对象中获取值 ,

(2)语法 :

①**${域名称.键名}** : 从指定域中获取指定的键名

域名称 :

pageScope --> pageContextrequestScope --> requestsessionScope --> sessionapplicationScope --> application (ServletContext对象)

 <%
     //在域中存储数据
         request.setAttribute("name" , "张三");
         session.setAttribute("age" , "23");
 %>
 获取值
 ${requestScope.name}   <%-- 浏览器输出张三 --%>
     
${sessionScope.age} <%-- 浏览器输出23 --%>
${sessionScope.haha} <%-- 为空浏览器不输出 --%>

②**${键名} *

表示依次从最小的域中查找是否有该键对应的值 , 直到找到为止

③Map集合 :

获取 : Map集合的值

${域名称.键名.key名称}

${requestScope.map.name} ${域名.map[ " key名称 " ] }

${map[“name”]}**

本质上会去调用 , 对象的getter方法

${requestScope.u.birStr} 获取Map集合中的birStr这个元素的内容


<%
 User user = new User();
 user.setName("思尘");
 user.setAge(21);
 user.setBirthday(new Date());
 request.setAttribute("u" , user);
%>
    获取域中值
${requestScope.u}
<%--输出为cn.sichen.domain.User@4d2b3f0b--%>
<%--
通过的是对象的属性来获取
    setter或getter方法 , 去掉set或get , 再将剩余部分 , 首字母变成小写
    setName  -->  Name  -->  name
--%>

${requestScope.u.name} ${requestScope.u.age} ${requestScope.u.birthday} <%--做日期格式化--%> ${requestScope.u.birStr}
User.java中的格式化日期操作
       public String getBirStr(){
           //1.格式化日期对象 ,
           if (birthday != null){
               SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
               //2.返回字符串即可
               return simpleDateFormat.format(birthday);
           }else{
         return "";
           }
       }

    值如果是一个List集合的话 :

    ${ 域名城.键名 [索引] }

    ${requestScope.list[1]}
    

    如果发生脚标越界现象 : 是不会报错的 , 只会返回一个空的字符串

    如果List集合中存储了 , 一个user , 那么在获取user中内容的时候

    ${requestScope.list[1].name}  //这里选择user对应的脚标 , 代表的就是user , 直接使用user中的属性即可
    

隐式对象 :

el表达式中有11个隐式对象

pageContext 能够获取其他八个对象

${pageContext.对象名}

${pageContext.request.contextPath} : 动态获取虚拟目录


JSTL

maven使用JSTL的完整依赖 (这是较老版本的 , 包还是javax )

 
    
      javax.servlet.jsp.jstl
      jstl
      1.2
    
    
    
      taglibs
      standard
      1.1.2
    
    
    
      javax.servlet.jsp.jstl
      jstl-api
      1.2
    
    
    
      org.glassfish.web
      jstl-impl
      1.2
      runtime
    

使用 最新版的jakarta包下的 , 直接导入即可

还需要导入两个standard的依赖包 , 解决 下边的爆红问题

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    jakarta.servlet.jsp.jstl    
    jakarta.servlet.jsp.jstl-api    
    2.0.0



    org.apache.taglibs
    taglibs-standard-impl
    1.2.5
    runtime



    org.apache.taglibs
    taglibs-standard-spec
    1.2.5

概念 :

JavaServer Pages Tag Library : JSP标准标签库

是由Apache组织提供的开源的免费的JSP标签 作用 :

用于简化和替换jsp页面上的代码

步骤:

(1) 导入jstl相关的jar包

(2) 引入标签库

taglib 指令 : <%@taglib prefix=“c” uri="…路径" %>

c : 是前缀 , uri 填的是路径

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--这个是高版本的使用这个 , 一般约定俗成的前缀为 c --%>

(3) 使用标签库


常用的JSTL标签 : (1) if (相当于java代码中的 if 语句)
<%
c:if标签    
	1.属性        
    	* test 必须属性 , 接收boolean表达式            
    	如果表达式为true , 则显示if标签体的内容 , 如果为false , 则不			显示标签体内容        
    	* 一般情况下 : test属性值会结合EL表达式来使用    
    2.注意        
        * c:if 没有else语句 , 想要表达另一种情况 , 再写一个c:if
%>

    
        hello jstl~~~
    
    
<% //判断request域中的一个list是否为空 , 如果不为null则显示遍历集合 List list = new ArrayList(); list.add("aaa"); request.setAttribute("list" , list); request.setAttribute("number" , 6); %> 遍历集合
${requestScope.number}为奇数! ${requestScope.number}是偶数!
(2) choose (相当于java代码中的 switch 语句)

<%--
    完成数字编号对应星期几案例
        1.域中存储一数字
        2.使用choose取出数字      相当于switch声明
        3.使用when标签对数字判断   相当于case声明
        4.otherwise 标签做其他情况的声明 ,  相当于default声明
--%>
    <%
        request.setAttribute("number" , 70);
    %>

今天是星期一 !
今天是星期二 !
今天是星期三 !
今天是星期四 !
今天是星期五 !
今天是星期六 !
今天是星期七 !
输入有误!



(3) foreach (相当于java代码中的 for 循环)

<%--
    foreach : 相当于java代码的for循环
        1.完成重复的操作
            for (int i = 0 ; i < 10 ; i ++){}
        * 完成重复操作有一组属性 ,
            begin : 开始值
            end : 结束值
            var : 临时变量
            step : 步长  相当于for循环中的++操作 , 这里规定一次循环加多少值
            varStatus : 指定一个值,使用这个值调index 和 count两个属性
               - index : 容器中元素的索引从0开始 (在不同循环中使用 , 展示的是实际变量的值)
               - count : 循环次数
        2.遍历容器
            List list;
            for(User user : list){
            }
        * 完成遍历容器有一组属性 :
         items : 容器对象  相当于for(User user : list)中的list
         var   : 容器中的元素的临时变量  相当于for(User user : list)中的user
--%>
    
            ${i} index: ${s.index}  count : ${s.count}
<% List list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); request.setAttribute("list" , list); %> ${str} index : ${c.index} count : ${c.count}
<%--输出为 : aaa index : 0 count : 1 bbb index : 1 count : 2 ccc index : 2 count : 3 --%>

案例 : 展示list集合中的数据到一个表格

需求 :

在request域中有一个存有user对象的list集合 , 需要使用jstl加el将集合数据展示到jsp页面的表格table中


    <%
        List list = new ArrayList();
        list.add(new User("思尘" , 21 , new Date()));
        list.add(new User("尘" , 21 , new Date()));
        list.add(new User("爱思尘" , 21 , new Date()));
        request.setAttribute("list" , list);
    %>
    
            
                
                
编号 姓名 年龄 生日
${s.count} ${user.name} ${user.age} ${user.birStr}
${s.count} ${user.name} ${user.age} ${user.birStr}
 
        
        
            
                ${s.count}
                ${user.name}
                ${user.age}
                ${user.birStr}
            
        
    

```
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759995.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号