JavaWeb_14 域对象、El表达式、JSTL库

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、域对象?
    1.page域(pageContext):只能作用于当前页面,既不能用来做做转发的数据分享,也不能做重定向的数据分享。
    
    2.request域:只能作用于同一个请求的数据共享,所以只能在请求的转发中使用。
    
    3.session域:只能作用于一次对话中共享数据(一次对话:用户打开浏览器,浏览多个web站点后,关闭该浏览器),转发和重定向都可以使用
    
    4.context域(application):只能在同一个web应用中使用。(全局的)


之所以他们是域对象,原因是他们都内置了map集合,都有setAttribute和getAttribute方法

域对象的作用:临时的存储有效的数据,四个作用域保存的值

域对象的范围:pageContext<request<session<application

 代码如下(示例):

<!-- 通过jsp表达式的方式进行输出作用域保存的值 -->
    <%=pageContext.getAttribute("杨过") %>
    <br/>
    <%=request.getAttribute("张无忌") %>
    <br/>
    <%=session.getAttribute("郭靖") %>
    <br/>
    <%=application.getAttribute("宋威") %>
    
    
    
    <hr/>
    <!-- 
        EL表达式
            属于JSP的一个基础语法,作用:让数据调用的更简单。
            $ {  }
     -->
     <h2>EL表达式获取域对象所保存的值</h2>
    <!-- 通过EL表达式的方式进行输出域对象所保存的值 -->
    <%=pageContext.getAttribute("杨过") %> ==== ${杨过 }
    <br/>
    ${郭靖 }
 
    
    
    
    <!-- 通过域对象保存同一个键  不同的值 -->
    <%
        //存储值
        pageContext.setAttribute("zkingzz", "西施");
        request.setAttribute("zkingzz", "王昭君");
        session.setAttribute("zkingzz", "貂蝉");
        application.setAttribute("zkingzz", "杨玉环");
    %>
    <hr/>
    <!-- 获取 -->
    <!-- 通过jsp表达式的方式进行输出作用域保存的值 -->
    <%=pageContext.getAttribute("zkingzz") %>
    <br/>
    <%=request.getAttribute("zkingzz") %>
    <br/>
    <%=session.getAttribute("zkingzz") %>
    <br/>
    <%=application.getAttribute("zkingzz") %>
    
    
    <h3>通过EL表达式获取同一个键不同的值</h3>
    ${zkingzz }
    
    
    <!-- 超链接跳转  属于重定向 -->
    <p>
        <a href = "demo3.jsp">跳转</a>
    </p>
    
    <!-- 转发 -->
    <%--  <jsp:forward page="demo3.jsp"></jsp:forward> --%>
     
     <!-- 通过EL表达式获取四个域对象分别保存的值 -->
     <!-- EL表达式中提供了四个隐式域对象 -->
     <hr/>
     ${pageScope.zkingzz }
     <br/>
     ${requestScope.zkingzz }
     <br/>
     ${sessionScope.zkingzz }
     <br/>
     ${applicationScope.zkingzz }
     
     <hr/>
     <!-- EL表达式获取的值可以有哪些? -->
     ${123 }
     ${"123" }
     ${1==2 }
     ${"love"=="爱" }
     equals
     ${"love" eq "爱" }
     ${1>2 }
     <%
         List<String> list = new ArrayList<String>();
         list.add("zhangsan");
         list.add("lisi");
         session.setAttribute("list",list);
     %>
     ${list }
     <hr/>
     <!-- 保存实体 -->
     <%
         Student stu = new Student("张三","男");
         session.setAttribute("stu", stu);
     %>
    ${sessionScope.stu.name }
     
     <!-- empty 判断EL表达式中的变量是否存在 -->
     ${empty list }
     
     

一、域对象?
    1.page域(pageContext):只能作用于当前页面,既不能用来做做转发的数据分享,也不能做重定向的数据分享。
    
    2.request域:只能作用于同一个请求的数据共享,所以只能在请求的转发中使用。
    
    3.session域:只能作用于一次对话中共享数据(一次对话:用户打开浏览器,浏览多个web站点后,关闭该浏览器),转发和重定向都可以使用
    
    4.context域(application):只能在同一个web应用中使用。(全局的)


之所以他们是域对象,原因是他们都内置了map集合,都有setAttribute和getAttribute方法

域对象的作用:临时的存储有效的数据,四个作用域保存的值

域对象的范围:pageContext<request<session<application

 代码如下(示例):

