web核心66-day12笔记(jsp , el和jstl)

web核心66-day12笔记


jsp和el表达式和jstl(只是了解,直接看文末总结吧!)

1. jsp:

java server pages
1)jsp本质就是一个servlet
2)特点:
    在页面既可以写java代码也可以写html代码
3)目的:
    简化你拼接字符串的痛苦
4)创建jsp:
    使用idea的创建功能
    如果想将原来html页面转换成jsp 就是将原来的html代码完全复制粘贴到jsp文件(只保留第一行:jsp的page命令行)
5)jsp的工作流程:
    当我们请求一个jsp页面,实际tomcat就把该请求交给内置servlet jspServlet(jsp引擎)
    jspServlet内部根据你的请求路径 在项目内找该jsp文件 找到以后,jspservlet进行翻译的过程,
    翻译完成以后,直接调用javac编译成class文件,调用它的service()执行逻辑---->就是将你不想拼接的字符串
    我帮你拼接返回了浏览器

6)jsp写java代码语法:
    1.直接编写Java代码片段
        <% java代码   %>
    2.输出表达式写法
        <%=输出表达式 %>
    3.声明成员变量和方法
        <%! 声明成员变量和方法  %>
7)jsp也有 注释:
    java代码注释跟java一样
    html代码注释跟html注释一样
    jsp注释  <%--  --%>

    不用记住 ,选中注释代码 ctrl+shift+/

8)jsp的命令:
    本身jsp的命令不要求必须在最上面写
    <%@ 命令名 属性名=属性值  属性名=属性值%>

    page:
        指明当前页面属性:(不需手动改)
            contentType:指明当前页面的编码格式 
            import:导入类:自动导包
            乱七八糟的属性:
                buffer="8kb" 缓存区大小
                autoFlush="true" 自动刷新
                errorPage:出错可以指定跳转的一个错误页面
                isErrorPage:是否是错误页面
                isELIgnored:是否忽略el表达式
    taglib:

    include:静态包含:------------->一定要试一试
        将某些页面包含 省去很多代码
        <%@ include file="被包含的页面"%>

9)jsp的九大内置对象
    request     请求对象
    session     session对象
    application servletContext 管家
    pageContext jsp页面域对象
    out     可以理解response.getWriter() 
    response    响应
    exception   错误对象
    config      servletConfig
    page        this


10)jsp的四大域对象
    域对象------>
        servletContext--->项目
        session---------->会话过程------->保存用户状态
        request---------->一次请求中------>请求转发

    request         请求对象
    session         session对象
    application     servletContext 管家
    pageContext     jsp页面域对象

    10.2)pageContext也有xxxAttribute方法: 作用范围 页面内容
        pageContext.findAttribute("属性名");//指的是从四个域中查找 
            从小到大 依次查找 找到位置
        pageContext 可以获取其他八个内置对象

2. el表达式

1)目的 
    让jsp页面看起来整洁点----->替代输出表达式语句
    <%=user.getUsername%>
2)语法:
    ${表达式规则}
3)表达式规则的应用(3个):
    1.可以用来获取域中数据---(1最重要)
        域名是可以省略不写的 前提名字是唯一的  实践我们应该起名注意点 保证唯一 
        使用el表达式获取值 如果不存在直接就是空白 

        域名--->application,session,request,page--Scope
        1.1 获取简单数据
            基本语法:
                ${域名.属性名}

        1.2 获取复杂数据
            数组: ${属性名[index]}
            list集合:${属性名[index]}
            map集合:${属性名.map集合key的名字}

            变态的写法:
                ${属性名[mapkey的变态名字]}
        1.3 javaBean属性
            ${属性名.javaBean属性名}

            1.3.1.什么叫javaBean(特点:)
                1).字段私有
                2).必须有空参构造
                3).有getter或setter方法
                4).类必须公共的
                5).类如果有必要 实现序列接口

                (3).有getter或setter方法
                    如果将getter或者setter方法 前缀去掉 驼峰式名效果去掉--->得出一个字符串
                    getName()---->name
                    getId()------>id
                    这时我们称 字符串是该javaBean的javaBean属性
                    javaBean跟字段有无/名字-没有一毛钱关系,只跟getter和setter方法有关

    2.支持运算:
        +在java代码有两个含义:  一个加法运算 一个拼接字符串
        +在el表达式只代表: 加法运算

        empty运算符:判空的
            1.对象为空
            2.集合大小为空
            3.字符串是否"" 空字符串

        三元运算表达式

    3.可以用来获取el内置对象  十一个
        pageScope:域对象 只有一个作用 获取域中数据

        pageContext:站在了对象的角度
            xxxAttribute方法之外 
            获取其他八个内置对象
            pageContext.getRequest()//获取request对象---->request.getContextPath()

        ${pageContext.request.contextPath}----->在jsp页面获取项目名
        重要----重要----重要

