java学习之JSP&EL&JSTL

本文深入解析JSP指令的使用,包括page、contentType、import、errorPage等指令的作用及格式,探讨如何利用这些指令进行页面配置、资源导入及错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP

  • 指令
  1. 作用:用于配置JSP页面,导入资源文件
  2. 格式:<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 …>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
  3. 分类:
    1. page:配置JSP页面的
      • contentType:相当于response.setContentType()
        1.设置响应体的mime类型和字符集
        2.设置jsp的页面编码(只有高级的IDE才可以生效,如果使用低级的IDE需要使用pageEncoding属性来
        设置当前页面的字符集pageEncoding=“GBK”)
      • import:导包
        最好就这样写类似java的导包
        <%@ page import="java.util.List" %>
        <%@ page import="java.util.ArrayList" %>
      • errorpage:当前页面发生异常后会自动跳转到errorpage的页面上
        使用方式:
        <%@ page contentType="text/html;charset=UTF-8" errorPage="errorpage.jsp" language="java" %>
      • isErrorPage:标识当前页面是否是错误页面,有两个值一个true一个是false,如果值为true则可以
        调用内置对象exception,来抛出异常,如果是false(默认值),则不可以使用内置对象
        使用方式:
        <%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" language="java" %>
    2. include:页面包含的,导入页面的资源文件.主要是用来设置不经常变得资源,比如说页眉上的学校或者什么
      使用方式:<%@include file=“top.jsp”%>
    3. taglib:导入资源
      • 使用方式:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>prefix后的c是自定义的
      • 要想使用这些,需要先导入
        javax.servlet.jsp.jstl-1.2.4.jar
        jsp-api-2.1.jar
        jstl-api-1.2.jar
        servlet-api-2.5.jar。。这几个包
    4. 内置对象
      • 在jsp页面中不需要创建,直接使用的对象
        • 一共有9个:
          变量名-------------------- 真实类型------------------------作用
          pageContext-------------PageContext---------------当前页面共享数据,还可以获取其他八个内置对象
          request---------------HttpServletRequest-----------一次请求访问的多个资源(转发)
          session---------------------HttpSession---------------一次会话的多个请求间
          application---------------ServletContext-------------所有用户间共享数据
          response------------HttpServletResponse---------响应对象
          page---------------------------Object-------------------当前页面(Servlet)的对象 this
          out---------------------------JspWriter------------------输出对象,数据输出到页面上
          config---------------------ServletConfig---------------Servlet的配置对象
          exception-------------------Throwable----------------异常对象

El表达式

  1. 作用:用来简化和替换jsp页面中java代码的编写
  2. 语法:${表达式}
  3. 注意:jsp默认是支持el表达式的。如果要忽略el表达式
    1. 设置jsp中的page指令,添加isELIgnored="true"忽略当前jsp中所有的el表达式
    2. ${表达式}:忽略当前的el表达式
  4. 使用
    1. 运算:
      1. 算数运算符:+ - * /(div) %(mod)
      2. 比较运算符: > < >= <= == !=
      3. 逻辑运算符: &&(and) ||(or) !(not)
      4. 空运算符: empty:== 用来判断字符串、集合、数组对象是否为null或者长度是否为0==
    2. 获取值
      1. el表达式只能从域对象中获取值
      2. 语法:
        1. ${域名城.键名}:从指定域中获取指定键的值
          1. 域名城:
            1. pageScope --> pageContext
            2. requestScope --> request
            3. sessionScope --> session
            4. applicationScope --> application(ServletContext)
          2. 在request域中存储了name=“张三”,获取为${requestScope.name}
        2. ${键名}:就是不用加那个域名称了。表示依次从最小的域中查找是否有该键对应的值,直到找到为止
        3. 获取类对象、List集合、Map集合的值
          1. 对象:${域名城.键名.属性名}本质上是来调用对象的getter方法的
          2. List集合:${域名称.键名[索引]}
          3. Map集合:
            ** ${域名称.键名.key名称}
            ** ${域名称.键名[“key名称”]}
      3. 隐式对象:
        • el表达式中有11个隐式对象
        • pageContext:
          • 获取jsp其他八个内置对象
            • ${pageContext.request.contextPath}:动态获取虚拟目录

JSTL

  1. 概念:JavaServer Pages Tag Library JSP标准标签库
    * 是由Apache组织提供的开源的免费的jsp标签 <标签>

  2. 作用:用于简化和替换jsp页面上的java代码

  3. 使用步骤:

    1. 导入jstl相关jar包
    2. 引入标签库:taglib指令: <%@ taglib %>
    3. 使用标签
  4. 常用的JSTL标签

    1. if:相当于java代码的if语句

      1. 属性:
        • test 必须属性,接受boolean表达式
          • 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
          • 一般情况下,test属性值会结合el表达式一起使用
        1. 注意:
        • c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签
    2. choose:相当于java代码的switch语句

      1. 使用choose标签声明 相当于switch声明
        2. 使用when标签做判断 相当于case
        3. 使用otherwise标签做其他情况的声明 相当于default
    3. foreach:相当于java代码的for语句

<%@ page import="com.lzm.domain.User" %>
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        request.setAttribute("name","zhangsan");
        session.setAttribute("age","22");

        User user = new User();
        user.setName("张三");
        user.setAge(34);
        user.setDateStr(new Date());
        request.setAttribute("u",user);


        List list = new ArrayList();
        list.add("1111");
        list.add("2222");
        list.add(user);
        request.setAttribute("LL",list);

        Map map = new HashMap();
        map.put("name","李昊");
        map.put("info","大家好");
        map.put("u",user);
        request.setAttribute("map",map);

        String str1 = "";
        String str2 = "12";
        List list1 = new ArrayList();
        request.setAttribute("str11", str1);
        request.setAttribute("str22",str2);
        request.setAttribute("list1", list1);

        String str3 = "我是字符串";
        request.setAttribute("str3",str3);
    %>

    ${requestScope.name}
    ${sessionScope.age}
    ${sessionScope.hhhh}

    <h3>用EL获取对象里面的信息</h3>
    <h4>通过对象的属性来获取,set或get方法去掉set或set,再将剩余的首字母字母小写</h4>
    <h4>requestScope.u.dateStr这样的,u是对象</h4>
    ${requestScope.u.name}<br>
    ${requestScope.u.age}<br>
    ${requestScope.u.dateStr}<br>

    <h3>用EL获取List里面的信息</h3>
    ${requestScope.list[0]}<br>
    ${requestScope.LL[1]}<br>
    ${requestScope.LL[2].name}<br>
    ${requestScope.LL[2].age}<br>
    ${LL[2].dateStr}<br>

    <h3>用EL获取Map里面的信息</h3>
    ${requestScope.map.name}<br>
    ${map.info}<br>
    ${map.u.name}<br>
    ${map.u.dateStr}<br>

    <h3>empty的用法</h3>
    ${empty str11}<br>
    ${empty str22}<br>
    ${!empty str11}<br>
    ${ not empty str11}<br>
    ${empty list1}<br>
    ${str3}<br>

    <h3>动态获取虚拟目录</h3>
    ${pageContext.request.contextPath}<br>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值