定义和使用EL函数
EL为表达式语言,在EL中,允许定义和使用函数。下面将介绍如何定义和使用EL的函数。
1. 定义和使用函数
函数的定义和使用分为以下3个步骤:
(1)编写一个Java类,并在该类中编写公用的静态方法,用于实现自定义EL函数的具体功能。
(2)编写标签库描述文件,对函数进行声明。该文件的扩展名为.tld,被保存到Web应用的WEB-INF文件夹下。
(3)在JSP页面中引用标签库,并调用定义的EL函数,实现相应的功能。
下面通过一个具体的实例介绍EL函数的定义和使用。
例1.1 定义EL函数处理字符串中的回车换行和空白符。
(1)编写一个Java类,名称为StringDeal,将其保存在com.el包中,在该类中添加一个公用的静态方法shiftEnter(),在该方法中替换输入字符串中的回车换行符<br>,空格符为 ;,最后返回新替换后的字符串。StringDeal类的完整代码如下:
package com.el; public class StringDeal {
public static String shiftEnter(String str){ //定义公用的静态方法
String newStr = str.replaceAll("\r\n", "<br>"); //替换回车换行符
newStr = str.replaceAll(" ", " "); //替换空格符
return newStr;
}
}
(2)编写标签库描述文件,名称为stringDeal.tld,并将其保存到WEB-INF文件夹下。关键代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-jsptaglibrary_2_1.xsd">
<tlib-version>1.0</tlib-version>
<short-name>stringDeal TLD</short-name>
<uri>/stringDeal</uri>
<function>
<name>shiftEnter</name>
<function-class>com.el.StringDeal</function-class>
<function-signature>java.lang.String shiftEnter(java.lang.String)</function-signature>
</function>
</taglib>
参数说明:
<uri>标记:用于指定tld文件的映射路径。在应用EL函数时,需要使用该标记指定的内容。
<name>标记:用于指定EL函数说对应方法的方法名,通常与Java文件中方法名相同。
<function-class>标记:用于指定EL函数所对应的Java文件,这里需要包括包名和类名,例如,上面的的代码中,包名为com.el,类名为StringDeal。
<function-signature>标记:用于指定EL函数所对应的静态方法,这里包括返回值的类型和入口参数的类型。在指定这些类型时,需要使用完整的类型名。
(3)编写index.jsp文件,在该文件中添加一个表单及表单元素,用于收集内容信息。关键代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="form1" method="post" action="deal.jsp">
<textarea name="content" cols="30" rows="5"></textarea>
<br>
<input type="submit" name="Button" value="提交">
</form>
</body>
</html>
(4)编写表单的处理页deal.jsp文件,在该文件中应用上面定义的EL函数,对获取到的内容信息进行处理(主要是替换字符串中的回车换行符和空格符)后显示到页面中。deal.jsp文件的具体代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="wghfn" uri="/stringDeal" %>
<%request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>显示结果</title>
</head>
<body>
内容为:<br>
${wghfn:shiftEnter(param.content)}
</body>
</html>
说明:在引用标签库时,指定的uri属性与标签库描述文件中的<uri>标记的值时相对应的。
程序运行结果如下所示:
定义和使用EL函数的更多相关文章
- EL函数和自定义EL函数
简介 EL原本是JSTL1.0中的技术(所以EL和JSTL感情如此好就是自然的了),但是从JSP2.0开始,EL就分离出来纳入了JSP的标准了.但是EL函数还是和JSTL技术绑定在一起.下面将介绍如何 ...
- 【JSP】EL函数和自定义EL函数
简介 EL原本是JSTL1.0中的技术(所以EL和JSTL感情如此好就是自然的了),但是从JSP2.0开始,EL就分离出来纳入了JSP的标准了.但是EL函数还是和JSTL技术绑定在一起.下面将介绍如何 ...
- JAVAWEB开发之JSTL标签库的使用、 自己定义EL函数、自己定义标签(带属性的、带标签体的)
JSTL JSTL简单介绍: JSTL的全称:JSP Standard Tag Library,JSP标准标签库 JSTL的作用: 提供给Java Web开发者一个标准通用的标签函数库 和E ...
- 自定义el函数
1.1.1 自定义EL函数(EL调用Java的函数) 第一步:创建一个Java类.方法必须是静态方法. public static String sayHello(String name){ retu ...
- 11 JSP/EL表达式/EL函数
JSP * 概述: JSP(Java Server Pages)与Java Servlet一样,是在服务器端执行的不同的是先由服务器编译部署成Servlet执行 * JSP的运行原 ...
- EL函数以及自定义标签的应用
一.EL函数(调用普通类的静态方法) 编写步骤(自定义EL函数的编写步骤即自定义标签的编写步骤): ①编写一个普通的java类,提供一个静态方法,功能自定,例如下: package cn.wzbril ...
- javaweb学习总结(三十)——EL函数库
一.EL函数库介绍 由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用. 这些EL函数在JSTL开发包中进行描述,因此在JSP页 ...
- EL表达式 JSTL中的常用EL函数 动态数据的国际化
ELppt: EL 全名为Expression Language.EL主要作用: 获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.( ...
- javaWeb学习总结(10)- EL函数库(2)
一.EL函数库介绍 由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用. 这些EL函数在JSTL开发包中进行描述,因此在JSP页 ...
随机推荐
- Django实战(5):引入bootstrap,设置静态资源
之前生成了Product类的scaffold,但是如同rails的开发者David所讲的那样,scaffold几乎没什么用.所以按照<Agile Web Development with Rai ...
- WordCount_命令行运行时指定参数
WordCountApp命令行运行时指定参数 1.修改之前的WordCountApp.java的代码 package cmd; import java.net.URI; import org.apac ...
- 收集Nginx的json格式日志(五)
一.配置nginx [root@linux-node1 ~]# vim /etc/nginx/nginx.conf #修改日志格式为json格式,并创建一个nginxweb的网站目录 log_form ...
- thinkphp 5.0如何实现自定义404(异常处理)页面
404页面是客户端在浏览网页时,由于服务器无法正常提供信息,或是服务器无法回应,且不知道原因所返回的页面.404承载着用户体验与SEO优化的重任.404页面通常为用户访问了网站上不存在或已删除的页面, ...
- CI框架中site_url()和base_url()的区别
背景:在使用CI框架的使用经常碰到跳转和路径方面的问题,site_url()和base_url()很容易混淆,下面来说说他们的区别! 假如你config文件里面的base_url和index_page ...
- 自然语言处理系列-1.什么是NLP?
常常会听到有人说,自然语言处理(NLP)是人工智能技术(AI)皇冠上的明珠.那么,从这句话上就能够看到,目前我们常常说的NLP其实是AI技术的一个分支,而且是较难的那一个分支. 那么,到底什么是NLP ...
- mysql索引之三:索引使用注意规则(索引失效--存在索引但不使用索引)*
使用索引时,有以下一些技巧和注意事项: (1)越小的数据类型通常更好:越小的数据类型通常在磁盘.内存和CPU缓存中都需要更少的空间,处理起来更快.(2)简单的数据类型更好:整型数据比起字符,处理开销更 ...
- odoo 模型与ORM
型号属性 在/模型添加activity.py文件 class ActivityEvent(models.Model): _name = 'activity.event' _inherit = 'eve ...
- IBM斥资340亿美元收购红帽
IBM宣布收购Linux巨头Red Hat,以每股190美元的现金收购其所有已发行股份,总价值约为340亿美元.这一交易是IBM历史上金额最高的一笔收购交易,也成为其在营收持续下滑的压力下,布局云计算 ...
- 你了解border-radius吗?
1.圆角正方形 .rounded-square{ width: 200px; height: 200px; background-color: pink; border-radius: 50px; } ...