`
x125521853
  • 浏览: 72707 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

第三章 EL运算符

    博客分类:
  • Jstl
阅读更多

一:JSTL表达式

    EL表达式是JSTL1.0为了方便存取数据所定义的语言,到了JSP2.0以后,正式将EL纳入标准规划之一,只要是支持Servlet2.4/JSP的容器中,都可以在JSP网页中直接使用EL表达式,使用JSTL搭配EL可以减少代码量使得页面更加容易维护。

    EL提供了多种运算符操作,如算术运算符,关系运算符,逻辑运算符和验证等。

 

二:算术运算符    

算术运算符 说明 示例 结果
+ ${1+1} 2
- ${1-1} 0
* ${1*2} 2
/或div ${3/2} 1.5
%或mod ${3%2} 1

   注意:${1+'a'}会抛异常:java.lang.NumberFormatException:For input string:"a"

           ${1+'1'}结果为2,会将字符串1转型后再加,如果转型失败会抛异常。

           ${0/20}结果为0.0,程序在运算时,会自动先将运算的两个数转换成Double类型,然后进行除法操作,所以返回的是0.0而不是0.

           ${20/0}结果为Infinity,表示无穷大的意思。

           ${0/0}结果会为NaN,表示不是数字的意思。

 

三:关系运算符    

关系运算符 说明 示例 结果
==或eq 等于 ${1==1} 或${1 eq 1} true
!=或ne 不等于 ${1 !=1} 或${1 ne 1} false
< 或 lt 小于 ${1<2} 或${1 lt 2} true
> 或 gt 大于 ${1>2} 或${1 gt 2} false
<= 或 le 小于或等于 ${1<=2} 或${1 le 2} true
>= 或 ge 大于或等于 ${1>=2} 或${1 ge 2} false

     注意:${"b">="a"}结果为true,会调用String的compareTo来进行比较,显然b>a.

              ${"" == null}结果为false。

              ${null > null}结果为false.

              ${null == null}结果为true.

 

四:逻辑运算符      

逻辑运算符 说明 示例 结果
&& 或 and 并且 ${a && b}或 ${a and b} 两者都为true时为true
|| 或 or 或者 ${a || b}或 ${a or b} 两者之一为true时为true
! 或 not 取反 ${ !a }或 ${not a} 为true则false,为false则true

 

五:验证运算符

      EL验证运算符,对于验证数据特别有用,empty 运算符采用单个表达式作为其变量,并返回一个布尔值,多用于判断

      如:判断集合是不是为空,其实用 ==null 也是一样的。empty会帮你判断size=0的情况,建议用empty。

     //servlet页面    

package com.action;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Chapter3Servlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");
		List<String> list = new ArrayList<String>();
		list.add("张三");
		request.setAttribute("list", list);
		request.getRequestDispatcher("chapter3.jsp").forward(request, response);
	}

}

   //jsp页面  

<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>chapter3.jsp</title>
	</head>
	<body>
		<div>
			<div>
				${empty list}<br/>
				${list == null}
			</div>
		</div>
	</body>
</html>

  

   三元运算符:

   ${1 > 1 ? "真":"假"} 结果为假

 

六:与输入有关的隐含对象

     param

     地址栏输入:http://localhost:8080/jstl/index.jsp?name=xiaowang

     jsp页面:${param.name}

     可以看到,可以取到传进来的xiaowang这个值,param隐含对象可以取到通过request.getParamter("")的值。

 

    pageContext对象, 取得页面的详细信息。
   ${pageContext.request.queryString}         取得请求的参数字符串
   ${pageContext.request.requestURL}         取得请求的URL,但不包括请求之参数字符串
   ${pageContext.request.contextPath}         服务的web application 的名称
   ${pageContext.request.method}           取得HTTP 的方法(GET、POST)
   ${pageContext.request.protocol}         取得使用的协议(HTTP/1.1、HTTP/1.0)
   ${pageContext.request.remoteUser}         取得用户名称
   ${pageContext.request.remoteAddr }         取得用户的IP 地址
   ${pageContext.session.new}             判断session 是否为新的
   ${pageContext.session.id}               取得session 的ID
   ${pageContext.servletContext.serverInfo}   取得主机端的服务信息

 

   JSTL表达语言定义了一系列隐含对象。这些隐含对象供JSP获取和使用其scoped attributes
   (1)pageContext:指JSP的pageContext对象
   (2)pageScope:一个Map对象,包括page范围的属性和值
   (3)requestScope:一个Map对象,包括request范围的属性和值
   (4)sessionScope:一个Map对象,包括session范围的属性和值
   (5)ApplicationScope:一个Map对象,包括application范围的属性和值
   (6)param:一个Map对象,包括Web请求参数(request parameter)的字符串值,对应了ServletRequest.getParameter(String)
   (7)paramValues:一个Map对象,包括Web请求参数(request parameter)的多个字符串值,对应了ServletRequest.getParameterValues(String)
   (8)header:一个Map对象,包括请求的头信息值,对应了ServletRequest.getHeader(String)
   (9)headerValues:一个Map对象,包括请求的头信息多个值,对应了ServletRequest.getHeaders(String)
  (10)cookie:一个Map对象,包括对应名称的Cookie,对应了HttpServletRequest.getCookie(String)
   (11)initParam:一个Map对象,包括一个Web程序的初始化参数值,对应了ServletRequest.getInitParameter(String)

 

七:

    (1).读取Map集合中的值        

<%
	HashMap hm = new HashMap();
	hm.put("username","root");
	hm.put("password","admin");
	session.setAttribute("hm", hm);		
%>
	username:${hm.username}
	password:${hm.password}

    (2).读取数组中的数据   

<%
	String[] names = {"aaa","bbb","ccc"};	
	session.setAttribute("names",names);
%>
	${names[0]}
	${names[1]}
	${names[2]}

  (3).读取集合中的数据 

<%
	List<String> names = new ArrayList<String>();
	names.add("aaa1");
	names.add("bbb1");
	names.add("ccc1");
		
	session.setAttribute("names",names);
%>
	${names[0]}
	${names[1]}
	${names[2]}

 

分享到:
评论

相关推荐

    EL手册 EL手册 EL手册

    《EL手册》是关于EL(Expression Language)的详尽指南,它是Java EE应用程序开发中的一个重要组成部分,主要用于在JSP(JavaServer Pages)和其他Java web组件中进行数据绑定和表达式处理。EL语言的设计目的是简化...

    jspEL表达式和el

    - 数组和集合索引:`[]` 用于访问数组或集合的元素,如`${users[0]}`获取`users`集合的第一个元素。 - 运算符:支持加减乘除、比较和逻辑运算,如`${a + b}`、`${a &gt; b}`。 - 方法调用: `${object.method()}` 可以...

    比较实用的el方法和总结

    2. EL运算符 - 点运算符(.):用于访问对象的属性或调用方法,如`${user.address.city}`。 - 方括号运算符([]):动态访问属性,如`${user['address']['city']}`。 - 空值安全导航运算符(?.):如果对象为null,则...

    EL标签的jar文件

    通常,这些库可能包括Apache Tomcat或Jetty等Web服务器提供的实现,或者像Spring框架这样的第三方库提供的EL支持。 EL表达式的基本语法如下: 1. `${expression}`:这是EL表达式的标准形式,`expression`可以是...

    jstl和el的基础

    3. **EL运算符** - **算术运算符**:+、-、*、/(或div)、%(或mod) - **关系运算符**:==(或eq)、!=(或ne)、&lt;(或lt)、&gt;(或gt)、(或le)、&gt;=(或ge) - **逻辑运算符**:&&(或and)、||(或or)、!...

    JSP2.0技术手册.pdf包含源代码和代码说明

    第三章 JSP 2.0 简介 第四章 JSP 语法 第六章 Expression Language 第七章 JSTL 1.1 第六章 Expression Language 6-1 EL简介 6-2 EL 语法 6-3 EL 隐含对象 6-4 EL 算术运算符 6-5 EL 关系运算符 6-6 EL 逻辑运算符 6...

    EL表达式详解教程

    #### 三、EL的运算符 ##### 1\. 点运算符(.)与方括号运算符([]) EL提供了两种方式来导航数据:点运算符(.)和方括号运算符([])。这两种方式大部分情况下可以互换使用,例如: - `${sessionScope.user.sex}...

    EL表达式言语和JSTL

    3. **自动类型转换**:EL支持自动类型转换,可以方便地处理不同类型的数据。 4. **隐式对象**:EL提供了许多隐式对象,可以直接访问如请求、会话、应用程序等作用域内的数据。 **JSP表达式语言的语法** EL表达式的...

    jsp el表达式培训课件

    3. **示例3**:展示了如何在`&lt;input&gt;`标签中使用EL表达式`${param["num"]}`来获取请求参数`num`的值,同时使用`pageContext`对象的`setAttribute`方法设置了一个变量`color`,并在`&lt;body&gt;`标签的`bgcolor`属性中通过...

    java关于EL的学习笔记

    EL允许使用自定义函数,这些函数通常来自JSTL库或其他第三方库。例如,JSTL的`fn:length()`函数可以获取集合或字符串的长度,如`${fn:length(list)}`。 总的来说,Java Expression Language是JSP开发中不可或缺的一...

    EL表达式 (详解)

    #### 三、EL表达式的运算符 - **算术运算符**:`+`、`-`、`*`、`/`、`%` - **关系运算符**:`==`、`!=`、`、`&gt;`、`、`&gt;=` - **逻辑运算符**:`&&`、`||`、`!` - **其他运算符**:`empty`、`? :`、`()`等。 #### 四...

    在JSP页面用EL表达式调用一些函数

    EL表达式通常以`${}`包裹,其内部可以包含各种运算符和方法调用。例如,要访问一个名为`user`的对象的`name`属性,我们可以写作`${user.name}`。如果要调用一个方法,如`getAge()`,则可以写为`${user.getAge()}`。 ...

    jstl chm pdf 中文 el表达式

    - `JSTL.pdf`:这可能是JSTL的官方文档或第三方编写的教程,提供了深入的介绍和示例。 - `JSP2.0-EL.pdf`:这个文件很可能是关于JSP 2.0版本中EL表达式的详细指南,涵盖了EL的基本概念、语法以及如何在实际项目中...

    EL标签大全

    对于JavaBean、List、Array、Map等数据结构,EL提供了`.`和`[]`两个运算符来访问数据。当属性名包含特殊字符时,如`.`或`?`,应使用`[]`,例如`${user["My-Name"]}`。如果需要动态获取属性,`[]`是唯一选择,如`${...

    EL表达式(转)

    #### 三、EL隐含对象 ##### 1. **与范围相关的隐含对象** - **pageScope**: 表示当前页面的作用域。 - **requestScope**: 表示当前 HTTP 请求的作用域。 - **sessionScope**: 表示当前会话的作用域。 - **...

    EL表达式笔记3

    3. EL表达式处理各种类型的数据: - 输出Bean的普通属性:如`${person.name}`可以获取`Person`对象的`name`属性。 - 输出数组属性:如`${person.phone[0]}`可以获取`phone`数组的第一个元素。 - 输出List集合属性...

    有关JSP EL表达式的资料

    #### 三、EL表达式的应用场景 在JSP页面中,传统的获取数据方式通常是通过脚本元素(`&lt;% %&gt;`)来实现,如: ```jsp User user = (User) session.getAttribute("user"); String sex = user.getSex(); %&gt; ``` 而使用...

    EL表达式 jsp

    表达式中的第一个命名变量可以是隐式对象,或者是在四个作用域(页面、请求、会话、应用)之一中的属性。点号操作符(`. `)用于访问Map或bean的属性,例如 `${foo.bar}`。如果`bar`是Map`foo`的键或bean`foo`的属性...

Global site tag (gtag.js) - Google Analytics