java学习之EL和JSTL


0x00前言

EL和JSTL都是JSP的内容的拓展,都是开发的一些东西,稍微学习记录一下,避免以后忘记

0x01EL

0x1基本用法

概念:Expression language 表达式语言
作用:替换和简化JSP页面中的java代码编写
语法:\({} 设置忽略EL语法 (1):在page中实现isELIgnored="true"忽略当前所有页面的el表达式 (2):/\){}忽略当前这个el表达式

0x2使用的方法

1.运算:基础的+-*/(加减乘(div)除)都可以实现
还有基础的逻辑运算&&(and )||(or)
比较运算符 <,>,>=,<=,==,!=
空运算符:empty\({empty list}判断字符串、集合、数组、是否为null和长度为0 2.获取值 语法:\){域对象.键名}
语法2:${键名}从最小的域中去找对于的键值,直到找到为止
域对象:参考前一篇文章中的内置对象中的前4个:pageContext,request,session,application(ServletContext)
pageScope---->pageContext
requestScope--->request
sessionScope--->session
applicationScope--->application(ServletContext)
使用方法:
可以通过把对象存入后直接通过属性的方法获得属性(私有的要设置get和set方法)
也可以通过对象调取方法

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
  request.setAttribute("name","zhangsan" );
  session.setAttribute("name","wangwu");
%>
${requestScope.name}
${sessionScope.name}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    ELcontent.User user = new ELcontent.User();
    user.setName("zhangsan");
    user.setAge(12);
    user.setBirthday(new Date());
    request.setAttribute("zhangsan",user);
%>
${requestScope.zhangsan.name}
${requestScope.zhangsan.getbitStr()}


3.获取list

获取对象、List集合、Map集合的值

1. 对象:${域名称.键名.属性名}
本质上会去调用对象的getter方法

2. List集合:${域名称.键名[索引]}

3. Map集合:

${域名称.键名.key名称}

${域名称.键名["key名称"]}

0x02JSTL

0x1基础用法

1.概念:JavaServer Pages tag LiBRARY JSP标准标签库
由Apache组织提供的开源的免费的jsp标签
2.作用简化和替换JSP上面的java代码
3.使用步骤
(1)导入相关jar包
(2)引入标签库<%@taglib%>
4常用标签:if,choose,foreach

1.if 标签 ,test 必须属性,接受boolean表达式

2. choose:相当于java代码的switch语句
	1. 使用choose标签声明         		相当于switch声明
        2. 使用when标签做判断         		相当于case
        3. 使用otherwise标签做其他情况的声明    	相当于default

3. foreach:相当于java代码的for语句

中间遇到一个方法:一直报错期间发现了一个问题:attribute[test]不接受任何表达式
这是因为版本不兼容的问题

web.xml中版本号不兼容产生的问题;
解决方法:
<%@taglib prefix=“c” uri=“http://java.sun.com/jstl/core” %>改为
<%@taglib prefix=“c” uri=“http://java.sun.com/jstl/core_rt” %>

看一下demo和基础用法,

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>



    Title




<%
request.setAttribute("number",5);
%>

我是真

${number}为基数 星期一 星期二 星期三 星期四 星期五

begin 开始值

end 结束值

var 临时变量

step 步长

varStatus: index:元素的索引 count=循环的次数从1开始

${i}
${s.count}

0x03总结

本篇学习文章还是比较短,内容比较少主要要记住的是后面EL和JSTL的连用达到简化JSP中java代码,让后面更好操作