IT兄弟连 JavaWeb教程 使用JSTL函数
在JSTL Functions标签库中提供了一组常用的EL函数,主要用于处理字符串,在JSP中可以直接使用这些函数。
在JSP中使用Functions标签库,需要通过taglib指令引入该标签库:
<%@ taglib prefix="fn" uri=http://java.sun.com/jsp/jstl/functions %>
使用JSTL函数
1.fn:contains函数
fn:contains函数用于判断在源字符串中是否包含目标字符串,其语法为:
fn:contains(String source,String target)
以上source参数指定源字符串,target参数指定目标字符串,返回类型为boolean。例如对于以下EL表达式:
${fn:contains("Tomcat,"cat"}}
${fn:contains("Tomcat","CAT")}
第一个EL表达式的值为true,第二个EL表达式的值为false。
2.fn:toUpperCase函数
fn:toUpperCase函数用于将源字符串中的所有字符改为大写,其语法为:
fn:toUpperCase(String source)
以上source参数指定原字符串,返回类型为String。
例如对于以下EL表达式:
${fn:toUpperCase("TomCat")}
其输出结果为:
TOMCAT
3.fn:length函数
fn:length函数用于返回字符串中的字符的个数,或者集合和数组中的元素的个数,其语法为:
fn:length(source)
以上source参数可以为字符串、集合或者数组,返回类型为int。
2 实现自定义函数标签
函数的定义和使用分为以下3个步骤:
● 编写一个Java类,并在该类中编写公用的静态方法,用于实现自定义EL函数的具体功能。
● 编写标签库描述文件,对函数进行声明。该文件的扩展名为.tld,被保存到Web应用的WEB-INF文件夹下。
● 在JSP页面中引用标签库,并调用定义的EL函数,实现相应的功能。
例:定义EL函数处理字符串中的回车换行符和空格符。
● 编写一个Java类,名称为StringDeal,将其保存在com.xdl.el包中,在该类中添加一个公有的静态方法shiftEnter(),在该方法中替换输入字符串中的回车换行符为<br>,空格符为" ",最后返回新替换后的字符串。StringDeal类的完成代码如下:
package com.xdl.el;
public class StringDeal{
public static String shiftEnter(String str){
String newStr = str.replaceAll("\r\n","<br>");
newStr = newStr.replaceAll(" "," ");
return newStr;
}
}
● 编写标签库描述文件,名称为stringDeal.tld,并将其保存到WEB-INF文件夹下。关键代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<taglib 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 web-jsptaglibrary_2_0.xsd" version="2. 0" >
<tlib-version>1.0</tlib-version>
<uri>/stringDeal</uri>
<function>
<name>shiftEnter</name>
<function-class>com.xdl.el.StringDeal</function-class>
<function-signature>java.lang.String shiftEnter(java.lang.Str ing)</function-signature>
</function>
</taglib>
参数说明:
uri标记:用于指定tld文件的映射路径。在应用EL函数时,需要使用该标记指定的内容。
name标记:用于指定EL函数所对应的方法名,通常与java文件中的方法名相同。
function-class标记:用于指定EL函数所对应的Java文件,这里需要包括包名和类名,例如,在上面的代码中,报名为com.xdl.el,类名为StringDeal。
function-signature标记:用于指定EL函数所对应的静态方法,这里包括返回值的类型和入口参数的类型。在指定这些类型时,需要使用完整的类型名,例如,在上面的代码中,不能指定该标记的内容为"String.shiftEnter(String)"。
● 编写index.jsp文件,在该文件中添加一个表单及表单元素,用于收集内容信息。关键代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta charset="UTF-8">
<title>兄弟连IT教育</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>
● 编写表单的处理页deal.jsp文件,在该文件中应用上面定义的EL函数,对获取到的内容信息进行处理(主要是替换字符串中的回车换行符和空格符)后显示到页面中。deal.jsp文件的具体代码如下:
<%@ page language="java" contentType="text/html;charset=UTF-8" pa geEncoding="UTF-8"%>
<%@ taglib uri="/stringDeal" prefix="xdlfn" %>
<%request.setCharacterEncoding("UTF-8"); %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8 ">
<title>显示结果</title>
</head>
<body>
内容为:<br>
${xdlfn:shiftEnter(param.content)}
</body>
</html>
运行本实例,在页面中将显示一个内容编辑框和一个提交按钮,在内容编辑框中输入内容,然后单击提交按钮,观察新页面的变化。

在定义和使用EL函数时,可能出现以下3种错误。
● 由于没有指定完整的类型名而产生的异常信息。
在编写EL函数时,如果出现如下图所示的异常信息,则是由于在标签库描述文件中没有指定完整的类型名而产生的。

解决的方法:在扩展名为.tld的文件中指定完整的类型名即可。例如,在上面的这个一场中,就可以将完整的类型名设置java.lang.String。
● 由于在标签库的描述文件中输入了错误的标记名产生的异常信息。
● 由于定义的方法不是静态方法所产生的异常。
IT兄弟连 JavaWeb教程 使用JSTL函数的更多相关文章
- IT兄弟连 JavaWeb教程 jQuery中其他AJAX支持的函数
● $.get()函数 $.get(url,data,function,dataType);参数说明如下: url:请求地址 data:请求参数 dataType:服务器返回的数据类型 functi ...
- IT兄弟连 JavaWeb教程 EL与JSTL表达式经典面试题
1.简述EL表达式的作用 EL表达式的作用可分为以下三类 访问Bean的属性. 输出简单的运算结果. 获取请求参数值. 2.JSP标签的作用?如何定义? JSP标签可以分离JSP页面的内容和逻辑,业务 ...
- IT兄弟连 JavaWeb教程 EL与JSTL表达式经典案例
案例需求:使用MVC模式编写一个程序,当发起一个deptList.do请求时,在servlet中准备一个部门列表对象,把这个列表对象放入request作用域中转发到deptlist.jsp,使用JST ...
- IT兄弟连 JavaWeb教程 JSTL标签的使用
假定甲方打算使用乙方开发的标签库,乙方把与标签库相关的所有文件打包成为了一个JAR文件(假定名为standard.jar),在这个JAR文件中包含以下内容: ● 标签处理类及相关的.class文件 ...
- IT兄弟连 JavaWeb教程 JSTL常用标签
1.条件标签 条件标签能够实现Java语言中的if语句以及if-else语句的功能,它包括以下几种: <c:if>:用于实现Java语言中的if语句的功能. <c:choose> ...
- IT兄弟连 JavaWeb教程 JSTL定义
JSTL标签库实际上包含5个不同的标签库.JSTL1.1规范为这些标签库的URI和前缀做了预定,参见表7.3. 表3 JSTL标签库
- IT兄弟连 JavaWeb教程 文件下载技术
● 列出提供下载的文件资源 我们要将Web应用系统中的文件资源提供给用户进行下载,首先我们要有一个页面列出上传文件目录下的所有文件,当用户点击文件下载超链接时就进行下载操作,编写一个ListFile ...
- IT兄弟连 JavaWeb教程 jQuery对AJAX的支持经典面试题
1.简述对Ajax的理解 AJAX是Asynchronous JavaScript and Xml异步的JavaScript和Xml.它一种用来改善用户体验的技术其实质是使用XMLHttpReques ...
- IT兄弟连 JavaWeb教程 jQuery对AJAX的支持
jQuery对AJAX的支持 jQuery对Ajax请求的创建.发送.响应.注册数据处理函数.JSON的解析和缓存以及传参等都进行了相应的封装,同时也考虑了浏览器的兼容性问题. jQuery中对AJA ...
随机推荐
- 九度OJ 1088:剩下的树 (线段树)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5791 解决:2649 题目描述: 有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点 ...
- Objectvice-C中的super
/** 狗:哈士奇 */ //僵尸 #import <Foundation/Foundation.h> @interface Dog : NSObject - (void) walk; + ...
- Dockerfile指令:
Dockerfile指令: 第一行注释,指令是大写字母开头, FROM指令: FROM<image>,后面跟镜像名, FROM<image>:<tag>,后面跟镜像 ...
- -webkit-mask-box-image给框架加个同样大小的遮罩
很棒的css属性,可以在div上方建个同大小的遮罩,配合线性变化gradient可以实现很酷的样式,比如:时间选择的UI组件,里面有个模糊的上方遮罩 手册地址:https://developer.mo ...
- 记录 Linux分析apache日志获取最多访问的前10个IP
摘自: http://blog.csdn.net/tanga842428/article/details/52856413
- openssl生成公钥私钥对 加解密
在计算机软件开发世界中,编程语言种类极多,数据在各种语言的表现形式可能有所差异,但数据本身的处理可能,或者说本质上是完全一样的:比如数据在某个算法中的运算过程是一样的.在这里,我以加密与解密来作为例子 ...
- bootstrap学习大纲
bootstrap 学习分三部分,分别是 css样式,css组件,js插件. 下面介绍三部分分别要学习的内容: 1.css样式:栅格系统,排版,代码,表格,表单,按钮,图片,辅助类,响应式工具. 2. ...
- JavaScript-Tool:jquery.qrcode.js
ylbtech-JavaScript-Tool:jquery.qrcode.js 1.返回顶部 1. 插件描述:jquery.qrcode.js 是一个能够在客户端生成矩阵二维码QRCode 的jqu ...
- Android开发--Activity
一:Activity生命周期 (1)Activity生命周期中的几种方法: protected void onCreate(Bundle savedInstanceState): protected ...
- Jacob开发文件转PDF
这三种方法我都有试过word转PDF,第2种.第3种对于图片,表格.中文转换效果都不好,方法1效果最好.但方法1 只支持Windows环境下. 1.开发环境 Windows系统: 2.准备工作: st ...