JavaWeb之EL表达式

一、EL表达式介绍

是一种在JSP页面获取数据的简单方式(只能获取数据,不能设置数据)

${expression}

二、EL从四大域中获取属性以及搜索顺序

		request:类型:HttpServletRequest;表示当前的请求。
		session:类型:HttpSession;表示一次会话。	与用户一一对应。
		application:类型:ServletContext;表示应用程序本身。实现多用户数据共享。
		pageContext:类型:PageContext;表示页面上下文,可以用于定义当前页面中需要使用的变量。
		特殊:该对象还可以获得其它8个内置对象。
		pageContext.setAttribute("key", "pageContext");
		request.setAttribute("key", "request");
		session.setAttribute("key", "session");
		application.setAttribute("key", "application");
<body>
	<%
		pageContext.setAttribute("key", "pageContext");
		request.setAttribute("key", "request");
		session.setAttribute("key", "session");
		application.setAttribute("key", "application");
	%>
	${key }
</body>
结果:pageContext 
根据key检索顺序(由小到大):pageContext->request->session->application

三、EL表达式中的运算

1.关系运算

关系运算符范例结果
==或eq 5 = = 5 或 {5==5}或 5==5{5eq5}true
!=或ne 5 ! = 5 或 {5!=5}或 5!=5{5ne5}false
<或lt 3 < 5 或 {3<5}或 3<5{3lt5}true
>或gt${3>5}或{3gt5}false
<=或le 3 < = 5 或 {3<=5}或 3<=5{3le5}true
>=或ge5}或${3ge5}false

2.逻辑运算

关系运算符范例结果
&&或andKaTeX parse error: Expected '}', got '&' at position 4: {A &̲& B}或{A and B}true/false
||或or A ∥   B 或 {A \|\ B}或 A B{A or B}true/false
!或not ! A 或 {! A }或 !A{not A}true/false

3.Empty运算符

${! empty key}
${ empty key}
1若key为null时,返回true  
2若key为空String时,返回true  
3若key为空Array时,返回true  
4若key为空Map时,返回true  
5若key为空Collection时,返回true  
6否则,返回false 

4.[] 运算符

[] 运算符可以输出有序集合中某个元素的值。

<body>
	<%
		Map <String,Object> map = new HashMap<String,Object>();
		map.put("a.a", "aa");
		map.put("a+aa", "aaa");
		map.put("aa-aa", "aaaa");
		
		request.setAttribute("map", map);
	%>
	${ map["a.a"] }<br>
	${ map['a+aa'] }
</body>
结果:
aa
aaa 

EL表达式中的11个内置对象

pageScope:获取pageContext域属性,相当于pageContext.getAttribute("xxx")

requestScope:获取request域属性,相当于request.getAttribute("xxx")

sessionScope:获取session域属性,相当于session.getAttribute("xxx")

applicationScope:获取application域属性,相当于application.getAttribute("xxx")

param:对应参数,它是一个Map,其中key是参数,value是参数值,适用于单值的参数,相当于request.getParameter("xxx")

paramValues:对应参数,她是一个Map,其中key是参数,value是多个参数值,适用于多值的参数,相当于request.getParameterValues("xxx")

header:对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值的请求头,相当于request.getHeader("xxx")

headerValues:对应请求头,它是一个Map,其中key表示头名称,value是多个头值,适用于多值的请求头,相当于request.getHeaders("xxx")

initParam:获取web.xml中<context-param>内的参数,${ initParam.xxx},xxx就是<param-name>标签内的值,进而得到<param-value>中的值

cookie:用于获取cookie,Map<String,Cookie>,其中key是cookie的name,value是cookie对象,例如${cookie.JSESSIONID.value }就是获取sessionId

pageContext:可以获取JSP九大内置对象,相当于使用该对象调用getxxx()方法,例如pageContext.getRequest()可以写为${pageContext.request)

1.从四个域中获取特定属性

EL获得pageContext域中的值:${pageContextScope.key};

EL获得request域中的值:${requestScope.key};

EL获得session域中的值:${sessionScope.key};

EL获得application域中的值:${applicationScope.key};

2.pageContext的使用

<body>
    <%--
    request.getScheme() 它可以获取请求的协议
    request.getServerName() 获取请求的服务器ip或域名
    request.getServerPort() 获取请求的服务器端口号
    getContextPath() 获取当前工程路径
    request.getMethod() 获取请求的方式(GET或POST)
    request.getRemoteHost()  获取客户端的ip 地址
    session.getId() 获取会话的唯一标识
    --%>
    <%
        pageContext.setAttribute("req", request);
    %>
    <%=request.getScheme() %> <br>
    1.协议: ${ req.scheme }<br>
    2.服务器ip:${ pageContext.request.serverName }<br>
    3.服务器端口:${ pageContext.request.serverPort }<br>
    4.获取工程路径:${ pageContext.request.contextPath }<br>
    5.获取请求方法:${ pageContext.request.method }<br>
    6.获取客户端ip地址:${ pageContext.request.remoteHost }<br>
    7.获取会话的id编号:${ pageContext.session.id }<br>

</body>
结果:
http
1.协议: http
2.服务器ip:localhost
3.服务器端口:8080
4.获取工程路径:/first
5.获取请求方法:GET
6.获取客户端ip地址:0:0:0:0:0:0:0:1
7.获取会话的id编号:CE8240C1A5B29C1271D0D9A1EAB3A2DA

3.其他隐含对象

传入数据:username=wzg168&password=666666&hobby=java&hobby=cpp
<body>
    输出请求参数username的值:${ param.username } <br>
    输出请求参数password的值:${ param.password } <br>

    输出请求参数username的值:${ paramValues.username[0] } <br>
    输出请求参数hobby的值:${ paramValues.hobby[0] } <br>
    输出请求参数hobby的值:${ paramValues.hobby[1] } <br>
    <hr>
    输出请求头【User-Agent】的值:${ header['User-Agent'] } <br>
    输出请求头【Connection】的值:${ header.Connection } <br>
    输出请求头【User-Agent】的值:${ headerValues['User-Agent'][0] } <br>
    <hr>
    获取Cookie的名称:${ cookie.JSESSIONID.name } <br>
    获取Cookie的值:${ cookie.JSESSIONID.value } <br>
    <hr>

    输出&lt;Context-param&gt;username的值:${ initParam.username } <br>
    输出&lt;Context-param&gt;url的值:${ initParam.url } <br>
</body>
结果:
输出请求参数username的值:wzg168
输出请求参数password的值:666666
输出请求参数username的值:wzg168

输出请求参数hobby的值:java
输出请求参数hobby的值:cpp
输出请求头【User-Agent】的值:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0
输出请求头【Connection】的值:keep-alive
输出请求头【User-Agent】的值:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0

获取Cookie的名称:JSESSIONID
获取Cookie的值:CE8240C1A5B29C1271D0D9A1EAB3A2DA
输出<Context-param>username的值:
输出<Context-param>url的值: 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值