zoukankan      html  css  js  c++  java
  • 定义和使用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>,空格符为&nbsp;,最后返回新替换后的字符串。StringDeal类的完整代码如下:

    package com.el;
    
    public class StringDeal {
        public static String shiftEnter(String str){  //定义公用的静态方法
            String newStr = str.replaceAll("
    ", "<br>"); //替换回车换行符
            newStr = str.replaceAll(" ", "&nbsp;"); //替换空格符
            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>标记的值时相对应的。

    程序运行结果如下所示:

  • 相关阅读:
    版本控制
    1121 Reverse the lights(“玲珑杯”线上赛 Round #15 河南专场)
    LightOJ 1055
    LightOJ 1053
    LightOJ 1052
    4512 吉哥系列故事——完美队形I(LCIS)
    ZOJ 2432-Greatest Common Increasing Subsequence
    病毒 (湖南省第八届大学生计算机程序设计竞赛)
    1328 台球碰撞 (湖南省第六届大学生计算机程序设计竞赛)
    zzuli 1332 内部收益率 (湖南省第六届大学生计算机程序设计竞赛)
  • 原文地址:https://www.cnblogs.com/gaopeng527/p/4449461.html
Copyright © 2011-2022 走看看