zoukankan      html  css  js  c++  java
  • EL表达式

            EL表达式。全名为Expression Language。它原本是JSTL 1.0为方便存取数据所自己定义的语言。

    当时EL仅仅能在JSTL 标签中使用。JSP2.0后,EL成为JSP规范的一部分,并添加了新的特性。


    在JSP页面中使用EL表达式,能够获取并显示页面数据,并能够简化对变量和对象的訪问。


    EL具有例如以下特点:

    一、可得到PageContext属性值

    二、可直接訪问JSP的内置对象,如page,request, session,application等

    三、运算符丰富。有关系运算符、逻辑运算符、算术运算符等扩展函数

    四、可与JAVA类的静态方法相应


    EL表达式都是以”${“開始。以”}”结束。如:${EL Expression} 。


            EL使用[]和.来訪问数据,当中${exprA.identifier}等价于${exprA[“identifier”]} 当要存取的属性名称中包括一些特殊字符,如 . 或 – 等并不是字母或数字的符号,就一定要使用 [ 

    ],EL表达式能够直接在JSP页面中使用,也能够作为元素属性的值,还能够在自己定义。但不能在脚本元素中使用。


            EL表达式语句在运行时,会调用pageContext.findAttribute方法,用标识符为keyword,分别从page、request、session、application四个域中查找对应的对象。找到则返

    回对应的对象,找不到则返回”” (注意,不是null,而是空字符串)。


            EL 有 11 个保留标识符,相应于 11 个 EL 隐式对象。所谓保留标识符的意思是指变量在命名时,应该避开上述的名字,以免程序编译时错误发生。

    详细的保留标识符例如以下

    表所看到的:


    以下是其源码:

    el.java源码:

    package com.el;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @SuppressWarnings("serial")
    public class el extends HttpServlet {
    
    	public el() {
    		super();
    	}
    
    	public void destroy() {
    		super.destroy(); 
    		// Put your code here
    	}
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		
    		doPost(request, response);
    		
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
        
    	//设置页面编码格式    
    	request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        
        request.setAttribute("req1","这里是Servlet中的request容器");
        request.getSession().setAttribute("sess1","这里是servlet中的session容器");
        this.getServletContext().setAttribute("app1","这里是servlet中的application容器");
    	request.getRequestDispatcher("jsp1/ElJsp.jsp?name1=这里是參数").forward(request, response);
    	
    	}
    
    	public void init() throws ServletException {
    	}
    
    }
    

    MyJsp.jsp源码:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'MyJsp.jsp' starting page</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="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    
      </head>
      
      <body>
      
        在容器中放入參数<br>
        
        <%request.setCharacterEncoding("UTF-8"); %>
        <%request.setAttribute("req","这里是request容器"); %>
        <%session.setAttribute("sess","这里是session容器"); %>
        <%application.setAttribute("app","这里是application容器"); %>
        <jsp:forward page="ElJsp.jsp?name=这里是參数"></jsp:forward>
        
      </body>
    </html>
    

    ElJsp.jsp源码:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'ElJsp.jsp' starting page</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="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    
      </head>
      
      <body>
      
       <hr>
       <h2>取出MyJsp.jsp页面中的数据</h2>
       request:${requestScope.req }<br>
       session:${sessionScope.sess }<br>
       application:${applicationScope.app }<br>
       param:${param.name }<br/>
       <hr/>
       
       <h2>取出servlet页面中的数据</h2>
       request:${requestScope.req1 }<br>
       session:${sessionScope.sess1 }<br>
       application:${applicationScope.app1 }<br>
       param:${param.name1 }<br/>
       <hr>
       
       <h2>算术运算</h2>
       加法:${2+2 }<br/>
       减法:${2-2 }<br/>
       乘法:${2*2 }<br/>
       除法:${2/2 }<br/>
       <hr>
       
       <h2>关系运算</h2>
       大于:${2>3 }<br/>
       小于:${2<3 }<br/>
       等于:${2==3 }<br/>
       不等于:${2!=3 }<br/>
       <hr>
       
       <h2>逻辑运算</h2>
       或:${2>3||2<3 }<br/>
       且:${2>3&&2<3 }<br/>
       非:${!(2==3) }<br/>
       <hr>
       
       <h2>三目运算</h2>
       2>3:${2>3?"回答正确!

    ":"回答错误。" }<br> <hr> </body> </html>


    web.xml源码:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    	
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>jsp1/MyJsp.jsp</welcome-file>
      </welcome-file-list>
      
      <servlet>
        <servlet-name>el</servlet-name>
        <servlet-class>com.el.el</servlet-class>
      </servlet>
      
      <servlet-mapping>
        <servlet-name>el</servlet-name>
        <url-pattern>/el</url-pattern>
      </servlet-mapping>
      
    </web-app>
    

    本人的项目名称是Test,所以直接訪问的路径例如以下所看到的:

    http://localhost:8080/Test/jsp1/MyJsp.jsp


    此时显示的结果如图所看到的:



    当訪问的路径是:http://localhost:8080/Test/el,此时的执行结果例如以下所看到的:



    由此我们能够看出。不管是否訪问相应页面中的session,此时的session仍然能够直接被其他页面所使用,除非关闭浏览器或者关闭相应的session。


  • 相关阅读:
    读《大道至简》第七、八章有感
    跨域AJAX
    简单的变长数组
    约瑟夫环问题
    BZOJ 1050: [HAOI2006]旅行comf
    BZOJ 1061: [Noi2008]志愿者招募
    BZOJ 1016: [JSOI2008]最小生成树计数
    20155326刘美岑 2016-2017-2 《Java程序设计》第5周学习总结
    6月13日云栖精选夜读:数梦工场完成A轮7.5亿融资 三个维度构建“新型互联网”
    Java使用POI实现数据导出excel报表
  • 原文地址:https://www.cnblogs.com/llguanli/p/6991087.html
Copyright © 2011-2022 走看看