JSP-EL表达式和JSTL标签库

JSTL仅是JSP表达式语言,而EL既是HTML也是JSP表达式语言,全称是Expression Language。
基本语法格式:
${ EL Expression}

${"Hello world"}  //输出字符串常量
${str} //输出字符串变量str的值
${3+2} //输出3+2的结果
package demo;
/**
 * 定义一个用户类
 * @author Administrator
 *
 */
public class User {
    private int id;
    private String name;
    private String classname;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getClassname() {
        return classname;
    }
    public void setClassname(String classname) {
        this.classname = classname;
    }
    public User(int id, String name, String classname) {
        this.id = id;
        this.name = name;
        this.classname = classname;
    } 
    public User(){};


}

<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="demo.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
    <%--JSTL中的 "hello world!" />
    set var="a" value="David" />
    "${a}" /> --%>
    <%
request.setAttribute("user", new User(1, "张三", "1班"));
List list = new ArrayList();
list.add(new User(2, "李四", "2班"));
list.add(new User(1, "张三", "1班"));
list.add(new User(3,"王五","3班"));
pageContext.setAttribute("List", list);
Map<String,User>map=new HashMap<String,User>();
map.put("u1", new User(3,"王五","3班"));
pageContext.setAttribute("Map", map);
    %>
    ${user.classname}
    <br /> 
    ${List[0].name} 
    <br/>
    ${Map["u1"].name}
    <br/>
    ${Map.u1.name }
    <br/>
    ${null}
    <%
        String str = null;
        out.println(str);
    %>
<%--JSTL中的 "i" begin="1" end="5" step="2">
    "${i}"/>
    
    
"1" end="3" step="1" varStatus="i">
  • ${i.index}

  • "item" items="${List}" varStatus="status" > a ${status.begin}:${item.name} --%> body> html>

    【注意】①,②两处虽然写法不同,但是“.”与“ [ ]”都可以访问对象的属性。
    不过,当属性的名字包含有空格,点号等复杂符号时,使用“.”来访问对象的属性将会出现异常。

    操作符

    算术操作符(+,-,*,/,%)
    逻辑操作符(&&,||,!或and,or,not)
    XML操作符
    lt <
    le <=
    gt >
    ge >=
    比较操作符(>,>=,<,<=,==,!==)—可以自动转换数据类型
    空操作符(empty)//当值为null时返回true
    JSP-EL表达式和JSTL标签库_第1张图片

    EL中的函数

    JSP EL允许您在表达式中使用函数。这些函数必须被定义在自定义标签库JSTL中,所以在使用这些函数之前必须在JSP中引入标准函数的声明
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

    ${fn:length("Get my length")}

    下面是JSTL中自带的方法列表以及其描述
    JSP-EL表达式和JSTL标签库_第2张图片
    JSP-EL表达式和JSTL标签库_第3张图片
    JSP-EL表达式和JSTL标签库_第4张图片

    EL隐含对象

    EL支持下表列出的隐含对象:
    JSP-EL表达式和JSTL标签库_第5张图片

    JSP-EL表达式和JSTL标签库_第6张图片

    pageContext对象

    是JSP中pageContext对象的引用。通过pageContext对象,可以访问request对象。比如,访问request对象传入的查询字符串:

    ${pageContext.request.queryString}

    Scope对象
    pageScope,requestScope,sessionScope,applicationScope变量用来访问存储在各个作用域层次的变量。

    比如,需要显式访问在applicationScope层的box变量,可以这样来访问:applicationScope.box。

    param和paramValues对象

    它们用来访问参数值,通过使用request.getParameter方法和request.getParameterValues方法。

    举例来说,访问一个名为order的参数,可以这样使用表达式:${param.order},或者${param["order"]}

    接下来的例子表明了如何访问request中的username参数:

    <%
    request.setAttribute("username","jack");
    %>
    <p>${param["username"]}p>

    【注】param对象返回单一的字符串,而paramValues对象则返回一个字符串数组。

    header和headerValues对象
    它们是用来访问信息头,通过使用 request.getHeader方法和request.getHeaders方法。举例来说,要访问一个名为user-agent的信息头,可以这样使用表达式:${header.user-agent},或者${header["user-agent"]}

    自定义函数

    你可能感兴趣的:(JAVA)