博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EL表达式与JSTL标签讲解
阅读量:3959 次
发布时间:2019-05-24

本文共 6687 字,大约阅读时间需要 22 分钟。

EL表达式与JSTL标签讲解

一.EL表达式

1.概念

EL表达式全称:Expression Language,可用于替换和简化jsp页面的java代码。

2.语法与使用

I.语法

EL表达式语法十分简单:${表达式}

我们先来看一个简单的例子有一个直观的概念:

在这里插入图片描述
访问结果:
在这里插入图片描述
这说明表达式被解析了,当然如果不想被解析我们有两种方式:
1.方式1
在这里插入图片描述
访问结果:
在这里插入图片描述
2.方式2
在这里插入图片描述
访问结果:
在这里插入图片描述

II.使用

他的使用分为运算获取值

1.运算

  1. 算数运算符: + - * /(div) %(mod)
  2. 比较运算符: > < >= <= == !=
  3. 逻辑运算符: &&(and) ||(or) !(not)
  4. 空运算符: empty
    功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
    * ${empty list}:判断字符串、集合、数组对象是否为null或者长度为0
    * ${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且长度

关于空运算符我们在获取值这一块来演示

<%@ page contentType="text/html;charset=UTF-8" language="java"%>      $Title$     1.算数运算符: + - * /(div) %(mod)
${1+1}
${1-1}
${2*2}
${3/3} ${3 div 3}
${9%2} ${9 mod 2}
2.比较运算符: > < >= <= == !=
${1>2}
${1<2}
${2>=2}
${2<=2}
${2==2}
${2!=2}
3. 逻辑运算符: &&(and) ||(or) !(not)
${true&&false}
${2==0 and 2==1}
${2==1 || 2==2}
${2==1 or 2==2}
${!(2==2)}
${not(2!=2)}

在这里插入图片描述

2.获取值
el表达式只能从域对象中获取值,这里推荐先学习再看下面的内容。

2. 语法:	1. ${
域名称.键名}:从指定域中获取指定键的值 * 域名称: 1. pageScope --> pageContext 2. requestScope --> request 3. sessionScope --> session 4. applicationScope --> application(ServletContext) 2. ${
键名}:表示依次从最小的域(就是从上面的顺序依次找)中查找是否有该键对应的值,直到找到为止。 3. 获取对象、List集合、Map集合的值 1. 对象:${
域名称.键名.属性名} * 本质上会去调用对象的getter方法 2. List集合:${
域名称.键名[索引]} 3. Map集合: * ${
域名称.键名.key名称} * ${
域名称.键名["key名称"]} 4. 隐式对象: * el表达式中有11个隐式对象 * pageContext: * 获取jsp其他八个内置对象 * ${
pageContext.request.contextPath}:动态获取虚拟目录

下面我们来看几个例子即可。

1.${域名称.键名}

<%@ page contentType="text/html;charset=UTF-8" language="java"%>      $Title$      
<% //在域中存储数据 request.setAttribute("name","jack"); session.setAttribute("age", "125"); %> ${requestScope.name} ${sessionScope.age} ${sessionScope.salkska}

在这里插入图片描述

上面我们发现 ${sessionScope.salkska}是不存在的但是没有报错
2.${键名}

<%@ page contentType="text/html;charset=UTF-8" language="java"%>      $Title$        <%      //在域中存储数据      request.setAttribute("name","jack");      session.setAttribute("name","rose");    %>  ${name}
${name}

在这里插入图片描述

我们发现显示了jack而非rose,原因在于依次从最小的域中查找是否有该键对应的值,直到找到为止。
3.获取对象、List集合、Map集合的值
首先我们新建一个User类:

public class User {
private String name; private int age; private Date birthday; 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; } public Date getBirthday() {
return birthday; } public void setBirthday(Date birthday) {
this.birthday = birthday; }}

获取对象

<%@ page contentType="text/html;charset=UTF-8" language="java"%><%@ page import="domain.User" %><%@ page import="java.util.Date" %>      $Title$        <%      //在域中存储数据     User user = new User();     user.setBirthday(new Date());     user.setName("jack");     user.setAge(22);      request.setAttribute("user",user);    %>    ${
requestScope.user}
${
requestScope.user.name}
${
requestScope.user.birthday}
${
requestScope.user.age}

在这里插入图片描述

获取List集合

<%@ page contentType="text/html;charset=UTF-8" language="java"%><%@ page import="java.util.List" %><%@ page import="java.util.ArrayList" %>      $Title$        <%      //在域中存储数据     List list = new ArrayList();     list.add("1");     list.add("2");     list.add("3");     request.setAttribute("list",list);    %>    ${
requestScope.list}
${
requestScope.list[0]}
${
requestScope.list[1]}
${
requestScope.lsit[2]}

