EL表达式与JSTL

一、jsp内置对象之域对象:

  -- pageContext:属性的作用范围仅限当前的jsp页面(范围最小)

  -- request:属性的作用范围仅限同一个请求(转发有效)

  -- session:属性的作用范围仅限于一次会话,浏览器打开直到关闭称为一次会话(在此期间会话不失效)

  -- application:属性的作用范围仅限于当前web应用(范围最大)

Response不是域对象,因为不能存对象

域对象的大小比较

Application>session>request>pageContext

二、EL(Expression Language)表达式:

  -- 功能:替代jsp页面中的复杂代码

<%= %>

  -- 语法:${EL expression}  

            ${bean.name}

<%
User u=new User("root","root123");
pageContext.setAttribute("user", u);
%>
${user}
<br>
名字:${user.getName()} ${user.name}<br>
密码:${user.getPwd()} ${user.pwd}
${user.name.equals("root")?"yes":"no" }

 

  -- EL中的隐含对象(pageScope、requestScope、sessionScope、applicationScope)

如果命名都一样,那么我们就按照范围从小往大进行取值,不然需要域对象+Scope.命名

<%
pageContext.setAttribute("msg", "world 你好");
%>
<!-- EL表达式 -->
application:${applicationScope.msg};
<br>
session:${sessionScope.msg};
<br>
request:${requestScope.msg};
<br>
page:${msg};

  -- EL运算符(算术 关系 Empty运算符【判断集合中值是否为空 返回true或者false】)

<%
List<User> list=new ArrayList<>();
pageContext.setAttribute("us", list);
%>
${us.size()==0} - ${empty us} - ${not empty us}

 

也可以使用正则表达式哦

request:${requestScope.msg==null?"x":"y"}

注意:EL表达式必须是从域对象中取值(没有从域对象中取值不会显示)

正确示例:

<%
int sum=100;
/*先把他放到域对象中*/
pageContext.setAttribute("sum", sum);

%>
<%-- EL表达式必须是从域对象中取值--%>
总价:${sum };

三、JSTL

  --通用标签:set out remove

1.首先需要导入两个jar包

2.在页面中导入jstl标签吧库

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

3.运用

<%--pageContext.setAttribute("a",1);--%>
<c:set scope="page" value="1" var="a"></c:set>
<c:out value="${a}"></c:out>
<%--pageContext.removeAttribute("a");--%>
<c:remove var="a" scope="page"></c:remove>

 --条件标签:if

<%
    //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>

 

--迭代标签:forEach 

 例:商品的遍历

1.创建一个实体类

package com.zking.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

public class Goods {

    private Integer goodsId;
    private String goodsName;
    private String goodsType;
    private Double goodsPrice;
	public Integer getGoodsId() {
		return goodsId;
	}
	public void setGoodsId(Integer goodsId) {
		this.goodsId = goodsId;
	}
	public String getGoodsName() {
		return goodsName;
	}
	public void setGoodsName(String goodsName) {
		this.goodsName = goodsName;
	}
	public String getGoodsType() {
		return goodsType;
	}
	public void setGoodsType(String goodsType) {
		this.goodsType = goodsType;
	}
	public Double getGoodsPrice() {
		return goodsPrice;
	}
	public void setGoodsPrice(Double goodsPrice) {
		this.goodsPrice = goodsPrice;
	}
	public Goods() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Goods(Integer goodsId, String goodsName, String goodsType, Double goodsPrice) {
		super();
		this.goodsId = goodsId;
		this.goodsName = goodsName;
		this.goodsType = goodsType;
		this.goodsPrice = goodsPrice;
	}
	@Override
	public String toString() {
		return "Goods [goodsId=" + goodsId + ", goodsName=" + goodsName + ", goodsType=" + goodsType + ", goodsPrice="
				+ goodsPrice + "]";
	}
    

}

2.进行编写和实现

<%@ page import="java.util.List" %>
<%@ page import="com.zking.pojo.Goods" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <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>

好啦,今天就到这里咯,下次见咯,我的宝

 

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值