EL表达式超详细讲解

    xiaoxiao2022-07-13  148

    1、El表达式的格式:${表达式} 但是需要注意的是,el表达式中的表达式都必须符合语法规则 2、为什么需要用EL表达式 我们来看看用jsp的脚本和EL二者的区别吧 Servlet中的代码:

    //设置编码方式,防止出现乱码 response.setContentType("text/html;charset=utf-8"); //设置一个值 request.setAttribute("userName", "蔡熙贝"); //请求转发到页面 request.getRequestDispatcher("/eljsp01.jsp").forward(request, response);

    可见我们在上面设置了一个值,现在我们通过EL和JSP脚本语言分别尝试取值:

    <body> <%--使用jsp脚本语言取值 --%> <% String name = (String)request.getAttribute("userName"); %> <h4> 我是用jsp脚本语言拿到的值:<%=name %> </h4> <hr> <%--使用EL表达式取值 --%> <h4> 我是通过EL表达式取到的值;${userName } </h4> </body>

    然后我们看看效果吧: 我们明显看见,使用EL表达式避免了在JSP页面出现太多的java代码,这是非常提高效率的 3、EL标识符、保留字 4、EL中的变量 就比如:${name} 其中的name就是一个基本的存储单元 5、EL中的常量 1、布尔常量 说白了就是 true 和 false eg: 1大于3 得到的是false       3大于1得到的是true 2、整型常量3、浮点型常量4、字符型常量5、null常量 5、EL中的运算符 这里我们说一些比较常用的吧,简单的就略过了 1、empty运算符 比如       ${empty name} 如果name的值为null,返回true 、反之,返回false 2、三目运算符3、条件运算符

    6、Web域相关对象 在EL表达式中,提供了4个获取指定域中数据的隐式对象: 1、 ${pageScope.userName } 2、 ${requestScope.userName } 3、 ${sessionScope.userName } 4、 ${applicationScope.userName } 需要注意的是,EL只能在这四个域中取值、我们来看看代码:

    <body> <%--使用jsp脚本语言取值 --%> <% //我们设置4个域的值 pageContext.setAttribute("username", "people1"); request.setAttribute("username", "people2"); session.setAttribute("username", "people3"); application.setAttribute("username", "people4"); %> <%--EL取值 --%> 我是pageScope获取的:${pageScope.username }<br/> 我是requestScope获取的:${requestScope.username }<br/> 我是sessionScope获取的:${sessionScope.username }<br/> 我是applicationScope获取的:${applicationScope.username } </body>

    运行截图

    我们可以看见都分别取到了对应域中的数据,并且使用EL表达式获取数据的值时,并不需要使用隐式对象指定查找域,而是直接使用域中的属性名称即可

    7、param和paramValues对象 EL表达式提供了param和paramValues两个隐式对象,这两个隐式对象专门用于获取客户端访问JSP页面是传递的请求参数 1、param是用于获取某个传递对象的某个值,是一个Map类型,与request.getParameter()的作用一样,但是在EL中返回的值是空时,返回的是空值,而不是返回null 2、当请求中有多个数据时,可以使用paramValues对象来获取请求参数的所有值 我们还是来演示一下吧:看代码》》》》 param01.jsp页面

    <body> <form action="/day0523/param02.jsp" method="post"> name : <input type="text" name="name" /> password:<input type="password" name="pwd" /> <input type="submit" value="登录"> </form> </body>

    param02.jsp页面

    <body> <%--获取param01.jsp页面传递的参数 --%> 姓名:${param.name } 密码:${param.pwd } </body>

    运行截图:

    可见页面param01.jsp传递的值被页面param02.jsp获取到了,所以param和paramValues是用来JSP页面之间传递值的

    最新回复(0)