栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

EL 表达式语言

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

EL 表达式语言

1.1 EL运算符 1.1.1 算数运算符
算术运算符说明实例结果
+${6.80 + -12}-5.2
-${15 - 5}10
*${2 * 3.14159}6.28318
/ 或者 div 25 d i v 4 或 {25 div 4}或 25div4或{25/4}6.25
%或者mod取余 24 m o d 5 与 {24 mod 5}与 24mod5与{24 % 5}4
与数值一样,String对象也可以使用, ${"16" * 4},字符串“16”会被转换成整数16
1.1.2 关系 & 逻辑运算符

1.1.3 条件运算符
```java
```Java
格式:
expression ? expression1 : expression2
  ${(5 * 5) == 25 ? 1 : 0}//return 1
 
1.1.4 empty运算符 
```Java
格式:
  ${empty expression}
  判断expression的值是否为**null、空字符串""、空数组、空Map、空集合**
## 1.1.5 属性与集合元素访问运算符

  1. **点号运算符**

```Java
点号运算符用来访问bean对象的属性值或者Map对象的一个键的值
  ex:param是EL的一个隐含对象,它是是个Map对象,返回param对象username请求参数的值
    ${param.username}

  1. 方括号运算符
可以用来访问Map、bean的属性、List属性值
  ${param["username"]}  或者 ${param.['username']}
  ${cuntomer["name"]}

  1. 实例使用


  //可以使用 "  "来转义使得网页打印除后面的内容
${2 + 5}${2 + 5}
${4 / 5}${4 / 5}
1.2 使用EL访问拿数据 1.2.1 访问作用域变量
> servlet中使用setAttribute()将一个变量存到HttpServletRequest、HttpSession、ServletContext等

> jsp可以使用EL隐含的调用getAttribute()作用域的变量的值
如:${variable_name}
容器依次在页面作用域page、request、session、application作用域中寻找,如果找到就调用toString()方法
返回属性值,如果没找到,就返回空字符串(不是null!)
**1、 demo.java**
```Java
doGet(){
  request.setAttribute("attrib1", nen Integer(250));
  
  HttpSession seesion = request.getSession();
  session.setAttribute("attrib2", "jsp EL");
  
  ServletContext application = getServletContext();
  application.setAttribute("attrib3", LocatlData.new());
  
  request.setAttribute("attrib4", "请求作用域");
  session.setAttribute("attrib4", "会话作用域");
  application.setAttribute("attrib4", "应用作用域");
  
  RequestDispatchaer rd = request.getRequestDispatcher("demo.jsp");
  rd.forword(request, response);
}
    **2、 demo.jsp**

```Java
  • 属性1: ${attrib1}
  • 属性2: ${attrib2}
  • 属性3: ${attrib3}
  • 属性4: ${attrib4}
**3、 页面显示:**
属性1: 250
属性2: jsp EL
属性3: 2021-10-24
属性4: 请求作用域       
[这里之所以输出的是请求作用域,是因为客户端查找的是从page、request、sesssion、application的顺序,]
1.2.2 访问JavaBeans属性
**1、 Address.java**
public Address implements java.io.Serializable{
  private String city;
  private String street;
  private String zipCode;
  
  public Address(){}
  public Address(String city, String street, String zipCode){
      this.city = city;
      this.street = street;
      this.zipCode = zipCode;
  }
}
**2、 Employee.java**
public class Employee implements java.io.Serializable{
  private String name;
  private String email;
  private String phone;
  private Address address;
  
  public Employee(){};
  public Employee(String name, String email, String phone, Address address){
    this.name = name;
    this.email = email;
    this.phone = phone;
    this.address = address;
  }
}
**3、 EmployeeServlet.java**
public class EmployeeServlet extends HttpServlet{
  public doGet(){
    Address address = new Address("上海市", "科技路25路", "201600");
    Employee employee = new Employee("automan", "hacker@163.com", "8899123", address);
    request.setAttribute("emloyee", employee);
    RequestDispatchaer rd = request.getRequestDispatchar("demo1.jsp");
    rd.forward(request, response);
  }
}
**4、 demo1.jsp**
  • 员工名: ${employee.name}
  • Email地址: ${employee.email}
  • 电话:${employee.phone}
  • 客户地址:
    • 城市:${employee.address.city}
    • 街道:${employee.address.street}
    • 邮编:${emploee.address.zipCode}
**5、客户端浏览器输出**
员工名:automan
Email地址:hacker@163.com
电话:8899123
客户地址
  城市:上海市
  街道:科技路220
  邮编:201600

