第八节、EL标签

在JSP页面中,经常利用JSP表达式<%=变量或者表达式%>来输出声明的变量以及页面传递的参数,当变量很多的时候,书写这样的表达式会显得累赘,EL标签很好地解决了这个问题。

EL标签语法

语法形式:${参数名}

例如:${param.name}获得参数name,它等同于<%=request. getParameter(‘name’)%>

EL标签的功能

可以访问JSP中不同域的对象;
可以访问Java Bean中的属性;
可以访问集合元素;
支持简单的运算符操作;

访问JSP中不同域的对象

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML >
<html>
  <head>
    <title>EL标签访问示例</title>
  </head>
  <body>
      <%
         pageContext.setAttribute("name","Smith");
         request.setAttribute("age",20);
         session.setAttribute("address","china");
         application.setAttribute("sex","male");
       %>
  <h3 style="text-align: center;">访问演示</h3>
  <table border="1" width="100%">
   <tr>
      <td align="center">姓名</td>
      <td align="center">年龄</td>
      <td align="center">性别</td>
      <td align="center">地址</td>
   </tr>
   <!--范围.参数名称 -->
   <tr>
     <td align="center">${pageScope.name}</td>
      <td align="center">${requestScope.age}</td>
      <td align="center">${sessionScope.address}</td>
      <td align="center">${applicationScope.sex}</td>
   </tr>
   <!-- 直接写参数名称 -->
   <tr>
     <td align="center">${name}</td>
      <td align="center">${age}</td>
      <td align="center">${address}</td>
      <td align="center">${sex}</td>
   </tr>
   </table>
  </body>
</html>

在这里插入图片描述

访问Java Bean中的属性

package com.eshore.pojo;

public class Users {
    
    
    private String name;
    private int age;
    private String address;
    private String addaa_re;
	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 String getAddress() {
    
    
		return address;
	}
	public void setAddress(String address) {
    
    
		this.address = address;
	}
	public String getAddaa_re() {
    
    
		return addaa_re;
	}
	public void setAddaa_re(String addaaRe) {
    
    
		addaa_re = addaaRe;
	}
	@Override
	public String toString() {
    
    
		return "用户"+name+" 年龄 "+age+",来自于"+address;
	}
    
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="com.eshore.pojo.Users" %>
<!DOCTYPE HTML >
<html>
  <head>
    <title>EL标签访问Java Bean示例</title>
  </head>
  <body>
      <%
         Users user = new Users();
         user.setAddress("中国");
         user.setAge(20);
         user.setName("王五");
         user.setAddaa_re("sadfa");
         request.setCharacterEncoding("utf-8");
         request.setAttribute("user",user);
       %>
    用户信息:${user }<br/>
    用户年龄:${user.age } ,用户姓名:${user.name}
  </body>
</html>

在这里插入图片描述

EL标签的操作符

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="com.eshore.pojo.Users" %>
<!DOCTYPE HTML >
<html>
  <head>
    <title>EL标签运算符示例</title>
  </head>
  <body>
  <%
         Users user = new Users();
         user.setAddress("中国");
         request.setAttribute("user",user);
         request.setAttribute("str",null);
         String[] arr = new String[]{"第1个","第2个"};
         request.setAttribute("arr",arr);
       %>
  <table border="1">
      <tr>
         <td>算术运算符:</td>
         <td>逻辑运算符:</td>
         <td>关系运算符:</td>
         <td>其他运算符:</td>
      </tr>
      <tr>
          <td> 
   加:3+3 = ${2+3}<br/>
   减:4-3 = ${4-3}<br/>
   乘:2*3 = ${2*3}<br/>
   除:3/6 = ${3/6}<br/>
   求模:10%3 = ${10%3}</td>
      
          <td>  
   逻辑与:${2<15 && 15<20}<br/>
    逻辑与: ${2<15 and 15 <20}<br/>
    逻辑或: ${2<15||15<20}<br/>
  逻辑或:${2<15 or 15<20}<br/>
  逻辑否: ${!(2<15)}<br/>
  逻辑否: ${not(2<15)}<br/></td>
       
          <td>   
   符号左右两端是否相等:2==15 : ${2 == 15 }或${2 eq 15 }<br/>
   符号左右两端是否不相等:2!=15:${2 != 15 }或${2 ne 15 }<br/>
  符号左边是否小于右边: 2<15:${2 < 15 }或${2 lt 15 }<br/>
  符号左边是否大于右边 :2>15:${2 > 15 }或${2 gt 15 }<br/>
 符号左边是否小于或者等于右边:  2<=15:${2 <= 15 }或${2 le 15 }<br/>
  符号左边是否大于或者等于右边: 2>=15:${2 >= 15 }或${2 ge 15 }<br/></td>
       
          <td> 
   str是否为空:${empty str }<br/>
   user对象是否为空:${empty user }<br/>
   2小于15输出yes否则输出no:${2<15?'yes':'no' }<br/>
       输出user对象的address属性:${user["address"]}<br/>
       输出arr数组的第一个值:${arr[0]}<br/></td>
      </tr>
  </table>
    
  </body>
</html>

在这里插入图片描述

EL标签的隐含变量

隐含变量pageScope、requestScope、sessionScope、applicationScope对应于JSP隐含变量pageContext、request、session、application。
param、paramValues对应于:request.getParameter(String name) 和request.getParameterValues(String name)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML >
<html>
  <head>
    <title>EL标签隐含对象使用示例</title>
  </head>
  <body>
    <form action="test.jsp">
    <input type="text" name="sampleVal" value="1">
    <input type="text" name="sampleVal" value="17">
    <input type="text" name="sampleVal" value="16">
    <input type="text" name="sampleSingleVal" value="single">
    <input type="submit" value="Submit">
    </form>
  </body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML >
<html>
  <head>
    <title>测试页面</title>
  </head>
  <body>
  请求参数值:${param.sampleSingleVal} ,
  ${paramValues.sampleVal[1]}</br>
  </body>
</html>

在这里插入图片描述

其他变量

header对应request.getHeader()、headerValues变量获取表头数组信息,request.getHeaders()。
在这里插入图片描述

禁用EL标签

在整个Web中禁用,通过修改web.xml文件实现。
在单个页面中禁用,<%@page isELIgnore=“true”%>
在页面中禁用个别表达式,只需要在不需要解析的EL表达式的“$”符号前加一个反斜杠即可。"\$"

猜你喜欢

转载自blog.csdn.net/qq_42148307/article/details/120337479