写点什么

JSP、EL 表达式、JSTL 标签,rabbitmq 源码分析持久化

  • 2021 年 11 月 10 日
  • 本文字数:2929 字

    阅读完需:约 10 分钟

  • 用于配置 JSP 页面,导入资源文件


【2】格式


  • <%@? 指令名称? 属性名 1=属性值 1? 属性名 2=属性值 2? .....? %>


【3】分类


  • page:配置 JSP 页面的

  • contenType:等同于 response.setContentType()

  • 设置响应体的 mime 类型以及字符集

  • 设置当前 JSP 页面的编码(高级 IDE,如果是低级编译器,需要设置 pageEncoding 属性来设置字符集)

  • import:导包

  • errorPage:当前页面发生异常后,会自动跳转到指定的错误提示页面

  • isErrorPage:标识当前页面是否为错误页面

  • true:是,可以使用内置对象 exception

  • false:否,默认值,不可以使用内置对象 exception

  • include:页面包含的,导入页面资源文件

  • <%@include? file="top.jsp"%>

  • taglib:导入资源

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


2、注释





  • <%--? --%>:可以注释所有代码片段


3、内置对象




在 JSP 页面中不需要创建,可以直接使用的对象称为内置对象,一共有 9 个内置对象


<table border="1" cellpadding="1" cellspacing="1" style="width:590px;"><tbody><tr><td style="width:109px;">变量名</td><td style="width:162px;">真实类型</td><td style="width:316px;">作用</td></tr><tr><td style="width:109px;">pageContext</td><td style="width:162px;">PageContext</td><td style="width:316px;">当前页面共享数据,可以获取其他 8 个对象</td></tr><tr><td style="width:109px;">request</td><td style="width:162px;">HttpServletRequest</td><td style="width:316px;">一次请求访问的多个资源(转发)</td></tr><tr><td style="width:109px;">session</td><td style="width:162px;">HttpSession</td><td style="width:316px;">一


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


次会话的多个请求</td></tr><tr><td style="width:109px;">application</td><td style="width:162px;">ServletContext</td><td style="width:316px;">所有用户间数据共享</td></tr><tr><td style="width:109px;">response</td><td style="width:162px;">HttpServletResponse</td><td style="width:316px;">响应对象</td></tr><tr><td style="width:109px;">page</td><td style="width:162px;">Object</td><td style="width:316px;">当前页面(Servlet)对象</td></tr><tr><td style="width:109px;">out</td><td style="width:162px;">JspWrite</td><td style="width:316px;">输出对象,输出数据到页面上</td></tr><tr><td style="width:109px;">config</td><td style="width:162px;">ServletConfig</td><td style="width:316px;">Servlet 的配置对象</td></tr><tr><td style="width:109px;">exception</td><td style="width:162px;">Throwable</td><td style="width:316px;">异常对象</td></tr></tbody></table>


二、EL 表达式


=======


1、概念和作用




  • Expression Language(表达式语言),主要用来替换和简化 JSP 页面中的 java 代码


2、语法




  • ${表达式}


3、忽略 EL 表达式




  • 设置 JSP 中 page 指令:isElignored="true"? 忽略 JSP 中所有的 EL 表达式

  • \${表达式}:忽略当前的 EL 表达式


4、EL?表达式的使用




【1】运算符


  • 算数运算符:+? ? -? ? *? ? /(div)? ? %(mod)

  • 比较运算符:>? ? <? ?>=? ? <=? ? ==? ? !=

  • 逻辑运算符:&&(and)? ? ||(or)? ? !(not)

  • 空运算符:empty??

  • ${empty str}:用于判断字符串,集合数组对象是否为 null 或者长度是否为 0

  • ${not empty str}:表示判断字符串、集合、数组对象是否不为 null 并且长度大于 0


【2】获取值


  • EL 表达式只能从域对象中获取值

  • 格式:${域名称.键名}? ==>? 从指定的域中获取指定的键值


