D09 Sping Boot 入门 Sping框架--Java Web之El表达式和JSTL标签

El表达式

  1、什么是EL表达式,有什么作用

    Ⅰ、EL表达式全称Expression Language。表达式语言。

    Ⅱ、EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据输出。

    Ⅲ、EL表达式比jsp表达式脚本简洁。

    比较

    
 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 2 <html>
 3 <head>
 4     <title>a.jsp</title>
 5 </head>
 6 <body>
 7 <%
 8     request.setAttribute("key","value");
 9 %>
10 <%--jsp表达式脚本输出数据--%>
11 jsp表达式脚本输出的值:<%=request.getAttribute("key")%>
12 <br />
13 <%--EL表达式输出数据--%>
14 EL表达式输出的值:${key}
15 </body>
16 </html>
17 
18 EL和jsp表达式脚本
EL和jsp表达式脚本

     

 

 

     

 

     EL表达式主要是在jsp页面中输出数据,主要是输出域对象中的数据

 

   2、EL表达式搜索域数据的顺序

     

 

 

     

 

 

   3、EL表达式输出Bean的普通属性,数组属性。List集合属性,map集合属性。

 

    Ⅰ、需求--输出Person类中普通属性,数组属性。list集合属性,map集合属性。

    Ⅱ、新建Person类   

    
 1 package com.gychen.pojo;
 2 
 3 import java.util.Arrays;
 4 import java.util.List;
 5 import java.util.Map;
 6 
 7 public class Person {
 8 
 9 // 需求--输出Person类中普通属性,数组属性。list集合属性,map集合属性。
10 
11     private String name;
12     private String[] phones;
13     private List<String> cities;
14     private Map<String,Object> map;
15 
16     //生成get和set方法
17 
18     public String getName() {
19         return name;
20     }
21 
22     public void setName(String name) {
23         this.name = name;
24     }
25 
26     public String[] getPhones() {
27         return phones;
28     }
29 
30     public void setPhones(String[] phones) {
31         this.phones = phones;
32     }
33 
34     public List<String> getCities() {
35         return cities;
36     }
37 
38     public void setCities(List<String> cities) {
39         this.cities = cities;
40     }
41 
42     public Map<String, Object> getMap() {
43         return map;
44     }
45 
46     public void setMap(Map<String, Object> map) {
47         this.map = map;
48     }
49 
50     //生成toString
51 
52     @Override
53     public String toString() {
54         return "Person{" +
55                 "name=" + name +
56                 ", phones=" + Arrays.toString(phones) +
57                 ", cities=" + cities +
58                 ", map=" + map +
59                 '}';
60     }
61 
62     //生成有参和无参
63 
64     public Person(String name, String[] phones, List<String> cities, Map<String, Object> map) {
65         this.name = name;
66         this.phones = phones;
67         this.cities = cities;
68         this.map = map;
69     }
70 
71     public Person() {
72     }
73 }
Person

 

    Ⅲ、新建jsp文件

    
 1 <%@ page import="com.gychen.pojo.Person" %>
 2 <%@ page import="java.util.ArrayList" %>
 3 <%@ page import="java.util.List" %>
 4 <%@ page import="java.util.HashMap" %>
 5 <%@ page import="java.util.Map" %><%--
 6   Created by IntelliJ IDEA.
 7   User: 99622
 8   Date: 2020/4/1
 9   Time: 16:46
10   To change this template use File | Settings | File Templates.
11 --%>
12 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
13 <html>
14 <head>
15     <title>c.jsp</title>
16 </head>
17 <body>
18     <%
19         Person person = new Person();
20         person.setName("gychen");
21         person.setPhones(new String[]{"18795908563","18795908551","18795908396"});
22 
23         List<String> cities = new ArrayList<String>();
24         cities.add("北京");
25         cities.add("上海");
26         cities.add("深圳");
27         person.setCities(cities);
28 
29         Map<String,Object> map = new HashMap<>();
30         map.put("key1","value1");
31         map.put("key2","value2");
32         map.put("key3","value3");
33         map.put("key4","value4");
34         person.setMap(map);
35 
36         pageContext.setAttribute("person",person);
37 
38     %>
39 
40     输出Person:${ person }<br />
41     输出Person的name属性:${ person.name }<br />
42     输出Person的phone属性值:${ person.phones[0] }<br />
43     输出Person的cities属性值:${ person.cities }<br />
44     输出Person的map属性值:${ person.map }<br />
45     输出Person的map某个属性值:${ person.map.key1 }<br />
46 </body>
47 </html>
jsp

    

 

 

   4、EL表达式--运算

    Ⅰ、关系运算

