④品茶看<Servlet&JSP>-EL表达式
前言
今早,概率课偷了下小懒写的:
泡一杯红茶,ACM集训前,写篇博客记录记录EL表达式。
#EL介绍
①EL 语法
②访问JavaBean等
③EL隐式对象
④EL运算符
EL介绍
EL 全名为Expression Language。受ECMAScript 和XPath 表达式的语言启发。EL 的语法比传统JSP Scriptlet 更为方便、简洁。
EL 语法
①基本知识
${为起始、以}为结尾的,构造:${expression}。接下来比较下:
JSP Scriptlet获取:
- User user = (User)session.getAttribute("user");
- String sex = user.getName( );
EL 获取:
- ${sessionScope.user.sex}
② [] 和 . 运算符
EL表达式中,对象有属性。就可以利用 [] 和 . 运算符 来访问该属性,两者功能相似。
例如:下面都是一样的。
- ${sessionScope.user.name}
或者
- ${sessionScope.user["name"]}
两者功能差异
# 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。
例如:
- ${sessionScope.user["My-Name"] } ${header["accept-language"] }
#我们来考虑下列情况:
selection是一个变量,可以代表user各个属性。
${sessionScope.user[selection]}
如果selection为"name",就相当于${sessionScope.user.name}或者${sessionScope.user["name"]}
因此,如果要动态取值时,. (点)运算符无法做到动态取值, [] 运算符 可以做到。
访问JavaBean
类型
|
实例
|
方法
|
JavaBeans
|
${user.username}
${user["username"]}
${user['username']}
|
user.getUsername()
|
数组
|
${sport[1]}
${sport["1"]}
${sport['1']}
|
sport[1]
|
List
|
${phone[2]}
${phone["2"]}
${phone['2']}
|
phone.get(2)
|
Map
|
${phone.home}
${phone["home"]}
${phone['home']}
|
phone.get("home")
|
EL隐式对象
隐含对象 |
类型 |
说明 |
PageContext |
javax.servlet.jspPageContext |
表示当前JSP的javax.servlet.jsp.PageContext |
PageScope |
java.util.Map |
取得Page范围的属性名称所对应的值 |
RequestScope |
java.util.Map |
取得Request范围的属性名称所对应的值 |
sessionScope |
java.util.Map |
取得Session范围的属性名称所对应的值 |
applicationScope |
java.util.Map |
取得Application范围的属性名称所对应的值 |
param |
java.util.Map |
如同ServletRequest.getParameter(String name)。回传String类型的值 |
paramValues |
java.util.Map |
如同ServletRequest.getParameterValues(String name)。回传String[]类型的值 |
header |
java.util.Map |
如同ServletRequest.getHeader(String name)。回传String类型的值 |
headerValues |
java.util.Map |
如同ServletRequest.getHeaders(String name)。回传String[]类型的值 |
cookie |
java.util.Map |
如同HttpServletRequest.getCookies() |
initParam |
java.util.Map |
如同ServletContext.getInitParameter(String name)。回传String类型的值 |
cookie
隐式对象cookie包含了当前HttpServletRequest的所有cookie 的Map。
例如
获取一个名为jsessionid的cookie值:
- ${cookie.jsessionid.value}
header 和headerValues
header 储存用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件,例如:用户浏览器的版本、用户计算机所设定的区域等其他相关数据。
例如
获取accept-language语言
- ${header["accept-language"]}。
注意:当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。
initParam
就想我们在web-xml 配置 初始化值得时候,我们用initParam隐式对象可以获取。
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
- version="2.4">:
- <context-param>
- <param-name>username</param-name>
- <param-value>jeffli</param-value>
- </context-param>:
- </web-app>
用EL表达式获取:
- ${initParam.username}
等价于
- String userid = (String)application.getInitParameter("username");
param和paramValues
同上面的理
- ${param.name}
- ${paramValues.name}
等价于
- request.getParameter(String name)
- request.getParameterValues(String name)
EL运算符
逻辑运算符 |
实例 |
结果 |
&&或and |
交集${A && B}或${A and B} |
true/false |
||或or |
并集${A || B}或${A or B} |
true/false |
!或not |
非${! A }或${not A} |
true/false |
总结
EL学习,这次比较全。以前用着就去看,索性写篇博客记录下。
学这个,好比ABC... 慢慢来,多写多用就会了。
④品茶看<Servlet&JSP>-EL表达式的更多相关文章
- Jsp,EL表达式的入门
Jsp,EL表达式的入门 *Servlet/JSP 是两种动态的WEB资源的两种技术 使用Servlet生成HTML的页面是可以的 response.getWriter("<form ...
- JSP EL表达式使用
JSP EL表达式使用: Servlet: package com.stono.servlet; import java.io.IOException; import java.util.HashMa ...
- jsp EL表达式 字符串的比较
jsp EL表达式 字符串的比较 跟JavaScript一样,直接使用两个等于号即可:== 代码如下: <c:if test="${highLight == 'visa'}" ...
- JSP EL表达式 获得 request的GET/POST方法
JSP EL表达式 获得 request的GET/POST方法: 不在requestScopse中: <p>得到request的方法</p> <p>pageCont ...
- JSP EL表达式 param、paramValues的使用
JSP EL表达式 param.paramValues的使用: <%@ page language="java" import="java.util.*" ...
- JSP EL表达式忽略方法
JSP EL表达式忽略方法: web.xml中,和jsp中:jsp中的等级要高一些: web.xml: <?xml version="1.0" encoding=" ...
- jsp EL表达式和JSTL标签if-else if-else用法
java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...
- oozie错误:javax.servlet.jsp.el.ELException: variable [***] cannot be resolved
完整错误: javax.servlet.jsp.el.ELException: variable [compute] cannot be resolved at org.apache.oozie.ut ...
- 11 JSP/EL表达式/EL函数
JSP * 概述: JSP(Java Server Pages)与Java Servlet一样,是在服务器端执行的不同的是先由服务器编译部署成Servlet执行 * JSP的运行原 ...
随机推荐
- py3.0第四天 函数
列表生成 # -*- coding: utf-8 -*- # data =[1,2,3] # for index,i in enumerate(data): # print (index,i) # d ...
- nginx高级用法汇总
1,nginx限制IP访问,允许IP访问 1.1 模块:nginx_http_access_module 注意:检测顺序是按配置顺序进行的,匹配首条规则将会被使用,所以要注意在配置文件配置的顺序. a ...
- 2019.03.28 bzoj3594: [Scoi2014]方伯伯的玉米田(二维bit优化dp)
传送门 题意咕咕咕 思路:直接上二维bitbitbit优化dpdpdp即可. 代码: #include<bits/stdc++.h> #define N 10005 #define K 5 ...
- String常用类
一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建 ...
- springsecurity 源码解读 之 RememberMeAuthenticationFilter
RememberMeAuthenticationFilter 的作用很简单,就是用于当session 过期后,系统自动通过读取cookie 让系统自动登录. 我们来看看Springsecurity的过 ...
- s6-6 TCP 连接释放
TCP 连接释放 任何一方在没有数据要传送的时候,都可以发送一个FIN置位了的 TCP 数据段 当FIN被确认的时候,该方向的连接被关闭 当双向连接都关闭了的时候,连接释放 两军队问题 两军队问题 ( ...
- Unity3D InputManager详解
首先说一下 Input 类,这个类很常用,API 大家基本都知道,这里记录几个使用频率没那么高的 API Input.acceleration:重力加速度传感器的值,加速度的方向,适用于移动平台. I ...
- mount的几个选项
一.mount -o noatime表示在读文件时不去更改文件的access time属性了,所以该选项会提升mount操作的执行效率. 二.mount --bind:等同于 -o bind可用于挂载 ...
- 解决YUM下Loaded plugins: fastestmirror Determining fastest mirrors 的问题
Centons下 其大概意思是fastestmirror不能使用,fastestmirror是yum的一个加速插件,具体我也没有仔细了解过,可能是系统不支持或者缺少组建导致的.处理办法就是禁用这个插件 ...
- bzoj1038(半平面交)
#include<iostream> #include<cstring> #include<cmath> #include<cstdio> #inclu ...