Java学习——JSTL标签与EL表达式之间的微妙关系

原文总结的太好了,忍不住记录、转发。

原文地址:http://blog.csdn.net/u010168160/article/details/49182867

目录(?)[-]

  1. 一EL表达式
    1. EL相关概念
    2. EL基本格式
    3. EL语法组成-标识符
      1. PS使用EL的时候默认会以一定顺序pageContextrequestsessionapplication搜索四个作用域将最先找到的变量值显示出来
    4. 开启和关闭EL表达式
  2. 二JSTL标签库
    1. 相关概念
    2. JSTL标签库分类
    3. JSTL的优点
    4. 为什么要用JSTL
    5. 使用方法
  3. 总结

很高兴,今天能和大家分享刚学的一些新知识。我们在Java开发过程中经常会在jsp中嵌入一些java代码,比如<%=request.getParameter("id")%>,在了解java代码的人员看来,这很简单,可是对于美工或者前台不懂java代码的人员,这就是个头疼事儿了。那么今天我们就来解决一下这个问题。


一、EL表达式

1、EL相关概念

JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段。所以我们先来学习EL表达式

EL(Expression Language)表达式语言:用于计算和输出存储在标志位置(page、request、session、application)的java对象的值,然后对它们执行简单操作;EL是JSP2.0规范的一部分,只要容器支持Servlet2.4/JSP2.0,就可以在JSP2.0网页中直接使用EL。通常与
JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。

2、EL基本格式

EL表达式的格式:用美元符号($)定界,内容包括在花括号({})中;

例如:
点号记法:${BeanName.beanProperty}
数组记法:${BeanName[“beanProperty”]}
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

此外,您可以将多个表达式与静态文本组合在一起以通过字符串并置来构造动态属性值;

例如:Hello {loginInfoBean.suser} ${loginInfoBean.spwd}
  • 1
  • 1

3、EL语法组成-标识符

  • (1)EL隐藏对象

    常用

PS:使用EL的时候,默认会以一定顺序(pageContext、request、session、application)搜索四个作用域,将最先找到的变量值显示出来。

  • (2)EL存取器

存取器用来检索对象的特性或集合的元素。存取器: 通过 “[]” 或 “.” 符号获取相关数据

例:
//获取输出bean中的suser属性值;
${userBean.suser}  或  ${userBean[“suser”]}
//获取map中key为id对应的值;
${mcType[“id”]} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • (3)EL运算符

4、开启和关闭EL表达式

  • (1)开启方法

在servlet2.4之后默认方法为false,即可以不写或写成

<%@ page isELIgnored="false" %>
  • 1
  • 1
  • (2)关闭方法
<%@ page isELIgnored="true" %>
  • 1
  • 1

还有一种批量禁用EL的方法,可以在WEB-INF/web.xml中使用jsp-property-group标签批量禁用el,web.xml中进行如下配置。

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
    version="2.4">
    <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <el-ignored>true</el-ignored>
        </jsp-property-group>
    </jsp-config>
</web-app>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

二、JSTL标签库

1、相关概念

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL1.0 由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器组成。

如果要使用JSTL,则必须引用jstl.jar和 standard.jar两个包。

2、JSTL标签库分类

core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL 的标记。

format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行JSP页面的国际化。

xml 库包含一些标记,这些标记用来操作通过XML表示的数据,而 sql 库定义了用来查询关系数据库的操作。

两个 JSTL 标记库验证器允许开发人员在其 JSP 应用程序中强制使用编码标准。

3、JSTL的优点

4、为什么要用JSTL

我们JSP用于开发信息展现页非常方便;也可以嵌入java代码(scriptlet、表达式和声明)代码用来实现相关逻辑控制。看下面程序。但这样做会带来如下问题:

jsp维护难度增加;
  • 1
  • 1
出错提示不明确,不容易调试;
  • 1
  • 1
分工不明确;(即jsp开发者是美工,也是程序员);
  • 1
  • 1
最终增加程序的开发成本;
  • 1
  • 1

解决上面的问题可以使用定制标记库,JSTL使JSP开发者可以减少对脚本元素的需求,甚至可以不需要它们,从而避免了相关的维护成本。使分工更明确。JSTL一般配合EL一起使用,因此先看看EL.

5、使用方法

需要引入标签库

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

详细步骤见下一篇博客:java学习——Jstl标签库大全

总结:

