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。


  • 相关阅读:
    Asp.Net Web API 2第八课——Web API 2中的属性路由
    Asp.Net Web API 2第七课——Web API异常处理
    Asp.Net Web API 2第六课——Web API路由和动作选择
    Asp.Net Web API 2第五课——Web API路由
    开始学习python
    BMI 小程序 购物车
    深浅copy 文件操作
    字典 dict 集合set
    基本数据类型 (str,int,bool,tuple,)
    python 运算符
  • 原文地址:https://www.cnblogs.com/llguanli/p/6991087.html
Copyright © 2011-2022 走看看