博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaWeb -- Jsp中的 EL表达式
阅读量:5049 次
发布时间:2019-06-12

本文共 5916 字,大约阅读时间需要 19 分钟。

  1. lEL 全名为Expression LanguageEL主要作用:
l
获取数据
EL
表达式主要用于替换
JSP
页面中的
脚本表达式,以从各种类型的
web
域 中检索
java
对象、
获取数据。
(
某个
web
域 中的对象,访问
javabean
的属性、访问
list
集合、访问
map
集合、访问数组
)
l
执行运算
利用
EL
表达式可以在
JSP
页面中执行一些基本的关系运算、逻辑运算和算术运算,以在
JSP
页面中完成一些简单的逻辑运算。
${user==null}
l
获取web开发常用对象
EL
表达式定义了一些隐式对象,利用这些隐式对象,
web
开发人员可以很轻松获得对
web
常用对象的引用,从而获得这些对象中的数据。
l
调用Java方法
EL
表达式允许用户开发自定义
EL
函数,以在
JSP
页面中通过
EL
表达式调用
Java
类的方法。
 
1.获取数据
EL
表达式用于获取数据,在
JSP
页面中可使用
${
标识符}
的形式,通知
JSP
引擎调用
pageContext.findAttribute()
方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对象,则返回结果为
””
(注意,
不是
null
)。
示例:使用EL表达式获取
request
session
applection
域中的数据。
EL
表达式中也可以使用
${customerBean.address}
的形式来访问
JavaBean
对象的属性。
示例:使用EL表达式获取
Bean
属性。
结合
JSTL
标签,
EL
表达式也可轻松获取各种集合中的元素。
示例:使用EL表达式获取
List
Map
集合中的元素。
EL
表达式也可使用类如
${1==1}
的形式进行简单的逻辑判断。
 
JSTL
标签库
JSTL
sun
公司开发的一套标签库,使用
JSTL
可以在页面中实现一些简单的逻辑,从而替换页面中的脚本代码。
在页面中使用
JSTL
标签需完成以下
2
个步骤:

1、导入jstl.jarstanderd.jar这两个JSTLjar文件。

2、在JSP页面中使用<%@ tablib url=“” prifix=“” %>元素导入标签库。

JSTL
标签库中常用标签:

<c:foreach var=“” items=“”>

<c:if test=“”>

<%@page import="javax.swing.plaf.basic.BasicScrollPaneUI.HSBChangeListener"%><%@page language="java" import="java.util.*,com.kevin.*"  pageEncoding="UTF-8" errorPage="/errors/error.jsp"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Insert title here
---------------------------------------------------
<% Person person = new Person("xiang"); request.setAttribute("person", person); %> ${person.name }
---------------------------------------------------
<% List list = new ArrayList(); list.add(new Person("kevin")); list.add(new Person("xiang")); request.setAttribute("list", list); %> ${list[0].name}
${pList.name}
---------------------------------------------------
<% Map map = new HashMap(); map.put("aaaa", new Person("aaaa___")); map.put("1111", new Person("1111____")); request.setAttribute("map", map); %> ${map.aaaa.name}
${map['1111'].name}
${entry.key} : ${entry.value.name}
---------------------------------------------------
${pageContext.request.contextPath}
---------------------------------------------------
请登录!!!
欢迎:${person.name}

 

2. 执行运算