在这里插入图片描述

获取Map集合

<%@ page contentType="text/html;charset=UTF-8" language="java"%><%@ page import="java.util.Map" %><%@ page import="java.util.HashMap" %>      $Title$        <%      //在域中存储数据      Map
map = new HashMap<>(); map.put("name","jack"); request.setAttribute("map",map); %> ${
requestScope.map["name"]}

在这里插入图片描述

4.空运算符演示

<%@ page contentType="text/html;charset=UTF-8" language="java"%><%@ page import="java.util.Map" %><%@ page import="java.util.List" %><%@ page import="java.util.ArrayList" %>      $Title$        <%      //在域中存储数据      Map
map = null; List list = new ArrayList(); int []nums = null; String s1 = ""; String s2 = null; request.setAttribute("map",map); request.setAttribute("list",list); request.setAttribute("nums",nums); request.setAttribute("s1",s1); request.setAttribute("s2",s2); %> ${
requestScope.map["name"]}
用于判断字符串、集合、数组对象是否为null或者长度是否为0
map:${
empty map}
list:${
empty list}
nums:${
empty nums}
s1:${
empty s1}
s2:${
empty s2}

在这里插入图片描述

5.隐式对象
el表达式中有11个隐式对象。其中pageContext最常用,我们重点掌握它,pageContext可以获取jsp其他八个内置对象。
举例:${pageContext.request.contextPath}:动态获取虚拟目录,这里不演示。

二.JSTL标签

1.概念与作用

全称为:JavaServer Pages Tag Library JSP即标准标签库。可用于用于简化和替换jsp页面上的java代码。

2.使用

使用前我么需要导入jar包

链接:https://pan.baidu.com/s/1OR-s_JjYsNkCZX7khZCW2Q

提取码:rfug

使用语法是引入标签库:taglib指令:<%@ taglib %>

I.if标签

注意事项:test 必须属性,接受boolean表达式。一般情况下,test属性值会结合el表达式一起使用

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

I am Jack

I am Rose

在这里插入图片描述

II.choose标签

相当于java代码的switch语句

<%@ page contentType="text/html;charset=UTF-8" language="java"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>      $Title$      <%     request.setAttribute("num",1);  %>   
I am Jack
I am Rose
你啥也不是

I am Rose

在这里插入图片描述

III.foreach标签

相当于java代码的for语句,foreach标签的使用分为两种用法。

1.用法一:完成重复的操作:

相当于for(int i=0;i< 10;i++){
}
1.begin:开始值2.end:结束值3.var:临时变量4.step:步长5.varStatus:循环的状态对象	index:容器里元素的索引,从1开始	count:循环的次数,从1开始

第一个例子:

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

在这里插入图片描述

第二个例子:

<%@ page contentType="text/html;charset=UTF-8" language="java"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>      $Title$      
${
num} ${
s.index} ${
s.count}

在这里插入图片描述

2.用法二:遍历容器

相当于:List
list;for(User user:list){
}
1.var:临时变量2.varStatus:循环的状态对象	index:容器里元素的索引,从0开始	count:循环的次数,从1开始3.items:容器对象

例子:

<%@ page contentType="text/html;charset=UTF-8" language="java"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ page import="java.util.List" %><%@ page import="java.util.ArrayList" %>      $Title$      <%     List
list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); request.setAttribute("list",list); %>
${
str} ${
s.index} ${
s.count}

在这里插入图片描述

转载地址:http://pxlzi.baihongyu.com/

你可能感兴趣的文章
AJAX应用之注册用户即时检测
查看>>
File 类小结
查看>>
java除去字符串空格
查看>>
jsp 2.0标记文件
查看>>
Hibernate中Criteria的完整用法
查看>>
sql jsp
查看>>
spring beans beanfactory applicationcontext
查看>>
使用ORM工具进行数据访问
查看>>
使用ORM工具进行数据访问
查看>>
编译与部署Eclipse+Tomcat+MySQL+Liferay4.1.2
查看>>
POJ3728,The merchant(倍增LCA+分治)
查看>>
2019 ICPC Malaysia National,E. Optimal Slots(01背包变形)
查看>>
洛谷P1638 逛画展(双向队列)
查看>>
POJ2892,Tunnel Warfare(线段树维护连续区间)
查看>>
POJ3468,A Simple Problem with Integers(线段树-区间查询-区间更新)
查看>>
杭电ACM——6463(思维)
查看>>
杭电ACM——1061,Rightmost Digit(思维)
查看>>
杭电ACM——1087,Super Jumping! Jumping! Jumping!(DP)
查看>>
杭电ACM——fatmouse's speed(DP)
查看>>
杭电ACM——毛毛虫(DP)
查看>>