JSP、EL 表达式、JSTL 标签,rabbitmq 源码分析持久化
用于配置 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;">一
次会话的多个请求</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 代码,具体使用步骤如下:
导入 jstl 相关 jar 包
引入标签库:taglib 指令引入:<%@ taglib %>
使用标签
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:循环状态对象
评论