Web.16.域对象&EL表达式&JSTL标签

目录:

        一. jsp内置对象之域对象

        二. EL表达式

                使用EL表达式

                EL运算符

                补充

        三. JSTL标签

                JSTL基本标签

                使用操作

                JSTL便签库的使用


 一. jsp内置对象之域对象

在JSP中,包含四大域对象,分别为:

* pageContext  页面容器

* request  请求

* session 服务器存储

* application 公共存储

它们的存储大小按大到小的顺序为:

application>session>request>pageContext

下面是四种域对象的详细介绍:

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

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

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

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

二. EL表达式

        EL:表达式语言(全称:Expression Language)       

功能:替代jsp页面中的复杂代码(就相当于这个 <%= %>)

        语法:$ {EL expression}

                   $ {bean.name}

        使用EL表达式的优势:

        相对于在jsp中嵌入java代码,EL的应用更为简单

        注意:EL表达式必须要从域对象中取值,但不能完全替代<%= %>的取值方式

 使用EL表达式:    (举例)

 —先向域对象中存值:

request.setAttribute("msg1", "hello 你好");
    application.setAttribute("msg2", "hello word");
    session.setAttribute("msg3", "你好");


—再使用EL表达式取出:

application:${msg2}
	<br>
	session:${msg3}
	<br>
	request.${msg1}


 运行结果:

  

 当application,session,request,pageContext 四个对象存入时的属性名相同时:

application.setAttribute("msg", "hello word");
	session.setAttribute("msg", "你好");
	request.setAttribute("msg", "hello 你好");
	pageContext.setAttribute("msg", "hello");


  使用存入的属性名取值:

application:${msg}
    <br>
    session:${msg}
    <br>
    request.${msg}
    <br>
    page:${msg}


  结果取到的值都是最小的域pageContext里面的值:

 

 

  EL中的隐含对象:(使用它们在EL中的名称来取值 )

        * pageScope

        * requestScope

        * sessionScope

        * applicationScope

application:${applicationScope.msg}
    <br>
    session:${sessionScope.msg}
    <br>
    request.${requestScope.msg==null?"x":"y"}
    <br>
    page:${msg}


 效果如下:

  

 EL隐式对象小结:

    

 

  EL隐式对象介绍:

  

 

 EL运算符

 在使用EL表达式取值时,可以在${}中对取到的值进行一些运算符操作

 运算符可以是布尔类型的运算符或者三元运算符等

 

补充:

存入集合:

List<User> list=new ArrayList<>();
    pageContext.setAttribute("us", list);


判断集合是否为空:

${us.size()==0}-${empty us}-${not empty us}


三. JSTL标签:

JSTL基本标签

 * 通用标签:set,out,remove

 * 条件标签:if

 * 迭代标签:forEach

使用操作

注意:在使用之前,一定要将 jstl标签库 导入到当前项目中

导入jstl 标签库的jar包,将它放到lib目录下方,并右键点击build Path,生成牛奶瓶,然后就算添加成功:

 

 

添加成功后就是这个样子的:

添加成功后,还需要在页面上编写导入jstl标签库的语句:

<%--tag:标签  lib库,导入一个标签库  prefix:是标签库的名字 --%>  
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


JSTL便签库的使用

 * 通用标签:set,out,remove

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


 * 条件标签:if

<%--如果登录了 显示你好 --%>
    <%--如果没有登录了 显示一个登陆 --%>
    
    <c:if test="${yy!=null }">
    <h1>欢迎使用该系统</h1>
    <h1>哈哈哈哈嗝</h1>
    </c:if>
    
    <c:if test="${yy==null }">
    <h1>你现在还没有登陆,请点击下方的登陆</h1>
    <button>请进行登录</button>    
    </c:if>


 * 迭代标签:forEach

<%--商品的遍历 --%>
    <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>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值