• jsp相关笔记,el表达式、jsp标签库(jstl)


    一、jsp基础部分

    1、介绍

    概念

    JSP(Java Server Page),java服务器端页面,可以定义html标签,又可以定义java代码。

    原理

    JSP本质上就是一个Servlet

    2、JSP定义Java代码的方式

      1. <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
      1. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。
      1. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。

    3、注释

    • html注释:
      • <!-- -->只能注释html代码片段
    • jsp注释:推荐使用
      • <%-- --%>可以注释所有

    4、指令

    作用

    用于配置JSP页面,导入资源文件

    格式

    <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>

    分类

    • 1、page:用来配置JSP页面的

        1、contentType:等同于response.setContentType()
          高级的IDE才能生效,设置响应体的mime类型以及字符集
        <%@ page contentType="text/html;charset=gbk"  pageEncoding="GBK" %> 
          低级工具,需要设置pageEncoding属性设置当前页面的字符集
        <%@ page contentType="text/html" pageEncoding="GBK" %> 
      
        2、import:导包
        <%@ page import="java.util.ArrayList" %>
      
        3、errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
        <%@ page errorPage="500.jsp" %>
        4、isErrorPage:标识当前也是是否是错误页面,默认为false,表示不可以使用内置对象exception
      
      <!-- 500.jsp -->
      <%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" language="java" %>
      <html>
        <head><title>Title</title></head>
        <body>
          <h1>服务器正忙...</h1>
          <%
            String message = exception.getMessage();
            out.print(message);
          %>
        </body>
      </html>
      
    • 2、include:页面包含的。导入页面的资源文件

      <%@ include file="header.jsp"%>
      
    • 3、taglib:引入标签库的定义,如jstl

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

    5、JSP的内置对象(9个)

    jsp页面中不需要获取和创建,可以直接使用的对象,他们分别是:

    变量名 真实类型 作用
    request HttpServletRequest 一次请求访问的多个资源(转发)
    response HttpServletResponse 响应对象
    response JspWriter 输出对象,数据输出到页面上。和response.getWriter()类似,区别是response.getWriter()数据输出永远在out.write()之前
    pageContext PageContext 当前页面共享数据,还可以获取其他八个内置对象
    session HttpSession 一次会话的多个请求间
    application ServletContext 所有用户间共享数据
    page Object 当前页面(Servlet)的对象 this
    config ServletConfig Servlet的配置对象
    exception Throwable 异常对象,需要使用page指令的isErrorPage属性为true

    二、jsp高级部分

    1、EL表达式

    介绍

    Expression Language 表达式语言,用于替换和简化jsp页面中java代码的编写

    语法及注意事项

    ${表达式}
    注意:jsp默认支持el表达式,如果要忽略el表达式:
    1、设置jsp中page指令中:isELIgnored="true" 忽略当前jsp页面中所有的el表达式。
    2、${表达式} :忽略当前这个el表达式。

    使用

    运算符类型 运算符 功能
    算数运算符 + - * /(div) %(mod)
    比较运算符 > < >= <= == !=
    逻辑运算符 &&(and) ||(or) !(not)
    空运算符 empty、not empty empty用于判断字符串、集合、数组对象是否为null或者长度是否为0,not empty则相反

    获取值,el表达式只能从域中获取值

    域名称 描述
    pageScope page作用域
    requestScope request作用域
    sessionScope session作用域
    applicationScope application作用域

    语法:

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

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

      <%
        request.setAttribute("name","张三");
      %>
      <div>获取的值为:${requestScope.name}</div>
      
    • 3、获取对象
      ${域名称.键名.属性名}:本质上会去调用对象的getter方法

    • 4、获取List集合
      ${域名称.键名[索引]}

    • 5、获取Map集合
      ${域名称.键名.key名称}或者${域名称.键名["key名称"]}

    2、JSTL

    介绍

    JavaServer Pages Tag Library JSP标准标签库,是由Apache组织提供的开源的免费的jsp标签,主要用于简化和替换jsp页面上的java代码。

    使用步骤

    • 1、导入jstl相关jar包(两个)
      javax.servlet.jsp.jstl.jar、jstl-impl.jar
    • 2、引入标签库
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    • 3、使用标签

    常用的JSTL标签

    • 1、if:相当于java代码的if语句
    <!-- test 必须属性,接受boolean表达式 -->
    <%
      //判断request域中的一个number为奇数还是偶数
      request.setAttribute("number",4);
    %>
    <c:if test="${number % 2 != 0}">
      ${number}为奇数
    </c:if>
    <c:if test="${number % 2 == 0}">
      ${number}为偶数
    </c:if>
    
    • 2、choose:相当于java代码的switch语句
    <%
      //数字编号对应星期几
      request.setAttribute("number",4);
    %>
    <c:choose>
      <c:when test="${number == 1}">星期一</c:when>
      <c:when test="${number == 2}">星期二</c:when>
      <c:when test="${number == 3}">星期三</c:when>
      <c:when test="${number == 4}">星期四</c:when>
      <c:when test="${number == 5}">星期五</c:when>
      <c:when test="${number == 6}">星期六</c:when>
      <c:when test="${number == 7}">星期天</c:when>
    
      <c:otherwise>数字输入有误</c:otherwise>
    </c:choose>
    
    • 3、foreach:相当于java代码的for语句
    <c:forEach begin="1" end="10" var="item" step="1" varStatus="s">
      值:${item}---索引:${s.index}----循环次数(从1开始):${s.count}
    </c:forEach>
    
  • 相关阅读:
    【python】requests库
    pycharm新建项目时选择virtualenv的说明
    cookie、session、token
    读写锁--DEMO
    锁降级--防止线程安全问题
    mysql-left join
    index-document-shard
    ES-常见搜索方式
    SpringBoot在自定义类中调用service层等Spring其他层
    mongodb crud
  • 原文地址:https://www.cnblogs.com/sgs123/p/14184647.html
Copyright © 2020-2023  润新知