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>
原文地址:https://www.cnblogs.com/sgs123/p/14184647.html