EL&JSTL

目录

四大域对象:

为什么要使用EL:

那么,EL是什么?

EL能做什么?

EL语法:

EL优点:

EL运算符:

        1.[ ]

                 2."."

EL隐式对象:

        1.作用域访问对象

        2.参数访问对象

        3.JSP隐式对象

使用el获取集合中的对象

什么是JSTL?        

JSTL的优点:

jstl使用步骤:        

JSTL标准标签库(核心标签库)       

            1.通用标签

            2.条件标签

            3.迭代标签              


四大域对象:

        1.pageContext:属性的作用范围仅限当前的jsp页面(范围最小)
        2.request:属性的

作用范围仅限同一个请求(转发有效)
        3.session:属性的作用范围仅限于一次会话,浏览器打开直到关闭称为一次会话(在此期间会话不失效)
        4.application:属性的作用范围仅限于当前web应用(范围最大)

tip:四个域对象作用分别是从小到大的:pageContext<request<session<application
同理:优先级也是从小到大的,所以pageContex是优先级最大的。


为什么要使用EL:


        1.在以往使用javabean时,获取的属性必须要实例化,还需要强转类型
        2.在页面出现逻辑错误时,将会导致代码执行报错,并且在JSP编译时也会产生错误
        --这时我们就会想到使用EL简化表达式


那么,EL是什么?

        EL即expression language(表达式语言)


EL能做什么?

简而言之,就是简化代码,用于替换JSP页面中的复杂代码
    

EL语法:

        1.以"${"作为开始,结尾于"}"
        2.${ EL expression}
        3.直接使用变量名获取值:${ bean.name} or ${bean['name']}

EL优点:

        1.能够自动转换类型,对于数据的限制就没有那么的强烈了
        2.使用简便,比较在JSP中嵌入Java代码这样就显得更加简单

EL运算符:

        1.[ ]

 在session保存的元素(list:goods):${sessionScope.goods[1}:获取对象集合中的第二位元素

       2."."

 获得对象属性:${user.name}<==>${user[name]}


EL隐式对象:

        1.作用域访问对象

            (1)pageContextScope:返回页面范围的变量名,这些变量已经映射至对应的值
            (2)requestScope:返回请求范围的变量名,这些变量已经映射至对应的值
            (3)sessionScope:返回会话范围的变量名,这些变量已经映射至对应的值 
            (4)applicationScope:返回应用范围的变量名,并且将变量映射至对应的值

        2.参数访问对象

            (1)param:返回客户端的请求参数的字符串
            (2)paramValues:返回映射至客户端的请求参数的一组值

        3.JSP隐式对象

            (1)pageContext:提供对用户请求和页面信息的访问

使用el获取集合中的对象

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.pojo.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<%
 //List
    List<User>list=new ArrayList<User>();
    pageContext.setAttribute("us",list);
 
%>
<body>
    User:${user}
<br>
<%--${user.getName()} --%>
    名字: ${user.name}
<br>
<%--${user.getPwd()} --%>
    密码:  ${user.pwd}
    <br>
    <%--判断是否为空 --%>
    ${us.size()==0}
    ${empty us}
    ${not empty us}
</body>
</html>


    在简化代码之后需要使用到JSTL标签来进行逻辑判断


什么是JSTL?
        

JSTL(JavaServerPages Standerd Tag Library)JSP标准标签库

JSTL的优点:


        1.可用于编写jsp的各种动态标签
        2.提供一组标准标签

jstl使用步骤:
        

        1.在JSP页面添加taglib指令

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


        2.uri指的是引进来是:http://java.sun.com/jsp/jstl/core
        3.prefix指的是标签库的名字,一般都是"c"


    

JSTL标准标签库(核心标签库)       

            1.通用标签


                (1)set:设置指定范围内的变量值
                (2)remove:计算表达式并将结果输出显示
                (3)out:删除指定范围的变量

<%--设置 --%>
<c:set scope="page" value="1" var="a"></c:set>
<%--输出 --%>
<c:out value="${a}"></c:out>
<%--移除 --%>
<c:remove var="a" scope="page"></c:remove>


            

            2.条件标签

if:用于判断条件是否成立,用法与Java的用法是一致的。
            

<%@page import="java.util.ArrayList"%>
<%@page import="com.zking.pojo.Goods"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test=""></c:if>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL基本标签</title>
</head>
<body>
<%
   //yy这个参数是控制当前用户是否已经登录
   String yy=request.getParameter("yy");
   pageContext.setAttribute("yy", yy);
%>
 
<%--如果登录了显示你好 --%>
<%--如果没有登录了显示登录按钮 --%>
 
<c:if test="${yy!=null}">
<h1>欢迎使用该系统</h1>
<h1>😊😊😊😊😊😊</h1>
</c:if>
 
<c:if test="${yy==null}">
<h1>你现在还没有登录,请点击下面的按钮</h1>
<button>请进行登录</button>
</c:if>
</body>
</html>

            3.迭代标签
              

  • forEach:对集合中的对象进行遍历
  • varName指定数据变量名
  • varStatus指定var对象的信息
  • begin指的是遍历开始的位置
  • end指的是遍历结束的位置
  • step指的是迭代的次数

        使用迭代标签显示商品列表

<%@page import="java.util.ArrayList"%>
<%@page import="com.zking.pojo.Goods"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test=""></c:if>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL基本标签</title>
</head>
<body>
<%
 
   List<Goods> list=new ArrayList<>();
   for(int i=0;i<5;i++){
	   Goods g=new Goods();
	   g.setGoodsId(i);
	   g.setGoodsName("小米手机"+i);
	   g.setGoodsType("✌"+i);
	   g.setGoodsPrice(i*100.0);
	   list.add(g);
   }
   pageContext.setAttribute("list", list);
%>
 
<%--商品的遍历 --%>
<table border>
  <tr>
      <th>商品编号</th>
      <th>商品名字</th>
      <th>商品类型</th>
      <th>商品价格</th>
 </tr>
 <%
   for(Goods goods:list){
	   goods.getGoodsName();
   }
 %>
 <c:forEach items="${list}" var="goods">
 <tr>
      <th>${goods.goodsId}</th>
      <th>${goods.goodsName}</th>
      <th>${goods.goodsType}</th>
      <th>${goods.goodsPrice}</th>
 </tr>
 </c:forEach>
</table>
</body>
</html>

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一麟yl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值