Java学习——JSTL标签与EL表达式之间的微妙关系
原文总结的太好了,忍不住记录、转发。
原文地址:http://blog.csdn.net/u010168160/article/details/49182867
很高兴,今天能和大家分享刚学的一些新知识。我们在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代码编写,让我们分工更加明确。我们这个世界就是需要把复杂的东西简单化,划分粒度要适当,正如我们之前所说的保证单一职责的原则。希望通过我们不断的积累和总结,我们以后的学习会越来越简单,进步越来越快。
Java学习——JSTL标签与EL表达式之间的微妙关系的更多相关文章
- STL标签与EL表达式之间的微妙关系
很高兴,今天能和大家分享刚学的一些新知识.我们在java开发过程中经常会在jsp中嵌入一些java代码,比如<%=request.getParameter("id")%> ...
- JSP、JSTL标签、EL表达式
JSP.JSTL标签.EL表达式 1.EL表达式:${} 功能: 获取数据 执行运算 获取web开发的常用对象 2.JSP标签 例如: jsp标签还有很多功能,这里只列举出一种. <jsp:fo ...
- 2017/2/14:JSTL标签与el表达式
一.JSTL标签介绍 1.什么是JSTL? JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...
- JSP常用标签——JSTL标签和EL表达式
一.JSTL简介 1.什么是JSTL JSTL是Java中的一个定制标记库集.(这个标记库集不需要自己编写,可以直接使用) 2.为什么要使用JSTL 实现了JSP页面中的代码复用(基于标签库原理,重复 ...
- jsp jstl标签库 el表达式
一.JSTL标签是什么? 提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言. 同时还提供了格式化数据和日期的方法.实现这些功能需要I18N格式标签库(I18N-c ...
- Java之JSTL标签与JavaBean
Java之JSTL标签与JavaBean JSP.JSTL标签及 EL表达式 <!-- jstl表达式--> <dependency> <groupId>javax ...
- jstl标签不起作用不管用,jstl标签直接输出表达式
jstl标签不起作用不管用,jstl标签直接输出表达式 解决办法: 在jsp页面头上 引入: <%@ page isELIgnored="false"%> 便能够解决.
- Go语言学习——彻底弄懂return和defer的微妙关系
疑问 前面在函数篇里介绍了Go语言的函数是支持多返回值的. 只要在函数体内,对返回值赋值,最后加上return就可以返回所有的返回值. 最近在写代码的时候经常遇到在return后,还要在defer里面 ...
- JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)
1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% requ ...
随机推荐
- VUE API 重点
VUE API 重点 生命周期方法 每个组件都有生命周期,是向 ReactJs 学习的. computed 在一个组件声明一个人,人有名,人有姓,输入姓和名.((&--&%--& ...
- 如何给 FastAdmin 单独设置域名
如何给 FastAdmin 单独设置域名 (声明:不建议给后台固定的域名,主要是安全问题) FastAdmin 是基于 ThinkPHP5 框架编写的,ThinkPHP 5 支持域名路由,可对模块单独 ...
- PDF通过剪裁来实现打印字体变大
之前打印论文,很多都是一页两版,这个时候字体会非常小:打印缩放放大后,字又容易出了打印边界. 这种情况可以采用Adobe IX Pro(只要是pro应该都可以)进行边缘裁剪来实现字体放大.只需要剪裁( ...
- STM32F103外部晶振由8M变为12M
STM32官方提供的库文件中,HSE(外部高速时钟)默认为8MHz,最高主频为8*9=72MHz,如果将HSE变为12MHz,不修改库文件的话,最高主频则变为12*9=108MHz,最典型的问题就是U ...
- 苹果手机 iTunes 资料备份到另一手机
百度教程 https://jingyan.baidu.com/article/d621e8da332e602865913f8e.html 直接使用iTunes将老手机的资料备份, (可能需要关闭手机定 ...
- ubuntu 源更新(sources.list)
首先备份源列表: sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup 而后用gedit或其他编辑器打开(也可以复制到Windows下打 ...
- MongoDB-WriteConcern
WriteConcern safe=false 非安全模式 很快
- 分布式锁之二:zookeeper分布式锁2
示例: package com.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.zoo ...
- android欢迎页
在进入程序后,会在一个页面停留几秒然后自动跳转到程序主界面,这个页面就是欢迎页. 首先新建个java文件,给他起名叫做WelcomeActivity 在里面我们通过一个匿名类new Handler,在 ...
- node.js中的buffer.fill
buffer.fill(value, [offset], [end]) 接收参数: value 将要填充的数据 offet 填充数据的开始位置,不指定默认为 0 ...