<table border="1" cellpadding="1" cellspacing="1" style="width:500px;"><tbody><tr><td>域</td><td>对应的域名称</td></tr><tr><td>pageContext</td><td>pageScope</td></tr><tr><td>request</td><td>requestScope</td></tr><tr><td>session</td><td>sessionScope</td></tr><tr><td>application</td><td>applicationScope</td></tr></tbody></table>


${键名}:表示依次从最小的域中查找是否有该键对应的值


  • 获取对象:${域名称.键名.属性名}


本质上是调用 Javabean 中的 getter 方法


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

  • 获取 Map 集合

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

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


【3】隐式对想


EL 表达式中有 11 个隐式对象,这里主要说 pageContext 隐式对象,pageContext 隐式对象主要功能有:


  • 获取 JSP 其他八个内置对象

  • 动态获取虚拟目录:


<%@ page import="Test.User" %>


<%@ page import="java.util.*" %>


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


<html>


<head>


<title></title>


</head>


<body>


${3 > 4}


${3 > 4}


<hr>


<h3>算数运算符</h3>


${3 + 4}<br>


${3 / 4}<br>


${3 % 4}<br>


<h3>比较运算符</h3>


${3 == 4}<br>


<h3>逻辑运算符</h3>


${3 > 4 && 3 < 4}


${3 > 4 and 3 < 4}


<hr>


<h3>在域中获取值</h3>


<%


//在 request 域中存储值


request.setAttribute("name","oneStar");


//在 session 域中存储值


session.setAttribute("age","18");


%>


${requestScope.name}


${sessionScope.age}


${name}


<h3>获取对象值</h3>


<%


User user = new User();


user.setName("oneStar");


user.setAge(18);


user.setBirthday(new Date());


request.setAttribute("u",user);


%>


${requestScope.u.name}<br>


${requestScope.u.age}<br>


${requestScope.u.birthday}<br>


<h3>获取 List 集合</h3>


<%


List list = new ArrayList();


list.add("oneStar");


list.add("twoStar");


list.add("threeStar");


request.setAttribute("list",list);


%>


${requestScope.list}<br>


${requestScope.list[2]}<<br>


<H3>获取 map 集合</H3>


<%


Map map = new HashMap<>();


map.put("name","oneStar");


map.put("age","18");


request.setAttribute("map",map);


%>


${requestScope.map}<br>


${requestScope.map.name}<br>


${requestScope.map["age"]}<br>


<h3>隐式对象</h3>


${pageContext.request}


<h4>在 JSP 页面动态获取虚拟目录</h4>


${pageContext.request.contextPath}


</body>


</html>


三、JSTL 标签


=========


JSTL 标签(JavaServer Pages Tag Library),即 JSP 标准标签库,是由 Apache 组织提供的开源免费的 JSP 标签,主要是用来简化和替换 JSP 页面上的 Java 代码,具体使用步骤如下:


  1. 导入 jstl 相关 jar 包

  2. 引入标签库:taglib 指令引入:<%@ taglib %>

  3. 使用标签


1、if 标签




  • 属性:test 属性,为必须属性,接受 boolean 表达式

  • 一般情况下,test 属性值会结合 EL 表达式一起使用

  • if 标签没有 else 情况,如果想要 else 效果,可以定义多个 if 标签


2、choose 标签




choose 标签就相当于 switch 语句,switch 需要配合 case、default 来使用,而 choose 则需要配合 when、otherwise 来使用


  • 使用 choose 标签声明:相当于 switch 声明

  • 使用 when 标签做判断:相当于 case

  • 使用 otherwise 标签做其他情况的声明:相当于 default


3、 foreach 标签




【1】完成重复操作


属性


  • begin:开始值

  • end:结束值

  • var:临时变量

  • step:步长

  • varStatus:循环状态对象

  • index:容器中元素的索引,从 0 开始

  • count:循环次数,从 1 开始


【2】遍历容器


属性


  • items:容器对象

  • var:容器中元素的临时变量

  • varStatus:循环状态对象

评论

发布
暂无评论
JSP、EL表达式、JSTL标签,rabbitmq源码分析持久化