3. 获得web开发常用对象
4. 使用EL调用Java方法 (EL函数)
l
EL
表达式语法允许开发人员开发自定义函数,以调用
Java
类的方法。
示例:
${prefix
method(
params
)}
EL
表达式中调用的只能是
Java
类的静态方法
这个
Java
类的静态方法需要在
TLD
文件中描述,才可以被
EL
表达式调用。
EL
自定义函数用于扩展
EL
表达式的功能,可以让
EL
表达式完成普通
Java
程序代码所能完成的功能。
EL函数 与 自定义标签的区别
虽然两者都可以移除JSP中的Java代码, 但是EL函数不能传入pageContext对象,所以只能移除与Web对象无关的Java代码。
EL Function开发步骤
编写Java类静态方法
public class HtmlFilter {        public static String filter(String message) {        if (message == null)            return (null);        char content[] = new char[message.length()];        message.getChars(0, message.length(), content, 0);        StringBuilder result = new StringBuilder(content.length + 50);        for (int i = 0; i < content.length; i++) {            switch (content[i]) {            case '<':                result.append("<");                break;            case '>':                result.append(">");                break;            case '&':                result.append("&");                break;            case '"':                result.append(""");                break;            default:                result.append(content[i]);            }        }        return (result.toString());    }}
编写tld文件, 和自定义标签一样
A tag library exercising SimpleTag handlers.
1.0
kevin
http://www.kevin.com
filter
com.kevin.web.tag.HtmlFilter
java.lang.String filter( java.lang.String )
JSP使用
<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*" pageEncoding="UTF-8"%><%@taglib uri="http://www.kevin.com" prefix="fn" %>
Insert title here点点${fn:filter("点点")}
如果函数不只有一个参数 ,filter(String message, List list), 在Jsp中调用时不能在$中再 嵌套$,直接取域中的list即可,${fn:filter("<a href=''>点点</a>", list)}
5.EL函数库 
数据回显示例:
<% 	User user = new  User();	String[] licks = {"sing", "dance", "football"};	user.setLicks(licks);	request.setAttribute("user", user);%>唱歌  
跳舞
足球
篮球

EL函数库
contains boolean contains(java.lang.String, java.lang.String) ${fn:contains(name, searchString)}
containsIgnoreCase boolean containsIgnoreCase(java.lang.String, java.lang.String) ${fn:containsIgnoreCase(name, searchString)}
endsWith boolean endsWith(java.lang.String, java.lang.String) ${fn:endsWith(filename, ".txt")}
escapeXml java.lang.String escapeXml(java.lang.String) ${fn:escapeXml(param:info)}
indexOf int indexOf(java.lang.String, java.lang.String) ${fn:indexOf(name, "-")}
join java.lang.String join(java.lang.String[], java.lang.String) ${fn:join(array, ";")}
length int length(java.lang.Object) ${fn:length(shoppingCart.products)}
replace java.lang.String replace(java.lang.String, java.lang.String, java.lang.String) ${fn:replace(text, "-", "&#149;")}
split java.lang.String[] split(java.lang.String, java.lang.String) ${fn:split(customerNames, ";")}
startsWith boolean startsWith(java.lang.String, java.lang.String) ${fn:startsWith(product.id, "100-")}
substring java.lang.String substring(java.lang.String, int, int) ${fn:substring(zip, 6, -1)}
substringAfter java.lang.String substringAfter(java.lang.String, java.lang.String) ${fn:substringAfter(zip, "-")}
substringBefore java.lang.String substringBefore(java.lang.String, java.lang.String) ${fn:substringBefore(zip, "-")}
toLowerCase java.lang.String toLowerCase(java.lang.String) ${fn.toLowerCase(product.name)}
toUpperCase java.lang.String toUpperCase(java.lang.String) ${fn.UpperCase(product.name)}
trim java.lang.String trim(java.lang.String) ${fn.trim(name)}

 

转载于:https://www.cnblogs.com/xj626852095/p/3648059.html

你可能感兴趣的文章
PHP结合MYSQL记录结果分页呈现(比较实用)
查看>>
Mysql支持的数据类型
查看>>
openSuse beginner
查看>>
Codeforces 620E(线段树+dfs序+状态压缩)
查看>>
Windows7中双击py文件运行程序
查看>>
Market entry case
查看>>
bzoj1230 开关灯 线段树
查看>>
LinearLayout
查看>>
学习python:day1
查看>>
css3动画属性
查看>>
第九次团队作业-测试报告与用户使用手册
查看>>
Equal Sides Of An Array
查看>>
CentOS笔记-用户和用户组管理
查看>>
Mongodb 基本命令
查看>>
Qt中QTableView中加入Check列实现
查看>>
“富豪相亲大会”究竟迷失了什么?
查看>>
控制文件的备份与恢复
查看>>
返回代码hdu 2054 A==B?
查看>>
Flink独立集群1
查看>>
iOS 8 地图
查看>>