j2ee19:servlet03:el表达式,jstl标准标签库、四大web域

第一:概念

EL表达式里面可以是变量、对象、集合
1.在jsp中的表达式是<%=%>.
2.servlet中的内置对象和jsp中的内置对象是同一个内置对象,因为在servlet中的session设置值之后在jsp中能够获取。
3.El表达式里面是变量的时候:将数据进行打印显示(其实EL表达式就是用来替代<%=%>的,EL表达式不需要导入jar包)
  语法:${x};:注意,$符里面的x其实是个键,是web对象中保存值的键,由web的内置对象获取值,例如pageCotent,request,session,applicatioon
  ${x}其实是在调用内置对象的getAttribute()方法。
4.pageCotent,request,session,application四个内置对象 的取值范围不同,当这四个对象的键相同的情况下根据四个内置对象的共享范围来找(从小到大)。默认是从小到大查找
5.sessionScope是对前面的扩展,当同时出现这四个键的时候,我指定我要使用session。scope的作用是指定使用哪个内置对象。
6.当El表达式里面是个对象的时候, ${stu.sno}表示调用request.getAttribute()方法,其中stu.sno表示调用了对象的get方法,跟属性无关。(这里的sno是跟实体类中的getSno保持一致的,就是把get后面的第一个单词转化成小写然后取出get后面的单词)。
7.EL表达式里面是集合的时候:${stuList[0].sno}:获取学生集合中的第一个学生的学号。

8.EL表达式的运算:
          支持算数运算,${num+100}。
          支持比较运算,${num1>num2}。gt,lt,eq,ge(分别是>,<,=,>=)。判断num是否为空:${empty num}
9.在servlet中获取session对象:HttpSession session=request.getSession
 获取application对象:ServletContext application=super.getServletContext;
 获取pageContext对象:PageContext  pageContext=
 10.jstl(jsp的标准标签库,html里面有标签,jsp中也有标签):用于集合的变量   。
    使用jstl的时候要加入c标签,taglib是标签库的意思。其中c是jstl的核心标签,是后面路径core的缩写,所有标签都以c开头
    -----1.普通标签:
   <c:set var="temp" value="123" scope="request"></c:set>:定义变量,名字是temp,值是123,保存范围是scope
   <c:set var="sno" value="${stu}"></c:set>:取值
   <c:set property="sno" target="${stu} " value="5555"></c:set>:给stu对象的sno属性赋值
    <c:out value=${}></c:out>:打印输出

    -----2.逻辑标签:
       第一个判断:<c:if test="${1>2}" var="res">:其中test写if的条件相当于小括号,var是用来保存结果的变量
            <h1>${res}</h1>
       </c:if>


       第二个循环:<c:forEach var="stu" items="stuList" begin="1" end="1" step="2" varStatus="index">:var表示集合中的元素,items表示集合,begin和end表示从哪开始循环和结束循环.step表示步长,也就是变化量。varStatus表示状态,他是个对象,index是varStatus对象的属性,表示当前的下标,从0开始。
        ${stu.sno}
        </c:forEach>

    
        第三个选择: <c:choose>
             <c:when test="1 gt 2">
                   1  
             <c:when>
             <c:when test="1 lt 2">
                  2 
               <c:when>
              <otherwise>
                   0
              <otherwise>
          <c:choose>
       第四个重定向:<c:redirect url="index.jsp"></c:redirect>注意跟jsp的区分
       第五个重定向,并把这个值传过去<c:redirect url="index.jsp"><c:param name="ps" value="100"></c:param></c:redirect>

    -----3.数据标签:
    -----4.格式化标签:
            <fmt :formatDate value="${d}"></fmt>格式化日期,d是一个Date类型的日期。
对日期格式化等。自学:fmt标签格式标签<fmt:></:fmt>
11.总结:
    -----1.jstl标准标签库不单单只有c标签,还有数据标签,格式标签等,例如格式标签就是fmt,不是c了。
     ------2.EL表达式只是升级了jsp的表达式(<%=%>),使用了${};JSTL标准标签库才是使用了c标签并完成了循环遍历等操作。

第二:代码实现

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.entity.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'index.jsp' starting page</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head>
 
  <body>
 
  
   <%--
    EL(表达式语言):将数据进行打印显示
    语法:
    ${x} :x为web对象中保存值的键,由web内置对象中通过键获取值
   --%>
  
    ${100}<br/>
    ${num }<br/>
 ${sessionScope.num }<br/>
 ${stu.sno }----${stu.sname }<br/>
 ${stuList[1].sno }----${stuList[1].sname }<br/>
 -----------------------------------------------<br/>
 <!-- el表达式的简单运算 -->
 ${num+sessionScope.num }<br/>
 ${num%sessionScope.num }<br/>
 ${num/sessionScope.num }<br/>
 -----------------------------------------------<br/>
 ${num>requestScope.num }<br/>
 ${num gt requestScope.num }<br/>
 ${num lt requestScope.num }<br/>
 ${num eq requestScope.num }<br/>
 ${num ge requestScope.num }<br/>
 ${not empty num  }<br/>
 -----------------------------------------------<br/>
 
 <!--
  jstl:jsp的标准标签库
    普通标签
    逻辑标签
    数据标签
    格式标签
  -->
 jstl<br/>
 <c:set var="temp" value="123" scope="request"></c:set>
  ${temp }
  <c:set var="sno" value="${stu.sno}"></c:set>
  ${sno }
  <c:set property="sno" target="${stu}" value="780000"></c:set>
  ${stu.sno }
  <c:out value="${stu.sno}"></c:out><br/>
  -----------------------------------------------<br/>
 <c:if test="${1 lt 2}" var="res" >
  
  <h1>1 lt 2:----${res }</h1>
 </c:if>
 
 <c:if test="${1 gt 2}" var="res" >
  
  <h1>1 gt 2:----${res }</h1>
 </c:if>
 <!-- begin="1" end="1"  step="2" -->
 <c:forEach var="stu" items="${stuList}" varStatus="index">
  ${index.index}-----${stu.sno }-----${stu.sname }<br/>
 </c:forEach>
 
 <c:choose>
  <c:when test="${stu.sno eq 78000}">
   eq 78000
  </c:when>
  <c:when test="${stu.sno lt 78000}">
   lt 78000
  </c:when>
  <c:otherwise>
   gt 78000
  </c:otherwise>
 </c:choose>
 
 
  </body>
</html>

猜你喜欢

转载自1601844782.iteye.com/blog/2274205