JavaEE之EL表达式

一 EL :为了消除jsp中的Java代码

原因:
原来servlet(增加数据)—>jsp(显示数据)
传统的在JSP中用java代码显示数据的弊端,类型转换、需要处理null、代码参杂
JSP
JavaEE之EL表达式_第1张图片

EL
JavaEE之EL表达式_第2张图片

语法:
${EL表达式}
a.EL不需要导包
b.在el中调用属性,其实是调用的getXxx()方法

${范围.对象.属性.属性的属性 }

操作符:操作:属性,不是对象
. : 使用方便
[] : 如果是常量属性,需要使用双引号/单引号 引起来;比点操作符更加强大
中括号操作符如图
在这里插入图片描述

[]强大之处如下:

a.可以容纳一些 特殊符号 (. ? -)

图获取特殊符号
在这里插入图片描述

b.[]可以容纳 变量属性 (可以动态赋值)

String x = “a”;
${requestScope.a}等价于${requestScope["a"]}等价于${requestScope[x]}
注意 不加引号是变量

c.可以处理数组

${requestScope.arr[0] }在这里插入图片描述

d 处理map对象

前端
${requestScope.map.cn}
${requestScope.map[‘us’]}

Map map = new HashMap<>();
map.put(“cn”,“中国”);
map.put(“us”,“美国”);
request.setAttribute(“map”,map);
request.setAttribute(“user”,user);
request.getRequestDispatcher(“el.jsp”).forward(request,response);

三 EL关系逻辑运算符

JavaEE之EL表达式_第3张图片

四 Empty运算符:判断一个值null,不存在(null)值为true

${empty requestScope["name"]}

五 EL表达式的隐式对象(不需要new 就能使用的对象,自带的对象)

比如说jsp中的request/response(不用new直接能用)

a 作用域访问对象(EL域对象)

如果不指定域对象,则会根据从小到大的顺序,依次取值pageScope 类比:
pageContext JSP页面容器 (page对象); 当前页面有效
request 请求对象 同一次请求有效
session 会话对象 同一次会话有效
application 全局对象 全局有效(整个项目有效)

pageScope
requestScope
sessionScope

后端servlet中request对象获取Session对象,添加session
request.getSession().setAttribute(“sessionkey”,“sessionValue”);
前端利用sessionScope域对象
${sessionScope.sessionkey}
输出sessionValue
${sessionkey}
没有指定哪个域 从pageScope

applicationScope

b 参数访问对象:获取表单数据(超链接中传的值 a.jsp?a=b&c=d地址栏的值)

(JSP中获取表单数据request.getParameter(),request.getParameteValues())
JSP中request.getParameter() 获取参数---------对应---------${param}
JSP中request.getParameterValues()获取数组---------对应---------${paramValues}

c JSP隐式对象

pageContext: EL可以通过pageContext在jsp中获取其他内置对象

通过EL获取JSP 九大内置对象
${pageContext.page }获取jsp中的page对象
${pageContext.request }获取jsp中的request对象
${pageContext.sessoin }获取jsp中的session对象

${pageContext.getSession() }------等效于${pageContext.sessoin }
可以使用此方法级联获取方法
${pageContext.getRequest().getServerPort }---------等效于${pageContext.request.serverPort }
${pageContext.方法名去掉()和get并且将首字母小写 }

你可能感兴趣的:(JavaWeb)