【Java Web_08】JSP、EL 表达式、JSTL

2021-02-04 10:11:22 浏览数 (1)

一、JSP

1. 概述
代码语言:javascript复制
* 当浏览器请求对应的JSP 时 ,JSP 经过转义形成对应的java文件,java文件
经过编译 链接 形成 .class 文件。.class 文件会用来创建 servlet 对象
这个对象就可以提供动态html响应。 
2. JSP语法
代码语言:javascript复制
① 声明区 
    * <%! 在类中方法外,属于成员位置  %> 
② 表达式
    * <%= 这里输出到页面,在 service 方法中 %> 
③ 代码块--- 代码片段
    * <% 在 service 方法中 %>
④ JSP 中的注释 
   * <!--  标记语言注释 -->   它是要发给浏览器的   
   * <%--  JSP 注释  --%>   不发给浏览器 
   * java语言注释    //    /**/    /** */   不发给浏览器 
3. JSP指令
代码语言:javascript复制
① 语法
    * <%@指令名   属性="值"   属性2="值"   %>
② JSP 中的三大指令 作用 以及属性  属性作用   
   * page 指令 
        - 作用:用来导包 和做一些页面属性的设置 
        - 属性:
            import   用来导包 
            errorPage   当jsp出现错误时 跳转到显示比较友好的一个页面上
            isErrorPage  是不是一个错误 页面   如果是则可以使用exception对象来获取异常信息       
            pageEncoding  页面用什么编码保存页面信息 
            contentType    页面以什么格式和编码进行显示数据                       
   * taglib指令
        - 作用:用来导入标签库的指令 
        - 属性:
            prefix  前缀 用来指定标签库的代号 短名     
            uri     统一资源标识    用来指定标签库的位置   
   * include 指令 
        - 作用: 用来包含特定页面的指令   静态包含
        - 属性:
            file   用来指定包含的页面 
4. JSP动作
代码语言:javascript复制
① 语法
    * <jsp:动作名  属性="值"  >  </jsp:动作名>
        如果中间没有内容 还可以简写成     <jsp:动作名    属性="值"  / >
    * 示例
        <jsp:include  属性="值"  >  
            <jsp:param   name=""  value="" />  //传递参数
        </jsp:include>
5. JSP九大内置对象
代码语言:javascript复制
* out          JspWriter             向jsp对应位置输出内容
* request      HttpServletRequest    封装Http请求信息的对象 
* response     HttpServletResponse   封装Http响应信息的对象 
* session      HttpSession           封装会话信息的对象 
* pageContext  PageContext           封装页面上下文信息的对象 
* page         Object                JSP 页面本身 
* application  ServletContext        封装servlet上下文信息的对象 
* config       ServletConfig         封装servlet 配置信息的对象 
* exception    Exception             封装异常信息的对象     

二、EL表达式

1. 概述
代码语言:javascript复制
* Expression Language 表达式语言,用于替换和简化jsp页面中java代码的编写
2. 用法
代码语言:javascript复制
* ${表达式}
* 忽略 EL 表达式
    ${表达式}
    <%@page isELIgnored="true" %>
3. 语法
代码语言:javascript复制
① ${域名称.键名}:从指定域中获取指定键的值
    * 域名称:
        1. pageScope        -->     pageContext
        2. requestScope     -->     request
        3. sessionScope     -->     session
        4. applicationScope -->     application(ServletContext)
    * 示例
        ${requestScope.name}
② ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
③ 获取对象、List集合、Map集合的值
    - 对象:
        * ${域名称.键名.属性名}
            本质上会去调用对象的getter方法
    - List集合:
        * ${域名称.键名[索引]}
    - Map集合:
        * ${域名称.键名.key名称}
        * ${域名称.键名["key名称"]}
④ 隐式对象:
    * el表达式中有11个隐式对象
    * pageContext:
        * 获取jsp其他八个内置对象
        * 示例:
            ${pageContext.request.contextPath}:动态获取虚拟目录

三、JSTL

1. 概述
代码语言:javascript复制
* JavaServer Pages Tag Library  JSP标准标签库,是由Apache组织提供的开源的免费的jsp标签
2. 用法
代码语言:javascript复制
* 导包
* 引入标签库
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3. 语法
代码语言:javascript复制
① if:相当于java代码的if语句
    - 属性:
        * test 必须属性,接受boolean表达式
            * 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
            * 一般情况下,test属性值会结合el表达式一起使用
        - 注意:
代码语言:javascript复制
            * c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签
② choose:相当于java代码的switch语句
    - 使用choose标签声明                     相当于switch声明
    - 使用when标签做判断                     相当于case
    - 使用otherwise标签做其他情况的声明        相当于default
 
③ foreach:相当于java代码的for语句
    - 遍历集合
        <c:forEach items="${requestScope.pageBean.list}" var="emp" varStatus="s">
            ${emp.xxx}
        </c:forEach>
    - for循环
        <c:forEach begin="1" var="i" step="2" end="${requestScope.pageBean.pageCount}" varStatus="s">
            ${i}    //从 beging 开始 步长为2 前进
            ${s.index}    //从 0 开始   
        </c:forEach>

0 人点赞