• Day45-9大内置对象、JSP标签、JSTL标签、EL表达式、JavaBean


    Day45-9大内置对象、JSP标签、JSTL标签、EL表达式、JavaBean

    9大内置对象

    <%--两种转发方式--%>
    <%
        pageContext.forward("/index.jsp");
        request.getRequestDispatcher("/index.jsp").forward(request,response);
    %>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    补充:双亲委派机制

    1. 当Application ClassLoader 收到一个类加载请求时,他首先不会自己去尝试加载这个类,而是将这个请求委派给父类加载器Extension ClassLoader去完成。
    2. 当Extension ClassLoader收到一个类加载请求时,他首先也不会自己去尝试加载这个类,而是将请求委派给父类加载器Bootstrap ClassLoader去完成。
    3. 如果Bootstrap ClassLoader加载失败(在\lib中未找到所需类),就会让Extension ClassLoader尝试加载。
    4. 如果Extension ClassLoader也加载失败,就会使用Application ClassLoader加载。
    5. 如果Application ClassLoader也加载失败,就会使用自定义加载器去尝试加载。
    6. 如果均加载失败,就会抛出ClassNotFoundException异常。

    pageContextDemo01.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <%--脚本片段中的代码,会被原封不动的生成到.JSP.java中
    要求:
    这里面的代码必须保证java语法的正确性
    --%>
    <%--内置对象--%>
    <%
        pageContext.setAttribute("name1","小赵1号");//保存的数据只在一个页面中有效
        request.setAttribute("name2","小赵2号");//保存的数据只在一次请求中有效,请求转发会携带这个数据(用pageContext.forward实现转发到其他页面,那么其他页面也可以使用这个数据)
        session.setAttribute("name3","小赵3号");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
        application.setAttribute("name4","小赵4号");//保存的数据只在服务器中有效,从打开服务器到关闭服务器
    %>
    <%--通过PageContext取出我们保存的值,通过寻找方式来--%>
    <%--从底层到高层(作用域)--%>
    <%
        String name1 = (String)pageContext.findAttribute("name1");
        String name2 = (String)request.getAttribute("name2");
        String name3 = (String)session.getAttribute("name3");
        String name4 = (String)application.getAttribute("name4");
    %>
    <%--使用EL表达式输出--%>
    <h1>取出的值为:</h1>
    <h3>${name1}</h3>
    <h3>${name2}</h3>
    <h3>${name3}</h3>
    <h3>${name4}</h3>
    </body>
    </html> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    测试:

    在这里插入图片描述

    request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如新闻、用户看完没用的。

    session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如购物车…

    application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他的用户还可能继续使用,比如:聊天数据…

    JSP标签、JSTL标签、EL表达式

    EL表达式:

    • 获取数据
    • 执行运算
    • 获取web开发的常用对象

    JSP标签

    页面跳转

    jsptag01.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        Title
    
    
    

    1

    <%--在跳转中添加参数--%>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    jsptag02.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        Title
    
    
    

    2

    <%--取出参数--%> 名字:<%=request.getParameter("name")%> 年龄:<%=request.getParameter("age")%>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    测试

    在这里插入图片描述

    JSTL

    JSTL标签库的使用就是为了弥补HTML标签不足,它自定义许多标签,可以供我们使用,标签的功能和Java代码一样

    • 核心标签(掌握部分)

    在这里插入图片描述

    • 格式化标签
    • SQL 标签
    • XML 标签
    JSTL标签使用步骤

    前提:

    在Tomcat中也需要引入JSTL包,如果报错了(JSTL解析错误)可能就是没有引入jstl的包,需要手动引入jstl的包。

    引入JSTL核心标签库,我们才能使用JSTL标签

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    • 1
    1. 引入对应的taglib

    2. 使用其中的方法

    登录判断案列

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%--引入JSTL核心标签库,我们才能使用JSTL标签--%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    
        Title
    
    
    

    if测试


    <%--把表单里的数据提交到这个页面,我们再通过这个页面来获取--%>
    <%-- EL表达式获取表达中的数据 ${param.参数名} --%>
    <%--判断如果提交的用户名是管理员,则登录成功--%>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    测试

    登录失败

    在这里插入图片描述

    登录成功

    在这里插入图片描述

    成绩判断

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%--引入JSTL核心标签库,我们才能使用JSTL标签--%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    
        Title
    
    
    <%--定义一个变量score,值为95--%>
    
    
    
        
            你的成绩为:优秀
        
        
            你的成绩为:良好
        
        
            你的成绩为:不及格
        
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    测试

    在这里插入图片描述

    c foreach遍历

    <%@ page import="java.util.ArrayList" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%--引入JSTL核心标签库,我们才能使用JSTL标签--%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
        Title
    
    
    <%
      ArrayList people = new ArrayList<>();
      people.add(0,"小赵1号");
      people.add(1,"小赵2号");
      people.add(2,"小赵3号");
      people.add(3,"小赵4号");
      request.setAttribute("list",people);
    %>
    <%--
    遍历:
    var 每一次输出来的变量
    items 要遍历的对象
    --%>
    
      

    <%-- begin 起始位置 end 结束位置 step 步长 --%>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    测试

    在这里插入图片描述

    JavaBean

    实体类

    JavaBean有特定的写法:

    • 必须有一个无参构造
    • 属性必须私有化
    • 必须有对应的get/set方法

    一般用来和数据库的字段做映射 ORM;

    ORM:对象关系映射

    • 表–>类
    • 字段–>属性
    • 行记录–>对象
    idnameageaddress
    1小赵1号16永恒梦境
    2小赵2号17彩虹之森
    3小赵3号18吾心安处
    class People{
        private int id;
        private String name;
        private int age;
        private String address;
    }
    class A{
        new People(1,"小赵1号",16,"永恒梦境");
        new People(2,"小赵2号",17,"彩虹之森");
        new People(3,"小赵3号",18,"吾心安处");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    JavaBean标签

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        Title
    
    
    <%
    //    People people =new People();
    //    people.setAddress();
    //    people.setAge();
    //    people.setId();
    //    people.setName();
    %>
    
    <%--设置值--%>
    
    
    
    
    <%--取值--%>
    ID:
    姓名:
    年龄:
    住址:
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    测试

    在这里插入图片描述

  • 相关阅读:
    2015年蓝桥杯省赛C/C++ A组 灾后重建题解(100分)
    <Java>一把王者的时间,带你认识String类
    Kafka系列之:延时队列
    评论情感分析----多种机器学习模型测试总结
    搜维尔科技: 使用 Xsens 和 HTC Vive进行电影制作案例
    接口测试神器Apifox究竟有多香?
    十大排序(总结+算法实现)
    Bootstrap Blazor 实战 Menu 导航菜单使用(2)
    win11启动docker报错
    关于QUERY_ALL_PACKAGES权限导致Google下架apk
  • 原文地址:https://blog.csdn.net/GHY0911/article/details/126736291