JavaWeb域对象&EL表达式&JSTL

本文介绍了JavaWeb中的域对象,包括作用域概念及四大域对象;深入讲解了EL表达式的功能、语法和特点;探讨了JSTL的用途、定义及标准标签库的应用,包括通用、条件和迭代标签的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 一、域对象

1、什么是作用域?

2、四大域对象

二、EL

1、为什么需要EL

2、什么是EL

3、EL的功能

4、EL的语法

5、EL的特点

🔘自动转换类型

🔘使用简单

6、EL变量属性范围名称

  7、获取对象集合中的数据

三、JSTL

1、为什么使用JSTL?

2、什么是JSTL?

3、使用JSTL的步骤

4、JSTL标准标签库内的标签

🔸通用标签的使用

🔸 条件标签的使用

🔸迭代标签


 一、域对象

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的优点
  1. 提供一组标准标签
  2. 可用于编写各种    动态 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的一些内容!!📖

期待下次再见!!😊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值