zoukankan      html  css  js  c++  java
  • java_第一年_JavaWeb(14)

    EL :EL表达式主要用于获取数据、执行运算、获取对象、调用java方法;

    获取数据

    语法:"${标识符}"

    会调用pageContext.findAttribute方法,从page、request、session、application四个域中获取对象,若找不到会返回"",是空字符串而不是null;

    执行运算

    语法:${运算表达式}

    获取对象

    <body>
        ${pageContext}
        <% pageContext.setAttribute("name","lzj01"); %>
        ${pageScope.name}
        <% request.setAttribute("name", "lzj02");%>
        ${requestScope.name}
        <% session.setAttribute("name","lzj03");%>
        ${sessionScope.name}
        <% application.setAttribute("name","lzj04");%>
        ${applicationScope.name}
        <%--请求时增加参数name = lzj--%>
        ${param.name}
        <%--请求时增加参数name = lzj&name = 23 --%>
        ${paramValues.name[0]}
        ${paramValues.name[1]}
        <%--获取所有信息头信息--%>
        ${header.Accept}
    
        ${header["Accept-Encoding"]}
        ${headerValues.Accept[0]}
         <%--获取cookie对象的值,还需.value--%>   
        ${cookie.JSESSIONID.value}
        <%--其中xxx是在web.xml配置参数时的<param-name>所设置的名字--%>
        ${initParam.xxx}
        <form     
         action="${pageContext.request.contextPath}/servlet/Servlet" 
         method="post">
            <input type="text" name="username" value="${param.username}">
            <input type="submit" value="注册">
          </form>

    再去配置下Servlet的代码文件即可;

    调用java方法

    语法:${prefix:method(params)}

    这个调用类似于自定义标签,其中prefix为jsp页面引用taglib指令时prefix属性所设置的名称,method是在WEB-INF目录下.tld文件里<function>元素里的子元素<name>所定义的,params是调用该java方法时输入的参数;

    也可自己开发函数后通过EL调用;

    首先编写方法,java类;后编写标签库tld文件,这里需要知道的元素是:

    <uri> 元素用指定该TLD文件的URI,在JSP文件中需要通过这个URI来引入该标签库描述文件;

    <function>元素用于描述一个EL自定义函数,其中包含<name>、<function-class>、<function-signture>子元素;

    <name>子元素用于指定EL自定义函数的名称。

    <function-class>子元素用于指定完整的Java类名,
    <function-signature>子元素用于指定Java类中的静态方法的签名,方法签名必须指明方法的返回值类型及各个参数的类型,各个参数之间用逗号分隔。

    最后再痛JSP页面引用EL表达式进行调用就可以了;

    写到这,相信大家会立马知道一定存在跟核心标签库一样,EL也有开发了一套自己的函数库,下面就来介绍EL函数库把o(╥﹏╥)o

    同样地,MyEclipse自带JSTL开发包,该包下有对应的tld描述文件;

    在JSP页面中使用JSTL定义的EL函数:<%@taglib uri = "htttp//java.sun.com/jsp/jstl/functions" prefix = "fn" %>

    常使用的函数:

    <body>
        <%--toLowerCase函数:转小写形式--%>
        ${fn:toLowerCase("Www.BAIdu.COM")}
        <%--toUpperCase函数:转大写形式--%>
        ${fn:toUpperCase("Www.BAIdu.COM")}
        <%--trim函数:删除字符串的首尾空格--%>
        ${fn:trim(   "Www.BAIdu.COM"    )}
        <%--length函数:计算集合、数组、字符串的字符个数--%>
        ${fn:length("Www.BAIdu.COM")}
        <%--split函数:以某个分隔符分割字符串,并已字符串数组的形式返回,第一个参数是要分割的字符串,第二个参数是分隔符--%>
        ${fn:split("Www.BAIdu.COM"".")}
        <%--join函数:以指定一个分隔符,将一个字符串数组中的字符串连接起来,第一个参数是要合并的数组,第二个参数是分隔符--%>
        <% String[] Lzj = {"Www","BAIdu","COM"};
        pageContext.setAttribute("lzj",lzj);    
        %>
        ${fn:join(lzj,".")}
        <%--indexOf函数:表示指定字符串在一个字符串中第一次出现的索引,如不包含,返回-1,第一参数表示在哪个字符串,第二参数表示指定哪个字符串--%>
        ${fn:indexOf("Www.BAIdu.COM""BAI")}
        <%--contains/containsIgnoreCase函数:是否对大小写敏感,检测第一参数穿进去的字符串是否包含第二参数传进去的字符串,返回值是true或false,若第二参数传一个空字符串,则返回true--%>
        ${fn:contains("Www.BAIdu.COM""BAI")}
        <%--startsWith/endsWith函数:是否以某个字符串为开始/结尾,返回值是true或false--%>
        ${fn:startsWith("Www.BAIdu.COM""BAI")}
        ${fn:endsWith("Www.BAIdu.COM""COM")}
        <%--replace函数:3个参数,第一参数:指定操作字符串;第二参数:指定被替换字符串;第三参数:指定替换字符串--%>
        ${fn:replace("Www.BAIdu.COM",".",",")}
        <%--substring函数:截取字符串的子字符串,3个参数,第一参数:指定操作字符串;第二参数:指定截取开始点(包含);第三参数:指定截取结束点(不包含)--%>
        ${fn:substring("Www.BAIdu.COM","4","9")}
        <%--substringAfter/substringBefore函数:截取某个字符串之后的子字符串/之前的子字符串--%>
        ${fn:substringAfter("Www.BAIdu.COM"".")}
        ${fn:substringBefore("Www.BAIdu.COM"".")}
  • 相关阅读:
    Java的HashMap
    为什么 char c = 'A';c += 32; 结果输出的是 'a'?
    java中整数的常量优化机制
    IDEA2019版中文汉化包
    asp.net项目协作开发时,常常要忽略版本控制的目录
    SQLServer同步数据到ElasticSearch
    为什么不建议在微信小程序的TarBar上检查统一登录后跳转页面
    nginx的热备方式
    HTTP 和FTP 状态信息总结(留着自己用)
    Web Api 简介
  • 原文地址:https://www.cnblogs.com/lzj-learn/p/11655424.html
Copyright © 2011-2022 走看看