Javaweb--- EL表达式 JSTL标准标签库

一、EL表达式(expression language): 语法  ${...}

jsp中page指令有一个属性叫isELIgnored, 用来标记此页面是否忽略EL表达式, 默认为false
举个例子:
  常规写法: <%=session.getAttribute("test")%>
  EL表达式写法: ${sessionScope.test}或者${sessionScope["test"]}

实例1:EL变量

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    <%
        session.setAttribute("test", "山东威海");
        request.setAttribute("test", "山东");
    %>
    ${
    sessionScope.test }
    

  $
{ test }

知识点:EL变量

当前面不指定哪个作用域下面的值的时候, 会默认按照下面的顺序去找, 如果都找不到, 就输出一个空字符串
pageScope --> requestScope --> sessionScope --> applicationScope

实例2:[ ]和.

package com.hanqi.model;

public class User {
    private String name;
    private int age;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
    
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.hanqi.model.User"%>




Insert title here


    <%
        User u = new User();
        u.setName("小明");
        u.setAge(20);
        session.setAttribute("user", u);
    %>
    

EL表达式通过[]取属性

$
{ user["name"] } ${ user["age"] }

EL表达式通过.取属性

$
{ user.name } ${ user.age }

Javaweb--- EL表达式 JSTL标准标签库_第1张图片

知识点:[]和. 大多数情况下可以通用, 除了两种情况中

1, 表达式中含有特殊字符
  错误: ${sessionScope.test_name} 

  正确: ${sessionScope["test_name"]}
2, 需要动态获取属性
  sessionScope["test"]
  [] 中可以放一个变量名, 但是点的后面不行

实例3:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.ArrayList"%>




Insert title here


    <%
        ArrayList arr = new ArrayList();
        arr.add("北京");
        arr.add("上海");
        arr.add("南京");
        arr.add("深圳");
        arr.add("广州");
        arr.add("杭州");

        session.setAttribute("dis", arr);
    %>
    ${
    dis[2] }

知识点:在EL表达式中[]也可以用来表示数组或者集合中的索引值

实例4:EL自动类型转换

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    
<% String num = request.getParameter("num"); System.out.println(num); %> $
{ param.num + 20 }

每一次提交,都会自动添加20,然后把值输出

二、EL运算符

算术运算符: +    -  *  /或者div    %或者mod
关系运算符: ==或者eq   !=或者ne     <或者lt >或者gt     <=或者le     >=或者ge
逻辑运算符: &&或者and      ||或者or      !或者not
验证运算符: empty(empty 对于 null和"" 的判断都是返回true)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    <%
        session.setAttribute("test", "山东威海");
    %>
    

EL运算符

$
{ 3 + 5 }
$
{ 5 div 2 }
$
{ 3 == 5 }
$
{ 7 lt 8 }
$
{ empty test }
$
{ empty test123 }
=================
empty对null和空字符串的判断
empty对空字符串的判断:$
{ empty ""}
empty对空的判断:$
{ empty null}
=================

Javaweb--- EL表达式 JSTL标准标签库_第2张图片

三、JSTL(JSP Standard Tag Library)标准标签库:

实例1:c:out  标签

输出常量
value---直接赋值
输出变量
default---默认值
escapeXml---控制转义字符(默认为true, 如果需要转义, 设置为false)

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




Insert title here



    <%
        session.setAttribute("test", "你好,我是session的一行字");
        request.setAttribute("test", "你好,我是request的一行字");
    %>
    

c:out 输出标签



test }">
sessionScope.test }">
test1 }">


Javaweb--- EL表达式 JSTL标准标签库_第3张图片

实例2:c:set标签

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>




Insert title here



    

c:set标签


tt }">

 

实例3:remove----只能用于页面内的变量移除

移除某个变量
var: 指定需要remove的那个变量名
scope: 两个scope中的变量名有重复的时候, 可以通过这个属性来确定移除的是哪个, 如果不指定, 则全部remove掉

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>




Insert title here



    <%
        session.setAttribute("test", "你好,我是session的一行字");
        request.setAttribute("test", "你好,我是request的一行字");
    %>
    

c:remove标签



t1 }">
empty t1 }">

session: sessionScope.test }">
request: requestScope.test }">

session: sessionScope.test }">
request: requestScope.test }">
empty test }">

Javaweb--- EL表达式 JSTL标准标签库_第4张图片

 

实例4:c:catch标签(相当于try...catch...)

可以在这个标签中放其他标签, 只有一个属性var

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>




Insert title here



    <%!public void myexception() {
    
        throw new RuntimeException("这是瞎写的一个异常!");
    }%>
    

c:catch标签


<% myexception(); %> error }">

实例5:c:if--->流程控制标签


choose---以下三个标签通常一起使用, 类似于switch
when
otherwise--可以不写

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>




Insert title here



    <%
        session.setAttribute("score", 90);
    %>
    

c:if 标签


score>60 }">
score>60&&score<70 }"> score>70&&score<90 }"> score<60 }">

Javaweb--- EL表达式 JSTL标准标签库_第5张图片

实例6:小综合运用(通过输入成绩,可以立即判断在哪个等级范围内)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>




Insert title here



    
param.num}" /> <% session.setAttribute("score", 66); %>

c:if标签

<%--
score>60}"> --%>
score>60&&score<70}"> score>70&&score<80}"> score<60}">

实例7:c:forEach ---->循环控制标签

forEach

var: 设定一个变量值来存储从数组或者集合中遍历出来的值

items: 指定需要遍历的数组或者集合

begin, end: 指定需要遍历的起始位置

step: 每次遍历跳过的个数, 默认值是1

varStatus: 通过index(在原集合中的索引值), count(当前第几个), first(是否是第一个), last(是否是最后一个)来描述begin和end子集中的状态

注意first和last, 是判断的是否在输出结果中的第一个或者最后一个, 并不是原来的集合中

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




Insert title here



    <%
        ArrayList arr = new ArrayList();
        arr.add("北京");
        arr.add("上海");
        arr.add("南京");
        arr.add("深圳");
        arr.add("广州");
        arr.add("杭州");

        session.setAttribute("dis", arr);
    %>
    

c:forEach 标签


全部遍历

dis }"> d }">

部分遍历

dis }" step="2"> d }">

部分遍历2

dis }" begin="2" end="4"> d }">

部分遍历3

dis }" begin="2" end="4" varStatus="dissta"> d }">
varStatus--index属性:dissta.index
}">
varStatus--count属性:dissta.count
}">
varStatus--first属性:dissta.first
}">
varStatus--last属性:dissta.last
}">



Javaweb--- EL表达式 JSTL标准标签库_第6张图片

Javaweb--- EL表达式 JSTL标准标签库_第7张图片

实例8:forTokens(相当于字符串的split()方法)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>




Insert title here



    <%
        session.setAttribute("teststring", "0533-1234567890-110");
    %>

    

c:forToken 标签


teststring }" delims="-" var="r"> r }">
<

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>Insert title here

<%session.setAttribute("score", 66);%>

c:if标签

<%--
--%>

你可能感兴趣的:(Javaweb--- EL表达式 JSTL标准标签库)