STL标签与EL表达式之间的微妙关系
很高兴,今天能和大家分享刚学的一些新知识。我们在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
此外,您可以将多个表达式与静态文本组合在一起以通过字符串并置来构造动态属性值;
例如:Hello {loginInfoBean.suser} ${loginInfoBean.spwd}
- 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
- (3)EL运算符
4、开启和关闭EL表达式
- (1)开启方法
在servlet2.4之后默认方法为false,即可以不写或写成
<%@ page isELIgnored="false" %>
- 1
- (2)关闭方法
<%@ page isELIgnored="true" %>
- 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
二、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
分工不明确;(即jsp开发者是美工,也是程序员);
- 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
详细步骤见下一篇博客:java学习——Jstl标签库大全
总结:
我们通过对jstl和el的学习,可以在前台使用简单的标签来代替我们需要的java代码编写,让我们分工更加明确。我们这个世界就是需要把复杂的东西简单化,划分粒度要适当,正如我们之前所说的保证单一职责的原则。希望通过我们不断的积累和总结,我们以后的学习会越来越简单,进步越来越快。
STL标签与EL表达式之间的微妙关系的更多相关文章
- Java学习——JSTL标签与EL表达式之间的微妙关系
原文总结的太好了,忍不住记录.转发. 原文地址:http://blog.csdn.net/u010168160/article/details/49182867 目录(?)[-] 一EL表达式 EL相 ...
- JSP、JSTL标签、EL表达式
JSP.JSTL标签.EL表达式 1.EL表达式:${} 功能: 获取数据 执行运算 获取web开发的常用对象 2.JSP标签 例如: jsp标签还有很多功能,这里只列举出一种. <jsp:fo ...
- JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)
1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% requ ...
- JSP常用标签——JSTL标签和EL表达式
一.JSTL简介 1.什么是JSTL JSTL是Java中的一个定制标记库集.(这个标记库集不需要自己编写,可以直接使用) 2.为什么要使用JSTL 实现了JSP页面中的代码复用(基于标签库原理,重复 ...
- 2017/2/14:JSTL标签与el表达式
一.JSTL标签介绍 1.什么是JSTL? JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...
- JSP标签和EL表达式
1.jsp标签: sun原生的,直接jsp使用 <jsp:include> -- 实现页面包含,动态包含 <jsp:include page="/index.jsp&quo ...
- 用fmt标签对EL表达式取整
本篇文章转载自:https://blog.csdn.net/u013400939/article/details/47948541 一般来说我们是无法实现EL表达式取整的.对于EL表达式的除法而言,他 ...
- c:out标签和el表达式与跨域攻击XSS
很多时候,在JSP中我们喜欢用EL表达式输出信息,但是最近发现这个确实存在个问题:XSS即跨域攻击. 下面看个例子: <c:out value="${student.name}&quo ...
- jsp jstl标签库 el表达式
一.JSTL标签是什么? 提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言. 同时还提供了格式化数据和日期的方法.实现这些功能需要I18N格式标签库(I18N-c ...
随机推荐
- chrome 下修改 agent 的方法
前言 这篇文章和 tiankonguse 的个人网站里的文章保持同步. 很早之前,在 chrome 下修改 agent 的方法是使用 chrome 插件. 后来 chrome 的某一个版本中自带这个功 ...
- < Python Index >
1. 基本语法 1.1 常量/变量 1.2 运算符 1.3 表达式 1.4 程序结构 2. 内置数据结构 2.1 列表 2.2 元组 2.3 集合 2.4 st ...
- const 指针
使用指针时要涉及两个目标,即指针本身和指针所指的对象.关于const指针变量,可归结为以下三种: 1.指向常量的指针变量: 2.常指针变量: 3.指向常量的常指针变量. 一.指向常量的指针变量:声明格 ...
- 关于EF Unit of Work Repository的简单用法
其实ef本身就是unit of work+repository的 其中继承自DbContext的类就是unit of work context中的DbSet<T>属性就是repositor ...
- Bootstrap中的datetimepicker插件用法总结(转载)
datetimepicker用法总结 目录 datetimepicker用法总结 目录 简述 官方文档 选项属性 1 format 格式 2 weekStart 一周从哪一天开始 3 startD ...
- iOS交互h5— JavaScriptCore ---UIWebview
JavaScriptCore这个框架,从而让web页面和本地原生应用交互起来非常方便,而且使用此框架可以做到Android那边和iOS相对统一, web前端 在三端交互中,web前端开发人员来定义,让 ...
- UNIX 高手的另外 10 个习惯
让我们面对现实吧:坏习惯很难改变.但是您已经熟悉的习惯可能更难克服.有时,重新审视某些事情可能让您遇到“啊哈,我没想到它能做到这一点!”的时刻.在 Michael Stutz 的优秀文章“UNIX 高 ...
- lua模块化
main.lua local main = require("my") main.greeting() my.lua local foo = {} local function g ...
- Unix Programming :文件IO
文件描述符常量(unistd.h): STDIN_FILENO STDOUT_FILENO STDERR_FILENO 通常这些常量分别对应于数字0,1,2 文件操作需要头文件 fcntl.h ,一些 ...
- Tips——RN canvas缩放处理
一.关于canvas缩放 canvas图像缩放处理有两种思路: ctx.scale(),对整个canvas进行重绘,会导致每次缩放都重新加载,影响体验效果 在canvas外包层view,直接对外层的v ...