EL和JSTL的使用目的和方法

目录

一、EL

1、使用目的

使用EL表达式来代替JSP表达式

2、JSP核心语法:JSP表达式 :<%=%>;JSP脚本:<%%>

3、使用方法

(1)EL表达式的作用:

(2)语法:${变量或表达式} 

(3)EL最主要的作用是获得四大域中的数据,格式${EL表达式}

(4)从四个域对象中取某个值${}的查找顺序

二、JSTL

1、使用目的

使用JSTL来代替Java脚本

2、使用方法


一、EL

1、使用目的

去掉JSP中的所有Java代码,仅保留HTML和标签。这么做的好处:

  1. 易于理解:非技术人员,如美工或前端开发者,可以通过标签直观地理解页面结构和功能。
  2. 便于修改:前端开发者可以独立地修改页面元素,而不必理解Java代码。
  3. 促进团队协作:分离Java代码和页面设计,使得不同技能背景的团队成员可以更有效地协同工作。
  4. 标签与Java无关:使用的标签是预定义的,不依赖于Java语言的语法,从而降低了使用门槛。

使用EL表达式来代替JSP表达式

2、JSP核心语法:JSP表达式 :<%=%>;JSP脚本:<%%>

3、使用方法

(1)EL表达式的作用:

向浏览器输出域对象(只能输出域对象)的变量或者表达式计算的结果

(2)语法:${变量或表达式} 

例如:${list}   或者 ${ i == 1}

JSP表达式:<%=request.getAttribute(name)%>

EL表达式替代上面的脚本写为:${requestScope.name}

(3)EL最主要的作用是获得四大域中的数据,格式${EL表达式}

EL获得pageContext域中的值:${pageScope.key};

EL获得request域中的值:${requestScope.key};

EL获得session域中的值:${sessionScope.key};

EL获得application域中的值:${applicationScope.key};

(4)从四个域对象中取某个值${}的查找顺序

依次从page域、request域、session域、application域获取值,在某个域中找到就不再往后找。

就是从小的域范围找,找不到再去大的范围找. 通常情况下不会把名字相同的值放在不同的域里面,所以可以直接省略掉前面的域写成 ${key}

二、JSTL

1、使用目的

JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。jstl出现的目的同EL一样也是要代替JSP页面中的脚本代码。JSTL标准标签库有5个子库,但随着发展,目前常使用的是他的核心库。

使用JSTL来代替Java脚本

2、使用方法

标签引入:<%@taglib uri="tld文件的uri名称"; prefix="简写"%>

                  <%@taglib uri="Oracle Java Technologies | Oracle" prefix="c"%>  

下面的代码里面有EL和JSTL的使用

<%@ page import="com.situ.web.pojo.Student" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%--下面这些Java代码都是为了向域对象里面放数据来测试EL和JSTL语句的--%>
    <%--1、向域对象放数据--%>
    <%
        pageContext.setAttribute("age", 23);
        session.setAttribute("gender", "男");
    %>
    <c:set var="age" value="24" scope="request"></c:set>
    ${age} <br/>
    <hr/>
    <%--2、条件判断--%>
    <c:if test="${gender=='男'}">
        男
    </c:if>
    <c:if test="${gender=='女'}">
        女
    </c:if>
    <hr/>
    <%--3、多条件判断--%>
    <c:set var="score" value="78"></c:set>
    <c:choose>
        <c:when test="${score>=90&&score<=100}">
            优秀
        </c:when>
        <c:when test="${score>=80&&score<90}">
            良好
        </c:when>
        <c:when test="${score>=70&&score<80}">
            一般
        </c:when>
        <c:when test="${score>=60&&score<70}">
            及格
        </c:when>
        <c:otherwise>
            不及格
        </c:otherwise>
    </c:choose>
    <hr/>
    <%--4、集合遍历
        List<Student>
        Map<String, String>
        Map<String, Student>
    --%>
    <c:forEach begin="1" end="10" var="i" step="1">
        ${i}
    </c:forEach>
    <br/>
    <%
        List<Student> list = new ArrayList<>();
        Student student1 = new Student(1, "zhangsan1", 23, "男");
        Student student2 = new Student(2, "zhangsan2", 23, "男");
        Student student3 = new Student(3, "zhangsan3", 23, "男");
        list.add(student1);
        list.add(student2);
        list.add(student3);
        application.setAttribute("list", list);
    %>
    <c:forEach items="${list}" var="student">
        ${student.id}--${student.name}--${student.age}--${student.gender} <br/>
    </c:forEach>
    <hr/>
    <%--Map<String, String>--%>
    <%
        Map<String, String> map = new HashMap<>();
        map.put("cn", "中国");
        map.put("us", "美国");
        request.setAttribute("map", map);
    %>
    <c:forEach items="${map}" var="entry">
        ${entry.key}--${entry.value}<br/>
    </c:forEach>
    <hr/>
    <%--Map<String, Student>--%>
    <%
        Map<String, Student> studentMap = new HashMap<>();
        studentMap.put("student1", student1);
        studentMap.put("student2", student2);
        studentMap.put("student3", student3);
        request.setAttribute("studentMap", studentMap);
    %>
    <c:forEach items="${studentMap}" var="entry">
        ${entry.key}--${entry.value.name}--${entry.value}<br/>
    </c:forEach>
    </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值