关系运算符 说明 范例 结果
==或eq 等于 ${5==5}或${5eq5} true
!=或ne 不等于 ${5!=5}或${5ne5} false
<或lt 小于 ${3<5}或${3lt5} true
>或gt 大于 ${2>10}或${2gt10} false
<=或le 小于等于 ${5<=12}或${5le12} true
>=或ge 大于等于 ${3>=5}或${3ge5} false

 

    Ⅱ、逻辑运算

逻辑运算符 说明 范例 结果
&&或and 与运算 ${12 == 12 && 12<11}或${12== 12 and 12 < 11} true
||或or 或运算 ${12 == 12 || 12<11}或${12== 12 or 12 < 11} true
!或not 取反运算 ${ !true}或${ not true } false

 

    Ⅲ、算数运算

算数运算符 说明 范例 结果
+ 加法 ${ 12+8 } 20
- 减法 ${ 18-8 } 10
* 乘法 ${ 12*8 } 96
/或div 除法 ${ 12/4 }或${ 12 div 4 } 3
%或mod 取模 ${ 144%10 } 或 ${ 144 mod 4 } 4

 

  

    Ⅳ、empty运算

      empty运算判断一个数据是否为空,如果为空则返回true,不为空返回false。

      以下几种情况为空:

        ①、值为null值的时候为空

        ②、值为空字符串的时候为空

        ③、值是Object类型数组,长度为零的时候为空

        ④、list集合,元素个数为零的时候为空

        ⑤、map集合,元素个数为零的时候为空

    Ⅴ、三元运算

      表达式1?表达式2:表达式3

      相当于

1 if(表达式1){
2     表达式2
3     }else{
4         表达式3
5 }

    Ⅵ、.点运算和[]中括号运算

      .运算,可以输出Bean对象中某个属性的值。

      []中括号运算,可以输出有序集合中某个元素的值,还可以输出map集合中key里含有特殊字符的key的值。

      

  5、EL表达式--11个隐含对象

    

      

 JSTL标签库

   

   

   

   1、JSTL标签库的使用步骤

    Ⅰ、导入JSTL标签库的jar包。

    

    Ⅱ、使用taglib指令引入标签库(IDEA里会自动引入)

    

  2、core核心库的使用

    Ⅰ、set标签 <c:set /> 

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

 1 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 2 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 3 <html>
 4 <head>
 5     <title>JSTL标签库</title>
 6 </head>
 7 <body>
 8 
 9 <%--
10     <c:set />
11     作用:set标签可以往域中保存数据。
12     保存数据--> 域对象.setAttribute(key,value)
13     scope 属性设置保存到哪个域,例如scope="page",表示是保存到PageContext域(默认page)
14     var 属性为key
15     value属性为value
16     --%>
17     保存数据之前:${ pageScope.abc }<br />
18     <c:set scope="page" var="abc" value="pageContext" /><br />
19     保存数据之后:${ pageScope.abc }<br />
20 </body>
21 </html>

    Ⅱ、if标签 <c:if /> 

    作用:用来做if判断

    

    Ⅲ、多路判断 <c:choose><c:when><c:otherwise> 

    作用:多路判断。跟switch...case...default非常接近。

    注意:1、这三个标签里不能用html注释,要用jsp注释。
     2、when标签的父标签一定要是choose标签。

     

     Ⅳ、forEach遍历标签 <c:forEach></c:forEach> 

      ①、遍历1到10

      

       ②、遍历Object数组

      

       ③、遍历Map集合

      

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

      新建一个Student类

       
 1 package com.gychen.pojo;
 2 
 3 public class Student {
 4     private Integer num;
 5     private String name;
 6     private String password;
 7     private Integer age;
 8     private String phone;
 9 
10     public Integer getNum() {
11         return num;
12     }
13 
14     public void setNum(Integer num) {
15         this.num = num;
16     }
17 
18     public String getName() {
19         return name;
20     }
21 
22     public void setName(String name) {
23         this.name = name;
24     }
25 
26     public String getPassword() {
27         return password;
28     }
29 
30     public void setPassword(String password) {
31         this.password = password;
32     }
33 
34     public Integer getAge() {
35         return age;
36     }
37 
38     public void setAge(Integer age) {
39         this.age = age;
40     }
41 
42     public String getPhone() {
43         return phone;
44     }
45 
46     public void setPhone(String phone) {
47         this.phone = phone;
48     }
49 
50     @Override
51     public String toString() {
52         return "Student{" +
53                 "num=" + num +
54                 ", name='" + name + '\'' +
55                 ", password='" + password + '\'' +
56                 ", age=" + age +
57                 ", phone='" + phone + '\'' +
58                 '}';
59     }
60 
61     public Student() {
62     }
63 
64     public Student(Integer num, String name, String password, Integer age, String phone) {
65         this.num = num;
66         this.name = name;
67         this.password = password;
68         this.age = age;
69         this.phone = phone;
70     }
71 }
Student

      写jsp

      

 

posted @ 2020-04-01 16:10  nuister  阅读(281)  评论(0编辑  收藏  举报