很高兴,今天能和大家分享刚学的一些新知识。我们在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表达式之间的微妙关系的更多相关文章

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

    原文总结的太好了,忍不住记录.转发. 原文地址:http://blog.csdn.net/u010168160/article/details/49182867 目录(?)[-] 一EL表达式 EL相 ...

  2. JSP、JSTL标签、EL表达式

    JSP.JSTL标签.EL表达式 1.EL表达式:${} 功能: 获取数据 执行运算 获取web开发的常用对象 2.JSP标签 例如: jsp标签还有很多功能,这里只列举出一种. <jsp:fo ...

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

    1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% requ ...

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

    一.JSTL简介 1.什么是JSTL JSTL是Java中的一个定制标记库集.(这个标记库集不需要自己编写,可以直接使用) 2.为什么要使用JSTL 实现了JSP页面中的代码复用(基于标签库原理,重复 ...

  5. 2017/2/14:JSTL标签与el表达式

    一.JSTL标签介绍 1.什么是JSTL? JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...

  6. JSP标签和EL表达式

    1.jsp标签: sun原生的,直接jsp使用 <jsp:include> -- 实现页面包含,动态包含 <jsp:include page="/index.jsp&quo ...

  7. 用fmt标签对EL表达式取整

    本篇文章转载自:https://blog.csdn.net/u013400939/article/details/47948541 一般来说我们是无法实现EL表达式取整的.对于EL表达式的除法而言,他 ...

  8. c:out标签和el表达式与跨域攻击XSS

    很多时候,在JSP中我们喜欢用EL表达式输出信息,但是最近发现这个确实存在个问题:XSS即跨域攻击. 下面看个例子: <c:out value="${student.name}&quo ...

  9. jsp jstl标签库 el表达式

    一.JSTL标签是什么? 提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言. 同时还提供了格式化数据和日期的方法.实现这些功能需要I18N格式标签库(I18N-c ...

随机推荐

  1. Android 开发工具类 25_getJSON

    获取 JSON 数据并解析 import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; im ...

  2. Android输入控件EditText和软键盘监听

    1. 跳转到新的页面自动软键盘显示情况: 在配置清单文件AndroidManifest.xml文件,对Activity的windowSoftInputMode属性进行设置. stateUnspecif ...

  3. Tomcat配置https、访问http自动跳转至https

    1.配置Tomcat,打开$CATALINA_HOME/conf/server.xml,修改如下 <Connector port="8080" protocol=" ...

  4. Beta阶段——Scrum 冲刺博客第二天

    一.当天站立式会议照片一张 二.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中 昨天已完成的工作 实现对index界面的重新制作,变成了原来的main界面,直接在该界面输入 ...

  5. UnityShader之屏幕特效基础

    1.什么是屏幕特效 我们这里讲的屏幕特效技术,指的是在渲染完整个场景后得到的屏幕图象的基础上,再对这个屏幕图像做一系列处理,实现出屏幕特效,使用这种技术可以为屏幕画面增添各种风格的艺术效果,比如泛光. ...

  6. MongoDB之数据库管理

    前面补充过把MongoDB作为服务,今天主要了解数据库管理,在操作之前先把MongoDB服务打开. 一.显示数据库清单 如果想查看数据库列表可以使用show dbs. 二.切换数据库 通过使用Mong ...

  7. c#基础学习(0703)之string.Format格式化日期

    C# string.Format格式化日期 DateTime dt = ,,,,,,); string.Format("{0:y yy yyy yyyy}",dt); //17 1 ...

  8. BG.Hive - part2

    1. 将mysql的订单数据导入hive的分区表(桶.倾斜)[partition,bucket,skew] a> 在Hive中新建分区表 CREATE TABLE IF NOT EXISTS H ...

  9. C# 使用/配置Log4Net

    1.首先在项目中添加Nuget程序包... 2.然后在NuGet窗体中搜索Log4Net,然后点击安装<安装过程可能会持续几分钟,请耐心等待> 3.在项目中添加一个Config文件,如已有 ...

  10. 钉钉微应用接入钉钉免登陆配置记录。NET实现

    在这里记录一下我配置的钉钉接入微应用遇到的坑.搞了我几天天才调通.头皮发麻,现在梳理一下,以免别人也入坑. 1.钉钉接入主要要获取钉钉企业员工的ID,然后去自己的应用的数据库里进行匹配然后实现免登陆的 ...