zoukankan      html  css  js  c++  java
  • 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()方法去获取返回值。

  • 相关阅读:
    tile38 复制配置
    The Guardian’s Migration from MongoDB to PostgreSQL on Amazon RDS
    tile38 一款开源的geo 数据库
    sqler sql 转rest api 的docker 镜像构建(续)使用源码编译
    sqler sql 转rest api javascript 试用
    sqler sql 转rest api redis 接口使用
    sqler sql 转rest api 的docker image
    sqler sql 转rest api 的工具试用
    apache geode 试用
    benthos v1 的一些新功能
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5765523.html
Copyright © 2011-2022 走看看