我们通过对jstl和el的学习,可以在前台使用简单的标签来代替我们需要的java代码编写,让我们分工更加明确。我们这个世界就是需要把复杂的东西简单化,划分粒度要适当,正如我们之前所说的保证单一职责的原则。希望通过我们不断的积累和总结,我们以后的学习会越来越简单,进步越来越快。

时间: 2024-10-02 23:35:01

Java学习——JSTL标签与EL表达式之间的微妙关系的相关文章

struts标签、OGNL表达式、JSTL标签、EL表达式

Struts标签.Ognl表达式.el表达式.jstl标签库这四者之间的关系和各自作用 我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用    Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码复用.Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求. Struts2的标签库有一个巨大的改进之

JSP常用标签——JSTL标签和EL表达式

一.JSTL简介 1.什么是JSTL JSTL是Java中的一个定制标记库集.(这个标记库集不需要自己编写,可以直接使用) 2.为什么要使用JSTL 实现了JSP页面中的代码复用(基于标签库原理,重复率较高的代码块支持复用,提高效率) 书写JSP页面时可读性更强(长得很像xml,方便前端查看和参与开发) 用事实告诉你为什么使用JSTL: 实现: 但是,使用JSTL效果如下: 3.JSTL环境搭建 JSTL的下载: 下载地址:http://archive.apache.org/dist/jakar

Go语言学习——彻底弄懂return和defer的微妙关系

疑问 前面在函数篇里介绍了Go语言的函数是支持多返回值的. 只要在函数体内,对返回值赋值,最后加上return就可以返回所有的返回值. 最近在写代码的时候经常遇到在return后,还要在defer里面做一些收尾工作,比如事务的提交或回滚.所以想弄清楚这个return和defer到底是什么关系,它们谁先谁后,对于最后返回值又有什么影响呢? 动手验证 了解下来,问题比我想的要复杂,不信你先看看下面这段代码输出结果是啥 package main import "fmt" func main(

JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)

1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% request.setCharacterEncoding("UTF-8"); %> <jsp:forward page="/index.jsp"> <jsp:param value="张三" name="userName&q

Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库

一.jsp部分 只要是与页面显示相关的都是重点 1.jsp的脚本 <%java代码%>:被翻译到service方法内部,局部变量,局部的功能 <%=表达式或变量%>:翻译成service方法中out.write(表达式或变量) <%!java代码%>:被翻译成servlet的全局的内容,方法,全局变量 2.jsp的运行原理 jsp在运行时翻译成servlet index.jsp------>work/index_jsp.java----->work/inde

JAVA学习JSTL与EL

一.基础 1.EL(Expression Language):为了使jsp写起来更加简单,提供了在Jsp中简化表达式的方法 2.JSTL:(JSP Standard Tag Library)jstl标准标签库,由apache实现 3.JSTL一般要配合EL表达式一起使用,由于在JSTL在赋值时会大量的使用EL,能够说EL是JSTL的一种辅助. 4.在使用时:JSTL须要引入:jstl.jar和Standart.jar到WEB_INF/lib文件夹下,可是仅仅使用EL表达式不须要引用不论什么jar

JSP三大指令,九大内置对象,JSP动作标签,EL表达式与函数库

JSP三大指令 ---------------------------------------------- 一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:格式:<%@page language="java" info="xxx"...%> * pageEncoding和contentType: > pageEncoding:它指定当前jsp页面的编码,只要不说谎,就不会有乱码!在服务器要把jsp编译成.jav

jsp三大指令,九大内置对象,JSP动作标签,EL表达式及函数库

JSP三大指令 一个jsp页面中,可以有0~N个指令的定义! page –> 最复杂:格式:<%@page language="java" info="xxx"-%> pageEncoding和contentType: pageEncoding:它指定当前jsp页面的编码,只要不说谎,就不会有乱码!在服务器要把jsp编译成.java时需要使用pageEncoding! contentType:它表示添加一个响应头:Content-Type!等同于r

JavaWeb学习----JSTL标签库

一.JSTL简介: JSTL全名为JavaServer Pages Standard Tag Library,中文名称为JSP标准标签函数库,目前最新的版本为1.2.JSTL是由JCP(Java Community Process)所指定的标准规格,它主要提供给Java Web开发人员一个标准通用的标签函数库. Web 程序开发人员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序可读性.维护性和方便性. 既然是库文件,那我们就要