1.2.3 访问集合元素
1. **CollectServlet.java**
@WebServlet("/CollectServlet")
public class CollectServlet extends HttpServlet{
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
                     throws ServletException,IOException{
      response.setContentType("text/html;charset=UTF-8");
      String[] city = {"北京","上海","广州"};
      request.setAttribute("mycity", city);
    
      ArrayList fruit = new ArrayList<>();
      fruit.add("apple");
      fruit.add("orange");
      fruit.add("banana");
      request.setAttribute("myFruit", fruit);
 
      HashMap capital = new HashMap();
      capital.put("China","北京");
      capital.put("England","伦敦");
      capital.put("Russia","莫斯科");

      request.setAttribute("capital",capital);
      RequestDispatcher rd = 
              request.getRequestDispatcher("/collections.jsp");
      rd.forward(request,response);
   }
}

**2、clooection.jsp**
<%@ page contentType="text/html;charset=UTF-8" %>

访问集合元素


访问集合元素

我最喜欢的水果是:${myFruit[2]}
1.3 EL隐含变量
### EL表达式中的隐含变量
变量名说明
pageContext包含JSP常规隐含对象的PageContext类型对象
param包含请求参数字符串的Map对象
paramValues包含请求参数字符串组的Map对象
header包含请求头字符串的Map对象
headerValues包含请求头字符串数组的Map对象
initParam包含Servlet上下文参数的参数名和参数值的Map对象
cookie匹配cookie域和单个对象的Map对象
pageScope包含page作用域属性的Map对象
sessionScope包含session作用域属性的Map对象
requestScope包含request作用域属性的Map对象
applicationScope包含application作用于属性的Map对象
## 1.3.1 pageContext变量

pageContext变量包含request、response、session、out、servletContext属性
${pageContext.request.method}      //获取HTTP请求的方法,GET/POST
${pageContext.request.queryString} //获取请求的查询串
${pageContext.request.requestURL}
${pageContext.request.remoteAddr}  //IP地址
${pageContext.session.id}          //会话id    
${pageContext.session.new}         //判断会话对象是不是新建的
${pageContext.servletContext.servletInfo}   //获取服务器信息

  EL可以访问对象的属性,但不能嗲用对象的方法 如: ${pageContext.request.getMethod()}

## 1.3.2 param和paramValues变量

  **param**和**paramValues**变量**用来从请求对象中检索请求参数值**

    1. param是调用给定参数名的getParamter(String name)的结果,用EL表示如下:
${param.name}   相当于调用了getParamter(String name);

    1. paramValues使用了getParamterValues(String name);
${paramValues.name["0"]}   相当于调用了阿 getParamterValues(String name);
## 1.3.3 initParam变量

  initParam变量存储了Servlet上下文的参数名和参数值

  例如在DD中定义了如下初始化参数

  emain
  hacker@163.com

  相对应的EL表达式得到的参数email的值
${initParam.email}    //application.getInitParamter("email");
1.3.4 pageScoperequestScopesessionScopeapplication 变量
很好理解,就是用他们访问不同作用域的属性
如果java里写了 
  session.setAttribute("temp", 1000);
那么jsp页面里使用sessionScope变量访问:
  ${sessionScope.temp}
  
其他同理
1.3.5 header、headerValues
> header和headerValues是从HTTP请求头中检索值
有点像param和paramValues
${header.host}或者${header["host"]}

同样的headerValues就是获取一个数组了
${headerValues.host[0]}或者
${headerValues.host['0']}或者
${headerValues.host["0"]}

1.3.6 cookit变量
显而易见,就是有关cookie的
比如servlet里写了:
cookie[] cookie = new cookie("username", "zhangsan");
在servlet里获取是如下代码:
 cookie[] cookies = request.getcookie();
 for(int i =0;  < cookies.length){
   if((cookies[i].getName()).equals("username")){
     out.println(cookies[i].getValue());
   }
 }

用EL表达式的话就一句:
${cookit.username.value}
1.3.7 综合实例
废话不多说,直接上代码
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="com.model.*" %>
EL隐含变量的使用
<% 
   Address address = new Address("上海", 
            "科技路25号","201600");//创建一个地址对象
   Employee employee = new Employee("automan", 
              "hacker@163.com","8899123",address);//创建一个员工对象
   session.setAttribute("employee", employee);//吧员工对象发送给session的范围
   cookie cookie = new cookie("userName","Hacker");//发送给cookie
   response.addcookie(cookie);//发送给客户端
 %>

EL隐含变量的使用

//userName为什么是Smith?请看下图的地址栏get请求提交的是userName是Smith
EL表达式
${pageContext.request.method} ${pageContext.request.method}
${param.userName}${param.userName}
${header.host}${header.host}
${cookie.userName.value} ${cookie.userName.value}
${initParam.email}${initParam.email}
${sessionScope.employee.address.street} ${sessionScope.employee.address.street}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/601596.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号