EL表达式&JSTL标签库2

简介: EL表达式&JSTL标签库2

e) EL表达式的11个隐含对象

EL表达式中11个隐含对象,是EL表达式中自己定义的,可以直接使用。


i.EL获取四个特定域中的属性


scope.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/17
  Time: 下午 02:02
  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>
    <%
        pageContext.setAttribute("key1","pageContext1");
        pageContext.setAttribute("key2","pageContext2");
        request.setAttribute("key2","request");
        session.setAttribute("key2","session");
        session.setAttribute("key2","session");
        application.setAttribute("key2","application");
    %>
    ${ applicationScope.key2 }
</body>
</html>

ii. pageContext对象的使用

  1. 协议:
  2. 服务器ip:
  3. 服务器端口:
  4. 获取工程路径:
  5. 获取请求方法:
  6. 获取客户端ip地址:
  7. 获取会话的id编号:

pageContext.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/17
  Time: 下午 02:09
  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>
<%--    ${ pageContext } //org.apache.jasper.runtime.PageContextImpl@6a8c1e75--%>
    <%--
    request.getScheme() 它可以获取请求的协议
    request.getServerName() 它可以获取请求的服务器ip或域名
    request.getServerPort() 它可以获取请求的服务器端口
    request.getContextPath() 它可以获取工程路径
    request.getMethod() 它可以获取请求方法
    request.getRemoteHost() 它可以获取客户端ip地址
    session.getId() 它可以获取会话的id编号(唯一标识)
    --%>
    <%
        //使用技巧
        pageContext.setAttribute("req",request);
    %>
    <%=request.getScheme()%><br/>
    1.协议:${req.scheme}<br/>
    <%=request.getServerName()%><br/>
    2.服务器ip:${pageContext.request.serverName}<br/>
    <%=request.getServerPort()%><br/>
    3. 服务器端口:${pageContext.request.serverPort} <br/>
    <%=request.getContextPath()%><br/>
    4. 获取工程路径: ${pageContext.request.contextPath}<br/>
    <%=request.getMethod()%><br/>
    5. 获取请求方法:${pageContext.request.method}<br/>
    <%=request.getRemoteHost()%><br/>
    6.  获取客户端ip地址:${pageContext.request.remoteHost}<br/>
    <%=session.getId()%><br/>
    7.获取会话的id编号:${pageContext.session.id}<br/>
</body>
</html>

iii. EL表达式其他隐含对象的使用

param     Map<String,String>    它可以获取请求参数的值
paramValues   Map<String,Stringll>  它也可以获取请求参数的值,获取多个值的时候使用。
header      Map<String, String>   它可以获取请求头的信息
headerValues  Map<String,String[]>  它可以获取请求头的信息,它可以获取多个值的情况
cookie      Map<String, Cookie>   它可以获取当前请求的Cookie信息
initParam   Map<String,String>    它可以获取在web.xm/中配置的context-param>上下文参数


other_el_obj.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/17
  Time: 下午 02:27
  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>
<%-- http://localhost:8080/09_EL_JSTL/other_el_obj.jsp?username=wzg168&password=666666&hobby=java&hobby=cpp --%><%--打开Tomact,Ctrl+鼠标左键--%>
    输出请求参数username的值:${ param.username }<br/>
    输出请求参数password的值:${ param.password }<br/>
    ${ param.hobby }<br/>
    输出请求参数username的值:${ paramValues.username[0]}<br/>
    输出请求参数hobby的值:${ paramValues.hobby[0]}<br/>
    输出请求参数hobby的值:${ paramValues.hobby[1]}<br/>
    <hr/>
    输出请求头【User-Agent】的值:${ header['User-Agent'] }<br/>
    输出请求头【Connection】的值:${ header['Connection'] }<br/>
    输出请求头【User-Agent】的值:${ headerValues['User-Agent'][0] }<br/>
    <hr/>
    获取Cookie的名称:${ cookie.JSESSIONID.name }<br/>
    获取Cookie的值:${ cookie.JSESSIONID.value }<br/>
    <hr/>
    输出&lt;Context-param&gt;username的值:${ initParam.username }<br/><%--配置web.xml要重新部署才能生效--%>
    输出&lt;Context-param&gt;url的值:${ initParam.url }<br/>
</body>
</html>

2、JSTL标签库(次重点)

【尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版-哔哩哔哩】https://b23.tv/Zcydn7
JSTL标签库全称是指JSP Standard Tag LibranyISP标准标签库。是一个不断完善的开放源代码的JSP标签库。


EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更佳简洁。


JSTL由五个不同功能的标签库组成。


在jsp标签库中使用laglib指令引入标签库




f)JSTL标签库的使用步骤

1、先导入jst标签库的jar包。

下载地址:https://download.csdn.net/download/qq_51625007/21117479
taglibs-standard-impl-1.2.5.jar

taglibs-standard-spec-1.2.5.jar

2、第二步,使用tagib指令引入标签库。

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

3、配置

JSTL标签库配置

g)core核心库使用

i. <c:set/>

作用:set标签可以往域中保存数据

ii. <c:if/>

作用:if 标签用来做if判断

iii. <c:choose><c:when><c:otherwise>标签

作用:多路判断,跟switch…case…default 非常接近

core.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/17
  Time: 下午 03:09
  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>
<%--
    i.<c:set/>
    作用:set标签可以往域中保存数据
    域对象.setAttribute(key,value);
    保存在哪个域
    scope 属性设置保存在哪个域
        page 表示 PageContext 域(默认)
        request 表示 Request 域
        session 表示 Session 域
        application 表示 ServletContext 域
    var属性设置key是多少
    value属性设置值
--%>
    保存之前:${ requestScope.abc }<br/>
    <c:set scope="request" var="abc" value="abcValue"/>
    保存之后:${ requestScope.abc }<br/>
    <hr>
<%--
    ii.<c:if/>
    if 标签用来做if判断
    test属性表示判断的条件(使用EL表达式输出)
--%>
    <c:if test="${ 12 == 12 }">
        <h1>12等于12</h1>
    </c:if>
    <c:if test="${ 12 != 12 }">
    <h1>12等于12</h1>
    </c:if>
    <hr/>
<%--
    iii. <c:choose><c:when><c:otherwise>标签
    作用:多路判断,跟switch...case...default 非常接近
    choose标签开始选择判断
    when标签表示每一种判断情况
        test表示当前判断情况的值
    otherwise标签表示剩下的情况
    <c:choose><c:when><c:otherwise>标签使用时需要注意的点:
        1、标签里不能使用HTML注释,要使用jsp注释
        2、when标签的父标签一定要是choose标签
---%>
    <%
        request.setAttribute("height",178);
    %>
    <c:choose>
        <c:when test="${ requestScope.height > 196 }">
            <h2>小巨人</h2>
        </c:when>
        <c:when test="${ requestScope.height > 180 }">
            <h2>很高</h2>
        </c:when>
        <c:when test="${ requestScope.height > 170 }">
            <h2>还可以</h2>
        </c:when>
        <c:otherwise>
            <h2>剩下小于170的情况</h2>
            <c:choose>
                <c:when test="${ requestScope.height > 160 }">
                    <h2>大于160</h2>
                </c:when>
                <c:when test="${ requestScope.height > 150 }">
                    <h2>大于150</h2>
                </c:when>
                <c:when test="${ requestScope.height > 140 }">
                    <h2>大于140</h2>
                </c:when>
                <c:otherwise>
                    <h2>其他小于140的情况</h2>
                </c:otherwise>
            </c:choose>
        </c:otherwise>
    </c:choose>
</body>
</html>

iv.<c:forEach/>

作用:遍历输出使用。

1.遍历1到10,输出

2.遍历object数组

3. 遍历Map集合

4.遍历List集合–list中存放Student类,有属性:编号,用户名,密码,年龄,电话信息

在pojo包下

Student

package com.pojo;
public class Student {
//  有属性:编号,用户名,密码,年龄,电话信息
    private Integer id;
    private String username;
    private String password;
    private int age;
    private String phone;
    public Student() {
    }
    public Student(Integer id, String username, String password, int age, String phone) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.age = age;
        this.phone = phone;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", age='" + age + '\'' +
                ", phone='" + phone + '\'' +
                '}';
    }
}

forEach.jsp

<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.List" %>
<%@ page import="com.pojo.Student" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/17
  Time: 下午 05:35
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <style>
        table{
            border: 1px black solid;
            width: 600px;
            border-collapse: collapse;
        }
        td,th{
            border: 1px black solid;
        }
    </style>