<!-- 通过jsp表达式的方式进行输出作用域保存的值 -->
    <%=pageContext.getAttribute("杨过") %>
    <br/>
    <%=request.getAttribute("张无忌") %>
    <br/>
    <%=session.getAttribute("郭靖") %>
    <br/>
    <%=application.getAttribute("宋威") %>
    
    
    
    <hr/>
    <!-- 
        EL表达式
            属于JSP的一个基础语法,作用:让数据调用的更简单。
            $ {  }
     -->
     <h2>EL表达式获取域对象所保存的值</h2>
    <!-- 通过EL表达式的方式进行输出域对象所保存的值 -->
    <%=pageContext.getAttribute("杨过") %> ==== ${杨过 }
    <br/>
    ${郭靖 }
 
    
    
    
    <!-- 通过域对象保存同一个键  不同的值 -->
    <%
        //存储值
        pageContext.setAttribute("zkingzz", "西施");
        request.setAttribute("zkingzz", "王昭君");
        session.setAttribute("zkingzz", "貂蝉");
        application.setAttribute("zkingzz", "杨玉环");
    %>
    <hr/>
    <!-- 获取 -->
    <!-- 通过jsp表达式的方式进行输出作用域保存的值 -->
    <%=pageContext.getAttribute("zkingzz") %>
    <br/>
    <%=request.getAttribute("zkingzz") %>
    <br/>
    <%=session.getAttribute("zkingzz") %>
    <br/>
    <%=application.getAttribute("zkingzz") %>
    
    
    <h3>通过EL表达式获取同一个键不同的值</h3>
    ${zkingzz }
    
    
    <!-- 超链接跳转  属于重定向 -->
    <p>
        <a href = "demo3.jsp">跳转</a>
    </p>
    
    <!-- 转发 -->
    <%--  <jsp:forward page="demo3.jsp"></jsp:forward> --%>
     
     <!-- 通过EL表达式获取四个域对象分别保存的值 -->
     <!-- EL表达式中提供了四个隐式域对象 -->
     <hr/>
     ${pageScope.zkingzz }
     <br/>
     ${requestScope.zkingzz }
     <br/>
     ${sessionScope.zkingzz }
     <br/>
     ${applicationScope.zkingzz }
     
     <hr/>
     <!-- EL表达式获取的值可以有哪些? -->
     ${123 }
     ${"123" }
     ${1==2 }
     ${"love"=="爱" }
     equals
     ${"love" eq "爱" }
     ${1>2 }
     <%
         List<String> list = new ArrayList<String>();
         list.add("zhangsan");
         list.add("lisi");
         session.setAttribute("list",list);
     %>
     ${list }
     <hr/>
     <!-- 保存实体 -->
     <%
         Student stu = new Student("张三","男");
         session.setAttribute("stu", stu);
     %>
    ${sessionScope.stu.name }
     
     <!-- empty 判断EL表达式中的变量是否存在 -->
     ${empty list }
     
     

三、JSTL库
由JSP所提供的一套标准标签 
     --通用标签:set out remove
      --条件标签:if  if...else
      --迭代标签:forEach   for循环
     
    JSTL库怎么使用  
        导入------taglib指令

代码如下(示例):

 <!-- 通过JSTL库中的if标签实现一个登录案例 -->
     <!-- 
         已登录----显示当前的登录名
         未登录 ----显示登录的表单
     -->
      <%
         //获取
         request.setCharacterEncoding("utf-8");
         String username = request.getParameter("username");
         if(username!=null){
             Student student = new Student(username,"男");
             session.setAttribute("student", student);
         }
     %>
     <c:if test="${empty student }">
         <form action = "demo4.jsp" method = "post">
             账户 <input type = "text" name = "username"/>
             <br/>
             <br/>
             密码 <input type = "password" name = "password"/>
             <br/>
             <br/>
             <input type = "submit" value = "登录"/>
         </form>
     </c:if>
     <c:if test="${not empty student }">
         <h4>欢迎您回来!${student.username }</h4>
     </c:if>
      
    
    <!-- remove标签   移除 -->
    <c:set var="bb" value="123456"></c:set>
    移除前: <c:out value="${bb }"></c:out>
    <!-- 移除 -->
    <hr/>
    <c:remove var="bb" />
    移除后:<c:out value="${bb }"></c:out>
    
    <!-- foreach循环标签 -->
    <hr/>
    <!-- 
        sb  变量
        begin 起始值
        end  终值
        step 每次增长2
        varStatus 获取数据对应的行号(Y1阶段 J2EE  自定义JSP标签)
    -->
    <c:forEach  var="sb" begin="1" end="100" step="2" varStatus="demo" >
        ${sb }----${demo.index }----${demo.count } <br/>
    </c:forEach>
    
    <br/>
    <%
        List<Student> myList = new ArrayList<Student>();
        myList.add(new Student("张三1","男"));
        myList.add(new Student("张三2","男"));
        myList.add(new Student("张三3","男"));
        myList.add(new Student("张三4","男"));
        myList.add(new Student("张三5","男"));
        session.setAttribute("myList", myList);
    %>
    
    <c:forEach items="${myList }" var="stu">
        ${stu.username }   ${stu.sex }
    
    </c:forEach>

总结


总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值