【JSTL】-EL表达式

    目的:为了使JSP写起来更加简单,计算和输出存储在标志位置的Java对象的值,JSP2.0引入了EL表达式。

         EL的内置对象:pageScoperequestScopesessionScopeapplicationScope

 

    如果只是使用EL表达式不需要引入任何jar包,只要jsp/servlet容器实现了J2EE1.4/Servlet2.4JSP2.0规范就可以。

 

El的功能:

    与<jsp:getProperty />类似

    简化<jsp:getProperty />

  精确的访问存储对象

       Bean属性的简略记法

  空值取代错误消息

 

EL表达式语法:

${表达式}

注意:表达式的值为null,则页面显示为一个空字符串,而不是null.

 

EL的作用域:

【JSTL】-EL表达式_第1张图片

  使用EL时,默认以一定的顺序搜索四个作用域,将最先找到的变量值显示出来,只要找到某一个不为空的值则调用他的同toString()方法并返回调用结果,如果都没有找到,则返回空字符串,而不是null.


Demo:测试EL表达式

package com.lf.jstl;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class JstlElServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setAttribute("hello", "Hello World");
		request.getRequestDispatcher("/jstl_el.jsp").forward(request, response);
	}
}

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
	<h1>测试EL表达式</h1>
        不使用EL表达式获取字符串:<br>
        使用hello(jsp脚步):<%=request.getAttribute("hello") %><br>
        使用EL表达式获取字符串:<br><span style="white-space:pre">
        hello(el表达式 语法:$和{}): ${hello}<br> 
</body>
</html>

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
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%>"> 
  <body>
    <a href="servlet/JstlElServlet">测试EL表达式</a>
  </body>
</html>

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 	<servlet>
 		<servlet-name>JstlElServlet</servlet-name>
 		<servlet-class>com.lf.jstl.JstlElServlet</servlet-class>
 	</servlet>
 	
 	<servlet-mapping>
 		<servlet-name>JstlElServlet</servlet-name>
 		<url-pattern>/servlet/JstlElServlet</url-pattern>
 	</servlet-mapping>
 	
</web-app>

预览结果:


单机测试EL表达式:一种是不使用EL表达式的,一种是使用EL表达式获取字符串的。

【JSTL】-EL表达式_第2张图片

使用EL的好处:

1、代替复杂代码,省去条件判断

2、访问Bean的属性

EL提供了“.”和“[]”两种运算符来存取数据

使用userBean填充数据,并通过Bean实例来显示数据

Bean属性的简略记法:

1、点号记法:${BeanName.beanProperty}

2、数组记法:${BeanName["beanProperty"]}比较少用

3、使用EL表达式可以输出MVC的内容,代码简单。

ServletdoPost()doGet()方法中,保存在作用域范围内的数据,可以在其它的JSP页面获取


你可能感兴趣的:(el表达式)