el表达式

ELJSTL的作用:使用开发视图层更容易,JSP页面中不出现Java代码。

JSP标准动作的局限性:

只能操作JavaBean属性

不能自动类型转换

不能进行逻辑判断

而使用ELJSTL可以弥补这点。

一、EL表达式

ELExpression Language,表达式语言

1、语法

1)、以“${”开始,以“}”结束

${sessionScope.user.name}

2)、使用“.”和“[ ]”来取数据

${sessionScope.user.name}${sessionScope.user[name]}功能相同

.[]在大多数情况下功能相同,但有两点不同之处:

1)、当要取的的属性中包含特殊字符时,不能使用“.”,而应该使用“[]”:

如:头对象header中的User-Agent属性,只能使用${header[user-Agent]}

2)、[]中的内容可以是一个变量,变量中存放要取属性的名字,实现动态存取,但“.”不能实现动态存取:

data的值是“name”时,${sessionScope.user[data]}${sessionScope.user.name}功能相同,当data的值是“sex”时,${sessionScope.user[data]}${sessionScope.user.sex}功能相同。

2EL变量

${user}表示在某一范围中找出名为user的变量,

查找范围为:pagerequestsesionapplication,从小到大依次查找,直到找到为止,找不到则返回null

也可指定在某一范围内查找:${sessionScope.user}

范围名称: 四个对象都是EL的隐含对象。

范围

EL中的名称

page

pageScope

request

requestScope

session

sessionScope

application

applicationScope

3、自动转换类型

EL表达式可实现数据类型的自动转换,只要是可相互转换的类型,如:数值型转换为字符串,字符串转换为数值型,如果结果为null,则什么都不显示,如果转换出错,则报错。

4EL隐含对象

EL共有11个隐含对象(Implicit Object):

隐含对象

类型

说明

pageContext

javax.servlet.ServletContext

表示此JSPPageContext

pageScope

java.util.Map

page范围

requestScope

java.util.Map

request范围

sessionScope

java.util.Map

session范围

applicationScope

java.util.Map

application范围

param

java.util.Map

request.getParameter(),返回String

paramValues

java.util.Map

request.getParameterValues(),返回String[]

header

java.util.Map

request.getHeader(),返回String

headerValues

java.util.Map

request.getHeaders(),返回String[]

cookie

java.util.Map

request.getCookies()

initParam

java.util.Map

ServletContext.getInitParameter(),返回String

范围隐含对象:pageScoperequestScopesessionScopeapplicationScope,在这四个范围隐含对象中,只能取出属性值(Attribute),即:.getAttribute()方法的功能,不能取得其他信息。

如:从sessionScope中取出loginUser的用户名:

${sessionScope.loginUser.username}

如果session中未找到loginUser,则什么都不显示。

如果session中包含loginUser,并且有getUsername()方法,则返回username, username为空,则什么都不显示。

如果loginUser没有getUsername()方法,则发生找不到属性的异常:

javax.el.PropertyNotFoundException: Property 'xx' not found on type org.wyq.entity.User

输入隐含对象:paramparamValues

用于获取URL中的参数和<form>表单提交的参数,即:request.getParameter()方法和request.getParameterValues()

如果使用paramValues获取一组参数值,如一组相同名字的复选框的值,返回一个数组,使用[]取得其中的值:

如:

<form action="">

  <input type="checkbox" name="hibit" value="Reading"/>看书<br />

  <input type="checkbox" name="hibit" value="Game"/>游戏<br />

  <input type="checkbox" name="hibit" value="Travel"/>旅游<br />

  <input type="submit" value="提交"/>

  </form>

  爱好:${paramValues.hibit[0] }${paramValues.hibit[1] }

注意:如果下标越界,则什么都不输出。如果数据中包含中文,需要设置编码格式才能正确取出数据。

initParam:获取web.xml文件中配置的参数。即:application.getInitParameter()如:

<context-param>

  <param-name>password</param-name>

  <param-value>wyq</param-value>

  </context-param>

可使用${initParam.password }获取。

如果想要在页面中输出${initParam.password },只需要在前边加一个“\”,\${initParam.password }

5EL运算符

算术运算符:+-*/(div),%(mod)

关系运算符:==(eq)!=(ne)>(gt)<(lt)>=(ge)<=(le)

逻辑运算符:&&(and)||(or)!(not)

empty运算符:${empty param.name},如果param.name为空,返回true,否则返回false

条件运算符:?:,三元运算符。

例:

<c:if test="${empty sessionScope.loginUser}">

请登录

</c:if>

<c:if test="${!(empty sessionScope.loginUser)}">

您好:${sessionScope.loginUser.username}

</c:if>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值