3.jstl:

jsp standard tag lib
是由apache维护,使用引入第三方jar包

1)目的:
    替代控制语句 和for循环

2)使用步骤
    1.导入jar包(javax.servlet.jsp.jstl.jar 和 jstl-impl.jar )
    2.需要在jsp页面 声明使用 jstl哪一部分功能
        使用taglib 命令

3)jstl提供:
    core:核心功能 
        了解
        xml:跟xml解析相关的
        sql:跟sql解析相关的
        fmt:跟格式化相关
        functions:跟辅助函数相关

if判断语句  for循环

3.1 if判断语句---->jsp 标准标签库

    1.需要页面引入该功能
        <%@taglib prefix="c(前缀你可以改)" uri="http://java.sun.com/jsp/jstl/core" %>

        
            
成年人
基本没啥卵用
成年人
/////////////////////////////////////// 3.2 for循环的使用: 1)基本用法 <%--步长--%> ${变量名} 2)高级用法 循环操作 数组 list set ${n} map ${n.key}--- ${n.value} //采用是键值对形式遍历 varStatus:正在遍历元素的属性或状态 index:索引 count:序号---------------------->记住这一个 first:是否是第一个 last:是否是最后一个 current::标识当前元素本身


本节重点:


1.jsp与html的区别是啥?

    jsp是java serve page,html是超文本标记语言hyper text markup language;html文件增加命令行page,修改文件后缀名-->jsp文件
        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    jsp页面除了写html代码,还可以用固定格式编辑java代码;jsp可简化拼接字符串.

2.jsp的工作流程:

当我们请求一个jsp页面,实际tomcat就把该请求交给内置servlet jspServlet(jsp引擎);
jspServlet内部根据你的请求路径 在项目内找该jsp文件 找到以后,jspservlet进行翻译的过程,翻译完成以后,直接调用javac编译成class文件,调用它的service()执行逻辑---->就是将你不想拼接的字符串,我帮你拼接返回了浏览器.

3.jsp的9个内置对象,有啥用?

        request     请求对象
        session     session对象
        application servletContext 管家
        pageContext jsp页面域对象
        out     可以理解response.getWriter() 
        response    响应
        exception   错误对象
        config      servletConfig
        page        this

4.四个域对象,有啥用?

        request         请求对象
        session         session对象
        application     servletContext 管家
        pageContext     jsp页面域对象

5.el是干啥的?为啥要引用它?

    EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,
    EL 出现的目的是要替代jsp页面中输出脚本的编写。

6.el有哪3个主要功能

    1). 从域对象中查找指定的数据。
    2). 内置对象使用
    3). 执行运算符

7.el中最重要的那个:

    ${pageContext.request.contextPath}----->在jsp页面获取项目名

8.JavaBean是啥,有啥特点

    1).字段私有
    2).必须有空参构造
    3).有getter或setter方法
    4).类必须公共的
    5).类如果有必要 实现序列接口

    (3).有getter或setter方法
        如果将getter或者setter方法 前缀去掉 驼峰式名效果去掉--->得出一个字符串
        getName()---->name
        getId()------>id
        这时我们称 字符串是该javaBean的javaBean属性
        javaBean跟字段有无/名字-没有一毛钱关系,只跟getter和setter方法有关

9.jstl是干啥的,怎么引用?核心功能中最常用的if和forEach使用格式?

    JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。
    jstl出现的目的同el一样也是要提到jsp页面中的脚本代码。
    JSTL标准标准标签库有5个子库,但随着发展,目前常使用的是他的核心库Core http://java.sun.com/jsp/jstl/core

10.jstl的使用:

    1).导入jar包(javax.servlet.jsp.jstl.jar 和 jstl-impl.jar)
    2).使用taglib指令在jsp页面导入要使用的jstl标签库
        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

11.if判断语句:

    
        num大于5
    

12.for循环:

    
        ${vs.count}==${user.username}==${user.age}
    

13.for循环中怎样增加序号-varStatus–count

    
        ${vs.count}

你可能感兴趣的:(notes)