</head>
<body>
    <%--1.遍历1到10,输出
        begin 属性设置开始的索引
        end 属性设置结束的索引
        var 属性表示循环的变量(也是当前正在遍历的数据)
        for(int i=0;i<10;i++)
    --%>
    <table border="1">
        <c:forEach  begin="1" end="10" var="i">
        <tr>
            <td>第${ i }行</td>
        </tr>
        </c:forEach>
    </table>
    <hr/>
    <%--2.遍历object数组
        for(Object : arr)
        items 表示遍历的数据源(遍历的集合)
        var 表示遍历到的数据
    --%>
    <%
        request.setAttribute("arr",new String[]{"18610541354","18688886666","18699998888"});
    %>
    <c:forEach items="${requestScope.arr}" var="item">
        ${ item } <br/>
    </c:forEach>
    <hr/>
    <%--    --%>
    <%
        Map<String,Object> map=new HashMap<>();
        map.put("key1","value1");
        map.put("key2","value2");
        map.put("key3","value3");
//        for(Map.Entry<String,Object> entry: map.entrySet()){
//
//        }
        request.setAttribute("map",map);
    %>
    <c:forEach items="${ requestScope.map }" var="entry">
        <h1>${ entry.key } = ${ entry.value }<h1/>
    </c:forEach>
    <hr/>
    <%--4.遍历List集合--list中存放Person类,有属性:编号,用户名,密码,年龄,电话信息
    --%>
     <%
          List<Student> studentList=new ArrayList<>();
          for (int i=1;i<=10;i++){
              studentList.add(new Student(i,"username"+i,"pass"+i,18+i,"phone"+i));
          }
          request.setAttribute("stus",studentList);
     %>
    <table>
        <tr>
            <th>编号</th>
            <th>用户名</th>
            <th>密码</th>
            <th>年龄</th>
            <th>电话</th>
            <th>操作</th>
        </tr>
    <%--
        items 表示遍历的集合
        var 表示遍历到的数据
        begin 表示遍历开始的索引值
        end 表示遍历结束的索引值
        step 表示遍历的步长值 类似i++,i+=2
        for(int i=1;i<10;i+=2)
        varStatus 属性表示当前遍历到的数据的状态
    --%>
    <c:forEach begin="2" end="7" step="2" varStatus="status" items="${requestScope.stus}" var="stu">
         <tr>
             <td>${stu.id}</td>
             <td>${stu.username}</td>
             <td>${stu.password}</td>
             <td>${stu.age}</td>
             <td>${stu.phone}</td>
             <td>删除/修改</td>
<%--             <td>${status.index}</td>--%>
         </tr>
    </c:forEach>
    </table>
</body>
</html>

varStatus属性所实现的接口






相关文章
|
8月前
EL表达式和Jstl常见的用法
EL表达式和Jstl常见的用法
|
存储 Java
JavaWeb03(域对象&EL表达式&JSTL标签)
JavaWeb03(域对象&EL表达式&JSTL标签)
|
8月前
|
Java 数据库
el表达式与jstl的用法
el表达式与jstl的用法
|
JavaScript Java 应用服务中间件
EL表达式&JSTL标签库1
EL表达式&JSTL标签库1
54 0
|
Java
配置JSTL标签库
配置JSTL标签库
115 0
|
XML SQL Java
JavaWeb--EL表达式&JSTL 标签库
JavaWeb--EL表达式&JSTL 标签库
78 0
QGS
|
存储 SQL XML
浅谈EL表达式和JSTL常用标签
EL表达式,全称是Expression Language。意为表达式语言。它是Servlet规范中的一部分,是JSP2.0规范加入的内容。其作用是用于在JSP页面中获取数据,从而让我们的JSP脱离java代码块和JSP表达式。
QGS
103 0
|
JavaScript Java
【JavaWeb】EL表达式
本期主要介绍EL表达式
138 0
【JavaWeb】EL表达式
|
SQL XML Java
JSTL标签库(JSP标准标签库)
JSTL(JSP Standard Tag Library,核心标签库)是 JSP 标签的集合,它封装了 JSP 应用的通用核心功能。 JSP 标签是一组与 HTML 标签相似,但又比 HTML 标签强大的功能标签。JSTL 用来简化 JSP 开发,可以使我们不用嵌入 Java 代码就能够开发出复杂的 JSP 页面。 JSTL 包含 5 类标签库:core 标签库、fmt 标签库、fn 标签库、XML 标签库和 SQL 标签库。这 5 类标签库基本覆盖了 Web 开发中的所涉及的技术展示。
springMvc36-JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
springMvc36-JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
110 0

热门文章

最新文章