• EL表达式


    参考资料:

    EL表达式:http://www.cnblogs.com/xdp-gacl/p/3938361.html

    在JEE6中,JSP中的EL表达式支持带参数的方法调用了(方法必须是static)。可以像这样调用:

         ${foo.bar(baz)} 。

    在JSP页面用EL表达式调用对象的属性的话,一般情况下是调用的getXxx()方法(或者isXxx()方法)

    例如你写了个类叫做Person

    package TestPackage;
    
    public class Person {
    
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPassword() {
            return "get密码";
        }
    
        public boolean isGoodman() {
            return true;
        }
    
        public boolean isBadman() {
            return false;
        }
    }

    那么如果我在ElTest.jsp这个jsp页面中用EL表达式获取各个属性如下:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@page import="TestPackage.Person"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                + request.getServerName() + ":" + request.getServerPort()
                + path + "/";
    %>
    
    <%
        request.setCharacterEncoding("UTF-8");
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>El表达式</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    </head>
    
    <body>
    
        <%
            Person p1 = new Person();
            p1.setName("李好");
            request.setAttribute("person1", p1);
        %>
        <br> 获取person.name属性:${requestScope.person1.name }
        <br> 获取person.password属性:${person1.password }
        <br> 这个人是好人吗?:${requestScope.person1.goodman }
        <br> 这个人是坏人吗?:${person1.badman }
    </body>
    </html>

    运行结果:

    ${name }来获取,之所以可以这样调用是因为我们写了public String getName() {}这个方法

    ${name } EL表达式会自动的把name的首字母n转成大写变成Name,然后加上get,也就是拼接成getName()这个方法

    然后他去User类中找这个方法,找到了就执行这个方法获取返回值,EL表达式就是这样获取到javabean的属性值的.

     这个${request.person1.name } EL表达式里面的name不是我们在Person类中定义的这个name属性,而是 public String getName()这个方法方法名去掉get这三个字母然后把N变成小写之后的字符串,也就是name。意思就是说,就算我们在Person类中没有定义  private String name ;  这个name属性,而直接写成

    public String getName() {
        return "小明";
    }

    EL表达式也会获取到这个方法的返回值.

    我们一般说用EL获取某某对象的属性,其实就是那个对象的属性,有一个对应get方法,而在这个get方法里面用return 返回了那个属性值,所以才可以获取到.

    再然后就是我再上面代码里有一个getPassword()方法,但是没有定义password这个属性,这样子做是为了证明只要有get方法,EL表达式在页面中就可以获取到.只要你把getPassword的get去掉,然后把Password的P换成小写p,变成password再jsp页面也是可以通过${person1.password }获取getPassword()这个方法的返回值的.

    其实EL表达式默认还会调用 is开头的isXxx()方法去获取返回值。

  • 相关阅读:
    用GitHub Pages搭建博客(三)
    Beta阶段项目总结
    最终团队绩效评估
    Alpha阶段项目总结
    项目发布
    Alpha版总结会议
    第二次冲刺周期站立会议(10)
    第二次冲刺周期站立会议(9)
    第二次冲刺周期站立会议(8)
    第二次冲刺周期站立会议(7)
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5765523.html
Copyright © 2020-2023  润新知