• JSP标签和EL表达式


    1.jsp标签: sun原生的,直接jsp使用
    <jsp:include> -- 实现页面包含,动态包含
    <jsp:include page="/index.jsp"/>
    <jsp:forward> -- 请求转发
    <jsp:param> -- 配合上面上面的两个标签使用,
    <jsp:forward page="">
    <jsp:param value="xxx" name="xxx"/>
    </jsp:forward>

    2.EL表达式:
    Expresion language
    出现的目的,取代jsp中的jsp脚本表达式 <%= java表达式>,发展后不限于此
    ${el表达式}

    获取数据 ,不能遍历数据
    注意:1 使用[]的地方都可以用点号替代,除了中括号是数字和特殊字符不能替代
    ${a[1]} != ${a.1}
    ${a["1.1"]} != ${a.1.1}
    ${a["name"]} == ${a.name}
    2 在中括号中不用""引起来的变量,是执行“获取域中的变量的流程”

    获取常量
    字符串/数字/布尔变量, 直接写在el表达式中
    ${"获取常量"} ${199} ${true}

    获取域中的变量
    如果el中写的是一个变量的名,el会调用pageContext的findAttribute方法,在四大作用域中以对应
    的名字找对应的属性值。 如果找不到,则不输出
    <%
    String name= "xxx";
    pageContext.setAttribute("name", name);
    %>
    ${name}

    获取数组的数据
    <%
    String[] names = {"1","2","3","4"};
    pageContext.setAttribute("names", names);
    %>
    ${names[0]}


    获取集合中的数据
    <%
    List<String> list = new ArrayList<String>();
    list.add("1");
    list.add("2");
    pageContext.setAttribute("list",list);
    %>
    ${list[2]}


    获取Map的数据
    <%
    Map<String,String> map= new HashMap();
    map.put("name", "xx");
    map.put("age", "xxx");
    pageContext.setAttribute("map",map);
    %>
    ${map["name"]}
    ${map.name}


    获取java bean的属性
    public class Person{
    private int age;
    public void set(int age);
    public int get();
    }
    <%
    Person p = new Person();
    p.set(10);
    pageContext.setAttribute("p",p);
    %>
    ${p.age} 获取属性 == p.get();
    <img src=${pageContext.request.contextPath}/1.jpg/>

    执行运算
    算数运算,如果有非数字 字符“1” 参与运算,将非数字转换为数字参与运算,“a”不能参与运算,会报错
    +、-、*、/
    ${1+1} ${3-1}

    逻辑运算 && || !
    && and , || or, ! not
    ${3>2 and 1<2} 显示false

    比较运算 >,<,==,<=,>=,!=
    > gt
    < lt
    >= ge
    <= le
    != ne
    == eq
    ${1==1} ${1 eq 1} 显示true
    ${1>3} 显示false

    三元运算
    3>2?10:100
    ${3>2?"yes":"no"}

    empty运算
    判断一个对象是否为null,字符串是否空字符串,集合为空?,域中没有属性?

    <%
    String str = "";
    PageContext.setAttribute("str",str);
    List list = new ArrayList();
    PageContext.setAttribute("list ",list );
    %>
    ${empty str} 显示true
    ${empty list} 显示true 集合没有任何东西 add后为false
    ${empty pageScope} false

    获取常用开发对象
    el 中内置了11个对象,可以直接使用
    pageContext:可以获取jsp页面中的9大隐式对象

    pageScope: page域中属性组成的map
    requestScope:request域中属性组成的map
    sessionScope:session域中属性组成的map
    applicationScope:application域中属性组成的map

    param:所有请求参数组成的Map<String,String>
    paramValues:所有请求参数组成的Map<String,String[]>
    ?name=1&age=10&like=ball&like=game
    ${param.name} ${paramValues.like}

    header:所有请求头组成的map<String,String>
    headerValues:所有请求头组成的map<String,String[]>
    ${header["Accept-Language"]}

    cookie:所有cookie的信息组成的map
    ${cookie.JSESSIONID.name}

    initParam:所有web应用的初始化参数组成的map

    调用java方法: 不需要会写,只要会调用标签库就行了
    满足条件:
    1.一个类里面的静态方法
    public class ELFunc {
    public static String myEncode(String str,String encode){
    try {
    return URLEncoder.encode(str, encode);
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    throw new RuntimeException(e);
    }
    }
    }
    2.写一个tld文件,静态方法进行描述,放在WEB-INF下
    MyELFunc version:2.0 Shortnmae:MyELFunc URI:http://www.zy.com/MyELFunc 这个是名称空间
    <?xml version="1.0" encoding="UTF-8"?>
    <taglib version="2.0" 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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
    <tlib-version>1.0</tlib-version>
    <short-name>MyELFunc</short-name>
    <uri>http://www.itheima.com/MyELFunc</uri>
    <function>
    <name>URLEnc</name>
    <function-class>com.itheima.util.ELFunc</function-class>
    <function-signature> java.lang.String myEncode(java.lang.String,java.lang.String)</function-signature>
    </function>
    </taglib>
    3.jsp页面中,用taglib指令将tld文件引入当前jsp页面
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@page import="java.net.URLEncoder"%>
    <%@ taglib uri="http://www.itheima.com/MyELFunc" prefix="MyELFunc" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    </head>
    <body>
    ${MyELFunc:URLEnc("北京","utf-8") }
    ${fn:toUpperCase("asdfasdfKJKJKJdsagHIHidsfgGUGu") }
    </body>
    </html>


    JSTL:

    自定义标签技术

  • 相关阅读:
    图像旋转与图像缩放及Matlab代码实现
    主成分分析 matlab手把手教操作、SPSS、python实例分析
    直方图均衡化与Matlab代码实现
    kNN算法基本原理与Python代码实践
    MATLAB 均方根误差MSE、两图像的信噪比SNR、峰值信噪比PSNR、结构相似性SSIM
    vue实战——对没见过的东西的科普以及第一次踩坑
    记录关于js模块的浅薄探索(一)——从别人博客中的理解
    js中的同步异步
    webpack踩坑记录(一)
    vue入门(二) ——监听属性,样式绑定
  • 原文地址:https://www.cnblogs.com/superPerfect/p/4316823.html
Copyright © 2020-2023  润新知