目录
一、域对象
1、什么是作用域?
JSP创建的对象有一定的生命周期,也有可能被其他组建或者对象访问。对象的生命周期和可访问性成为作用域。
2、四大域对象
按照作用范围来算:PageContext(jsp页面)< Requset(一次请求)<Session(一次会话)<application(整个web界面)
注:若在不同作用域有相同名称的对象,则系统的查找顺序为page => request => session =>application
名称 | 描述 |
pageContext | 属性的作用范围仅限当前的jsp页面(范围最小) |
request | 属性的作用范围仅限同一个请求(转发有效) |
session | 属性的作用范围仅限于一次会话,浏览器打开直到关闭称为一次会话(在此期间会话不失效) |
application | 属性的作用范围仅限于当前web应用(范围最大) |
二、EL
1、为什么需要EL
JavaBean在JSP中的局限
- 获取JavaBean属性必须要实现实例化
- 强制类型转化
<%
Employee employee = (Employee)request.getAttribute("employee");
Computer comp = employee.getComputer();
String manufacturer = comp.getManufacturer();
%>
注意:如果页面编写出现逻辑错误,将会导致代码执行错误,并且JSP页面编译页面时也会产生错误
- 解决办法:使用EL表达式简化
2、什么是EL
- EL即Expression Language(表达式语言)
3、EL的功能
- 替代JSP页面中的复杂代码
4、EL的语法
-
${ EL exprission }
- ${ bean.name } 或 ${ bean['name'] }
注:${ bean.name }实质是调用bean的getName()方法
5、EL的特点
🔘自动转换类型
- EL得到某个数据时可以自动转换类型
- 对于类型的限制更加宽松
🔘使用简单
- 相比较在JSP中嵌入Java代码,EL应用更简单
6、EL变量属性范围名称
7、获取对象集合中的数据
- 在session中保存了一个list集合user
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.pojo.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<%
//List
List<User>list=new ArrayList<User>();
pageContext.setAttribute("us",list);
%>
<body>
User:${user}
<br>
<%--${user.getName()} --%>
名字: ${user.name}
<br>
<%--${user.getPwd()} --%>
密码: ${user.pwd}
<br>
<%--判断是否为空 --%>
${us.size()==0}
${empty us}
${not empty us}
</body>
</html>
三、JSTL
1、为什么使用JSTL?
🔴使用了EL表达式可以简化JSP页面代码,但是如果需要进行逻辑判断怎么办?
🔵虽然EL表达式可以访问JavaBean的属性,但是并不能实现在JSP中进行逻辑判断,因而要使用JSTL标签。
2、什么是JSTL?
- JSTL(JavaServerPages Standard Tag Library)JSP标准标签库。JSTL通常会与EL表达式合作实现JSP页面的编码
- JSTL的优点:
- 提供一组标准标签
- 可用于编写各种 动态 JSP 页面
3、使用JSTL的步骤
1、导入jar包
2、在页面中导入JSTL标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4、JSTL标准标签库内的标签
🔸通用标签的使用
- set:设置指定范围内的变量值
- out:计算表达式并将结果输出显示
- remove:删除指定范围内的变量
<%--设置 --%>
<c:set scope="page" value="1" var="a"></c:set>
<%--输出 --%>
<c:out value="${a}"></c:out>
<%--移除 --%>
<c:remove var="a" scope="page"></c:remove>
🔸 条件标签的使用
if:if标签用于判断条件是否成立,与Java中的If语句作用相同
判断登录
<%@page import="java.util.ArrayList"%>
<%@page import="com.zking.pojo.Goods"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test=""></c:if>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL基本标签</title>
</head>
<body>
<%
//yy这个参数是控制当前用户是否已经登录
String yy=request.getParameter("yy");
pageContext.setAttribute("yy", yy);
%>
<%--如果登录了显示你好 --%>
<%--如果没有登录了显示登录按钮 --%>
<c:if test="${yy!=null}">
<h1>欢迎使用该系统</h1>
<h1>😊😊😊😊😊😊</h1>
</c:if>
<c:if test="${yy==null}">
<h1>你现在还没有登录,请点击下面的按钮</h1>
<button>请进行登录</button>
</c:if>
</body>
</html>
没有设置值的界面
带了值的界面
🔸迭代标签
- 实现对集合中对象的遍历
通过迭代标签显示商品列表
<%@page import="java.util.ArrayList"%>
<%@page import="com.zking.pojo.Goods"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test=""></c:if>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL基本标签</title>
</head>
<body>
<%
List<Goods> list=new ArrayList<>();
for(int i=0;i<5;i++){
Goods g=new Goods();
g.setGoodsId(i);
g.setGoodsName("小米手机"+i);
g.setGoodsType("✌"+i);
g.setGoodsPrice(i*100.0);
list.add(g);
}
pageContext.setAttribute("list", list);
%>
<%--商品的遍历 --%>
<table border>
<tr>
<th>商品编号</th>
<th>商品名字</th>
<th>商品类型</th>
<th>商品价格</th>
</tr>
<%
for(Goods goods:list){
goods.getGoodsName();
}
%>
<c:forEach items="${list}" var="goods">
<tr>
<th>${goods.goodsId}</th>
<th>${goods.goodsName}</th>
<th>${goods.goodsType}</th>
<th>${goods.goodsPrice}</th>
</tr>
</c:forEach>
</table>
</body>
</html>
注:foreach遍历list集合时items里面的值要用${} 切记$前不要有空格!!!
今天的分享就到这里结束啦!!✌
以上就是关于JavaWeb域对象&EL表达式&JSTL的一些内容!!📖
期待下次再见!!😊