栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JSTL库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSTL库

目录

使用jstl的步骤

模拟 if

模拟 if...else if...else if...else...

模拟 循环forEach

接收集合类型

JSTL源码分析(if为例子)   

函数

内置函数的使用步骤

函数源码分析(contains方法为例)

自定义标签的步骤


1、JSTL:JSP标准的标签库,作用是使用标签代替java代码。

2、JSTL:标准是SUN制定,apache实现的。(SUN收录了Apache的实现)

3、jstl标签可以使用内置的标签,也可以自定义标签。(这里只使用内置标签)

使用jstl的步骤

        *   在项目中引入jstl的相关jar包,确保jar存在:jstl.jar、standard.jar,可以使用这个连接直接跳转到官网,在官网下,选择自己想要的jar包。

         *   在需要使用标签的jsp页面上使用taglib指令引入标签库

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

解析:让jsp和核心标签库的相关配置文件c.tld建立连接。

        *   在需要使用标签的位置直接使用标签

模拟 if

    

请提供用户名

欢迎${param.username}

解析:

scope 指定test属性运算符结果保存范围,可选值:
        "page"              pageContext范围
        "request"           request范围
        "session"           session范围
        "application"       application范围

【注】scope如果不写默认值是“page”,耗费资源最少,范围最小。

url: localhost:8080/myweb/jstl_text.jsp,输出

请提供用户名

url :http://localhost:8080/myweb/jstl_text.jsp?username=lili,输出

欢迎lili

模拟 if...else if...else if...else...

    
        少年
    
    
        青年
    
    
        老年
    

模拟 循环forEach

    ${i}

将上述代码转为java代码

for (int i=1; i<=10; i++){
    作用域对象.setAttribute("i",i);
    System.out.println(作用域对象.getAttribute("i") == null ? "" : 作用域对象.getAttribute("i"));
}

接收集合类型

    ${stuStatus.count}、${stu.sno}、${stu.sname}

解析:

        items 属性可以接受EL表达式,类型可以是数组或者集合。

        var 代表集合中元素。

        varStatus 属性指向了一个状态对象,状态对象都有一个count属性,count属性的值是序号。

将上述代码转为java代码

for (Student s : stuList){
    pageContext.setAttribute("e",e);
    System.out.println(((Student)作用域对象.getAttribute("s")).getSno());
    System.out.println(((Student)作用域对象.getAttribute("s")).getSname());
}

附加:


    ${ip}

还可以把 items 的内容写在 webapp/WEB-INF/web.xml中

    
        ips
        127.0.0.1,192.168.0.3,192.168.6.5
    

用 initParma 内置对象接收数据


    ${ip}

JSTL源码分析(if为例子)   
         
            
            if            
            org.apache.taglibs.standard.tag.rt.core.IfTag 
            JSP                                     
                                                                      
                                                      
                test                                                
                true                                        
                true                                  
                boolean                                             
            
        

解析:

description:标签描述

name:标签名字

tag-class:标签对应的需要执行的类

body-content:标签体中的内容类型

attribute:标签可以出现的属性

        description:对属性的描述

        name:属性的名字

        required:该属性是否必须的,true表示必须的

        rtexprvalue:该属性是否可以接收EL表达式,true表示支持EL表达式

        type:该属性的数据类型

函数

1、函数是对EL表达式的补充,函数是属于JSTL的一部分,对应的配置文件,standard.jar包中的fn.tld文件。

2、函数也是联合EL表达式也是代替JSP中的java代码

3、函数成分:内置函数、自定义函数(都需要掌握)

4、EL表达式怎么用,函数就怎么用。

内置函数的使用步骤

        * 导入jar包(jstl.jar、standard.jar)

        * 使用taglib指令导入函数库

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

        * 在需要使用函数的位置使用即可

${fn:contains("HelloWorld.java", ".java")}

函数源码分析(contains方法为例)
        
                                                                                     函数描述
            contains                                                                               函数名
            org.apache.taglibs.standard.functions.Functions                    函数对应的类
            boolean contains(java.lang.String, java.lang.String)       函数对应的类中需要执行的方法
            
              <c:if test="${fn:contains(name, searchString)}">                                               例子
            
        

解析:

        description:函数描述

        name:函数名

        function-class:函数对应的类

        function-signature:函数对应的类中需要执行的方法

        example:例子

自定义标签的步骤

        * 在WEB-INF目录下新建text.tld文件,从fn.tld文件中拷贝模板。





    Text 1.1 functions library
    Text functions
    1.1
    text
    http://www.km.com/jsp/jstl/functions

    
        getText
        km.bean.StringUtil
        java.lang.String getText(java.lang.String))
    

        * 编写一个类,在该类中编写一个方法,该方法必须是public的。并且必须是static的

package km.bean;

public class StringUtil {

    
    private StringUtil(){}

    
    public static String getText(String code){
        return "方法执行了";
    }
}

        * 使用即可

<%=StringUtil.getText("000")%>
${text:getText("000")}

方法结果是一样的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459469.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号