JSP&EL&JSTL

1、jsp:  

  1、指令 

   *作用:用于配置警示牌页面、导入资源文件

    *格式:<%@ 指令名称 属性名1 = 属性值1 属性名2 = 属性值2 属性名3 = 属性值3.... %>

      (多个属性名间用空格隔开。 )

    *分类有三种指令:

      1、page:配置jsp页面的

          *contentType:等同于response.setContentType

             1、设置响应体的mime类型以及字符集

             2、设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)

          *import:导包,例如jsp代码中写Java代码,新建一个集合,需要导包,就用这个。

          *errorPage:当前页面发生异常后会自动跳转到指定的错误页面

          *errorPage:标识当前页面是否是错误页面

             *true:是,可以使用功能内置对象exception,可以通过它将错误信息打印到日志上

             *false:否,默认值。不可以使用内置对象exception

      2、include:用以引入其他页面。导入页面的资源文件

          *<@%include file="top.jsp"%>

      3、taglib:导入资源,例如导入jstl、EL、jQuery等

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

            *prefix:前缀,自定义的,例如:<c:if test="111"></c:if>

  2、注释

      1、html注释:

        <!-- -->:只能注释html代码片段

      2、jsp的注释:推荐

        <%-- --%>:可以注释html和脚本等所有jsp代码

  3、内置对象

      *在jsp页面中不需要创建,直接使用的对象

       *一共有9个

        变量名              真实类型                作用

       *pageContext(域)        pageContext              作用于同一个页面,同一个页面均可以访问pageContext的数据(该变量里面的方法可以用于获取另外8个内置对象)

       *request             HttpServletRequest           作用于一次请求的生命周期,同一个请求内都可以访问该域中的数据

       *session             HttpSession               一次会话的多个请求间

       *application            ServletContext             所有用户间共享数据,作用域最大,而且唯一,服务器开启既生成,关闭既销毁

       *response            HttpServletReponse           响应对象

       *page              Object                 当前servlet的对象

       *out               JspWriter                输出对象,数据输出到页面上

       *config              ServletConfig              servlet的配置对象

       *exception            Throwable                异常对象

2、mvc开发模式

3、EL表达式

    1、概念:expression language 表达式

    2、作用:替换和简化jsp页面中Java代码的编写

    3、语法:${表达式},例如 :  ${3>4},返回false

    4、注意:

      *jsp默认支持EL表达式,如果要忽略EL表达式:

        1、设置jsp中page指令中:isELIgnored="ture",忽略当前jsp页面中所有的EL表达式

        2、\${表达式}:忽略当前这个EL表达式,加一个\

    5、使用:

      1、运算:

        *运算符:

          1、算数运算符:+ - * / (div) %  (mod)   ---->返回计算后的值

          2、比较运算符:>(大于)  <(小于)  >=(大于等于)   <=(小于等于)   ==(等等于)  != (不等于)    ------>返回true或者false

          3、逻辑运算符:&&、||、!    ------>返回true或者false

          4、空选算符:empty

             *功能:用于判断字符串、集合、数组对象是否为null并且长度是否为0

             *${empty  list},判断list是否为null,或者长度为0

             *${not empty  list},判断list是否不为null,且长度大于0

      2、获取值

        1、EL表达式只能从域对象中获取值

        2、语法:

          1、${域名城.键名}:从指定域中获取指定键的值

            *域名称:

              1、pageScope   ------>pageContext

              2、requestScope  ------>request

              3、sessionScope  ------>session

              4、applicationScope ----->application(ServletContext)

            *举例:在request域中存储了name=张三:request.setAttribute("name","张三");

            *获取:${requestScope.name}

            *如果没有获取到值,会显示空字符串,不会报错或者打乱页面

          2、${键名}:表示依次从最小的域中开始查找是否有该键对应的值,知道找到为止。

          3、获取对象、list集合、map

            *获取对象中的值:${requestScope.user.name}或者${user.name}  -------  ${域名.键名.属性名}

            *获取list中的值:${requestScope.userList[0]}或者${requestScope.userList[0]}  --------  ${域名.键名[索引]}

              *获取list中对象元素的属性值:${requestScope.userList[0].name}

            *获取map集合中的值:${requestScope.userMap.name}       或者${requestScope.userMap["name"]}  -----${域名称.键名.key名称}或者${域名称.键名["key名称"]}

      3、隐式对象:

        *EL表达式中有11个隐式对象

        *pageContext:

          *${pageContext.request.contextPath}:用于动态获取项目的虚拟目录:比如用于拼接请求路径: “${pageContext.request.contextPath}/index.action"

4、JSTL标签

    1、概念:JavaServer PagesTag Library      jsp标准标签库

      *是由Apache组织提供的开源的免费的jsp标签

    2、作用:用于简化和替换jsp页面上的Java代码(用于尽量不写Java代码,写成标签样式)

    3、使用步骤:

      1、导入JSTL相关jar包

      2、引入标签库:使用taglib指令:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

    4、常用的JSTL标签

      1、if ------------- :相当于Java代码的if语句  

        test中是该if语句的条件,成立则执行该if标签内的代码,通常与El表达式结合使用

<c:if test="${3>4}"></c:if>

 

        

      2、choose --------- :相当于Java代码的switch语句:   

<c:choose>
    <c:when test="${x==1}">x是1</c:when>
    <c:when test="${x==2}">x是2</c:when>
    <c:when test="${x==3}">x是3</c:when>
    <c:when test="${x==4}">x是4</c:when>
    <c:otherwise>未匹配到数字</c:otherwise>
</c:choose>

 

      3、foreach --------- :相当于Java代码的for语句

         *属性:

          begin:开始值(相当于int i = 0,从0开始循环,包含0)

          end:结束值(相当于i<=10),循环到10结束,包含10)

          var:临时变量

          step:步长(相当于i++,一次增长多少)

          varStatus:循环的状态对象,里面有一些可用的方法,例如:index:容器中元素的索引,从0开始,count是循环的次数,从1开始计算

          如下:循环10次,每次打印i,会打印入1到10

<c:forEach begin="1" end="10" var="i" step="1" varStatus="s">
    ${i}<br>
  ${s.index}
  $(s.count)<br>
</c:forEach>

 

    重点:遍历容器:

      如下便可遍历打印出list集合中的所有元素:

<c:forEach items="${list}" var="str" varStatus="s">
    ${str}
</c:forEach>

 

 

 

      

 

posted @ 2020-03-08 16:41  食一碗人间烟火  阅读(172)  评论(0)    收藏  举报