• EL表达式和JSTL(三)——EL表达式


      在JSP的开发中,为了获取Servlet中存储的数据,通常需要很多的Java代码,这样的做法使的JSP页面非常混乱,为此,JSP2.0中提供了一种EL规范,是一种简单的数据访问语言。

    1.初识EL

      EL表达式是非常简单的,都是以"   ${   "   开始,以“  }  ”结束。具体格式如下:

      ${ 表达式}  ,表达式必须符合语法。

      ${表达式}:EL语句在执行,会调用pageContext.findAttribute()方法,以表达式为标识,分别从page,request,session,application四个域中查找相应的对象,找到此对象就返回此对象的值,没有找到就返回“  ”,不是null,从小到大的域查找,找到就不再找。

      例如:${pageScope.name}:从page域中查找name的属性,域后面必须跟一个Scope,当没有指定的域时,就从四个域中依次查找。

      实例:设置一个Myservlet,在MyServlet中给request中存属性,转发到myjsp.jsp

      Myservlet.java

    package cn.it.ELDemo;
    
    import java.io.IOException;
    
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    @WebServlet("/MyServlet")
    public class MyServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
       
        public MyServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //给域对象设置属性和值
            request.setAttribute("username", "itcase");
            request.setAttribute("password", "123");
            //创建一个转发器
            RequestDispatcher dispatcher=request.getRequestDispatcher("/myjsp.jsp");
            dispatcher.forward(request, response);
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    
    }

     myjsp.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>EL表达式的使用</title>
    </head>
    <body>
     用户名:<%=request.getAttribute("username") %><br>
     密码:<%=request.getAttribute("password") %><br/>
     
     <hr>
      使用EL表达式<br>
      用户名:${username }
      密码:${password}
      
    </body>
    </html>

     运行结果:

      

      EL表达式代替的是:<%=表达式%>,因此EL表达式只能够代替输出,如果设置属性则需要使用JSTL。

    2.EL中的运算

      EL表达式支持简单的运算,例如:“+”,“-”,“*”,“/”;

      “  .  ”点运算符:EL中的点号运算符用来表示访问JSP页面中的某些对象的属性,如JavaBean对象,List集合,Array数组,其语法格式如下:

        ${customer.name}

        这个相当于getName方法,因此,一个类中只有getXxx方法,无论有没有setXxx方法,或者有没有Xxx属性,使用customer.name获得getXxx方法里面的内容。

      “【】“方括号运算符于点运算符的功能相同,都用于访问JSP页面中的某些属性,当需要获得的属性名中包含一些特殊的符号,如”-“,”?“时可以使用方括号运算符来访问该属性:

        ${user["my_name"]}

      方括号运算符和点运算符:

    1. 在某些请况下,方括号运算符和点括号运算符是可以相互转换的,如${user.name}和${user.["name"]};
    2. 方括号运算符还可以访问List集合或者数组中某个指定的元素,如${user[0]};
    3. 方括号运算符和点运算符可以结合使用,如${user[0].name};

     

  • 相关阅读:
    绝对路径和相对路径
    基本的文件操作
    Python2和3字符编码区别
    java开发两年了,连个java代理模式都摸不透,你怎么跳槽涨薪?
    【建议收藏】阿里P7总结的Spring注解笔记,把组件注册讲的明明白白
    面试官:你说你精通SpringBoot,你给我说一下类的自动装配吧
    面试BAT问的最多的27道MyBatis 面试题(含答案和思维导图总结)
    Springboot 框架整理,建议做开发的都看看,整理的比较详细!
    直面秋招!非科班生背水一战,最终拿下阿里等大厂offer!
    写的太细了!Spring MVC拦截器的应用,建议收藏再看!
  • 原文地址:https://www.cnblogs.com/zhilili/p/10889872.html
Copyright © 2020-2023  润新知