二阶段笔记

这篇博客记录了JavaScript的基础知识,包括null是Object类型的值、数值类型异常NaN、位运算符特性、undefined的含义、window对象的使用以及CSS样式LVHA原则。此外,还涉及DOM操作、循环定时器、jQuery中的特定选择器、DQL查询规则、数据库中的约束和索引、JDBC操作以及Cookie的有效路径和访问路径等。
摘要由CSDN通过智能技术生成

day03笔记

1.null是Object数据类型的一个值

2.数值类型异常NaN,NaN属于number数据类型

3.位运算符:没有无符号左移

4.undefined是未赋值时的默认值

5.整个页面属于window对象,window.alert()

6.利用LVHA原理来给链接应用样式 :如果你想展现不同状态的链接样式,一定要记住link-visited-hover-active的顺序,或者简写为LVHA。

day04笔记

1.笔记

replaceChild(修改后标签,修改前标签),不加引号
appendChild(标签名),不加引号
insertBefore(要插入的标签名,参考标签);不加引号

2.document.getElementsByClassName(“dd”);这几个的返回值是什么

  1. 根据id获取元素
    document.getElementById(“id值”); 返回整个标签元素
  2. 根据class获取元素
    document.getElementsByClassName(“class值”); 返回HTMLCollection
  3. 根据标签名获取元素
    document.getElementsByTagName(“标签名”);返回HTMLCollection
  4. 根据标签的name属性 获取元素
    document.getElementsByName(“name值”); 返回 NodeList

3.创建循环定时器

4.NodeList()和HTMLCollection()的区别(了解)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        function change() {
             /*在有搜索条件时,俩个没有区别*/
            var input = document.getElementsByName("inputname");
           console.log(input);
           input[0].innerHTML
           input[0].innerText
           var dd=document.getElementsByTagName("p");
           console.log(dd);
           // dd[0].inn
// var v=document.getElementById("d1");
// v.style.color="red";
// console.log(v);






            // var body1 = document.getElementsByTagName("body")[0];

            // var l = body1.childNodes;
            // var l2 = body1.childElementCount;
            // console.log(l.length);/*NodeList 节点 包括换行、空文本、标签*/
            // console.log(l2);/*HTMLCollection  只包含标签相关的*/
           

        }
    </script>
    <style>
      
    </style>
</head>

<body>


    <p id="d1">锄禾日当午</p>
    <p>汗滴禾下土</p>
    <input type="button" value="修改div中文本的字体颜色" onclick="change()">
    <input type="text" name="inputname">

day05笔记

jquery中int型默认11位

选择器gt()

在代码中 tr:even:gt(2)代表的意思是找tr为偶数的且是第三个往后。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery-3.5.1.js"></script>
    <script>
        $(function () {
            $("tr:even:gt(2)").css("backgroundColor", "red");
            $("tr:odd").css("backgroundColor", "green");

        })
    </script>
</head>

<body>
    <table border="1" cellspacing="0" width="400px" height="400px">
        <caption>学生表</caption>
        <tr>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>爱好</th>
        </tr>
        <tr>
            <td>张三</td>
            <td></td>
            <td>23</td>
            <td></td>
        </tr>
        <tr>
            <td>李四</td>
            <td></td>
            <td>23</td>
            <td></td>
        </tr>
        <tr>
            <td>王五</td>
            <td></td>
            <td>23</td>
            <td></td>
        </tr>
        <tr>
            <td>赵六</td>
            <td></td>
            <td>23</td>
            <td></td>
        </tr>
        <tr>
            <td>张三</td>
            <td></td>
            <td>23</td>
            <td></td>
        </tr>
        <tr>
            <td>张三</td>
            <td></td>
            <td>23</td>
            <td></td>
        </tr>
    </table>

</body>

</html>

day07笔记

DQL查询中只有order by可以使用别名

分组查询:分组前查询和分组后查询的区别

SELECT AVG(salary),department_id//分组后的字段
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY department_id//分组
HAVING AVG(salary)> 5000;//分组后AVG(salary)字段; 分组前没有该字段,所以不能用(分组前比较)where AVG(salary)>5000;

数据库中什么时候用反引号什么时候用单引号??

反引号用于字段(反引号与不用任何符号等价)表示该字段下的整列值;单引号用于变量、字符串,具体的某一个字符串,比如DML在插入值时

主键与外键

数据库中表的字段 主键约束primary key 会生成索引。添加外键后也会生成索引。

mysql常见五个约束关于索引

primary key、unique、foreign key、not null、default五个约束中只有primary key、unique、foreign key会生成索引

day08笔记(重点DML、DQL、主键外键)

关于今天笔记中补充函数的说明

1.AVG()函数参数可以是字段也可以是表达式
2.length()函数求得是字符个数。utf-8中中文占三个字符
3.trim()只能删除字符两端的空格,不能删除字符之间的空格
例子:SELECT LENGTH(TRIM(“哈”));//结果为3,在utf-8中汉字占3个字符
4.sum()会自动忽略null值
5.补充函数:substr(str,起始索引,截取个数) 截取字符串
注意:数据库中的字符串索引是从1开始的

关于作业

作业1:分组后可以查到分组的字段和分组函数
作业2:别名的as字段可以省略
作业5:查询结果去重distinct

07作业第七题

关于分组查询

  1. 查询的数据只能是 分组字段和分组函数的结果 。 分组函数(聚合函数):传递多个值 返回一个结果,分别是avg() 平均值 max() min() sum() count()

关于多表查询

1.SQL92格式中的关键字顺序固定
2.SQL99内连接中表的顺序随意。外连接中表的顺序不能换,要分主表和从表

关于内外自连接

1.多表查询SQL92中几张表用存在外键关系吗
内连接和外连接与外键无关,另外外键只是为了保证数据的正确性
2.左外连接:以左侧为主表,查询主表中所有数据,有关系的显示数据,没有关系的 显示null
3.内连接查询有关系的数据。外连接查询没有关系的数据,有主从表之分。
4.自连接:数据来自同一个表。非等值连接和等值连接的区别?

关于子查询

  1. 任意all:和所有的比较。任一any:和最大值比较

day09笔记

关于事务

1.笔记中事务的四种隔离级别案例演示
案例演示注意事项:
select @@tx_isolation #查看当前数据库隔离级别,数据库隔离级别默认repeatable read 。
@@代表查看数据库全局变量对整个数据库都有作用 演示repeatable-read卖家提交之后再设置读已提交 。打开两个SQLyog,一个是买家一个是卖家,在卖家设置隔离级别set session transaction isolation level read uncommitted;。卖家开启手动事务查账show variables like ‘autocommit’; set autocommit=0;买家开启手动事务转账show variables like ‘autocommit’; set autocommit=0;卖家开启事务start transaction;和查询提交语句有格式要求:查询和提交缩进两格。另一个SQLyog中的买家start transaction ;和后面的更改表语句、提交、回滚语句有格式要求,缩进。
在演示下一个隔离级别时首先要提交,提交代表事务结束。
银行查账案例:只查看银行开启事务之前的信息。此时是设置隔离级别为repeatable read
演示幻读:
在银行开始事务之后在表中插入了一条数据,但在银行查不到事务开始之后的,令人觉得是表中没有该条数据,在银行事务中添加插入语句运行,此时报错“表中索引位置已存在数据”,叫做幻读

关于视图

1.一个表可以创建多个视图

关于存储过程

1.inout 只需要定义传出数据的类型

关于触发器

1.创建触发器
不能创建相同的触发器,报错:
This version of MySQL doesn’t yet support ‘multiple triggers with the same action time and event for one table’
一个表不能具有相同操作时间和事件的多个触发器”

面试题

触发器和存储过程的区别:触发过程手动调用,触发器自动调用(某一时刻)

关于存储引擎

某个表的存储引擎ENGINE:
某个表的存储引擎
数据库数据的存储地址:
数据库数据的存储地址
1.innerDB
innerDB存储方式
innerDB存储方式

day10笔记

需复习

1.Mysql中sql命令DML命令

复习

1.@’%’。
@'localhost’代表是本地连接
2.查询有关系的数据用内连接,查询没有关系的数据用外连接
3.接口作用:提供一种规范,降低耦合度

4.线程池的好处/为什么使用线程池?

①统一管理线程,包括线程的创建和销毁
②提高线程对象的复用性
③减少了线程创建和销毁的时间。程序一加载(编译时)就创建好线程,不用等待

5.关于DML命令

增删改返回值:insert、delete、update返回受影响条数即增删改的条数。
select查返回表数据

今日笔记

6.关于JDBC的CRUD操作中ResultSet接口问题

注意点:
①resultSet.next()指针开始时指向列名这一行,获取不了值,直接获取报错Before start of result set 。
②resultSet 是和resultSet.next()指针一块动的。

  private static void queryMore() throws SQLException {
        // 1. 加载驱动
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());

        // 2. 建立连接
        Connection connection = DriverManager
                .getConnection("jdbc:mysql://localhost:3306/0301db", "root", "root");

        // System.out.println(connection==null?"连接失败":"连接成功");
        // 3. 创建命令对象和SQL命令
        Statement statement = connection.createStatement();

        String sql = "select * from users";

        // 4. 执行sql命令
        ResultSet resultSet = statement.executeQuery(sql);

        // 5. 处理结果
        /*代码段一
        //此时没有调用 resultSet.next();next()默认指向表头(字段行)
        //此时resultSet的next()指针指向表头,获取不了表中数据报错Before start of result set 
           int uid = resultSet.getInt("uid");
        String username = resultSet.getString("username");
        float money = resultSet.getFloat("money");
        System.out.println("uid:"+uid+"\t username:"+username+"\t money:"+money);
        */
    
        /*代码段二
        boolean next = resultSet.next();
        System.out.println("next:"+next();
        //resultSet 是和resultSet.next()指针一块动的
        //因为有了   boolean next = resultSet.next();此时next()指向第一行数据
        //此时是获取的第一行数据的uid、sername、money
        int uid = resultSet.getInt("uid");
        String username = resultSet.getString("username");
        float money = resultSet.getFloat("money");
        System.out.println("uid:"+uid+"\t username:"+username+"\t money:"+money);*/

   
         //代码段三
         //resultSet 是和resultSet.next()指针一块动的
         //遍历表中的数据,并输出打印
        while(resultSet.next()){
            int uid = resultSet.getInt("uid");
            String username = resultSet.getString("username");
            float money = resultSet.getFloat("money");
            System.out.println("uid:"+uid+"\t username:"+username+"\t money:"+money);
        }

        // 6. 释放资源 {【()】}
        resultSet.close();
        statement.close();
        connection.close();
    }

7.关于连接池

1.c3p0和dbcp(不常用了)的区别:
dbcp没有自动回收空闲连接功能。c3p0有自动回收空闲连接功能。c3p0是阿帕奇开源的
2…c3p0和druid的区别:
druid连接池是阿里开源的,监控性好,在连接过程中可以检测信息。
c3p0比druid效率高。

3. c3p0

百度搜素c3p0
https://www.mchange.com/projects/c3p0/#quickstart 快速入门
https://www.mchange.com/projects/c3p0/#configuration 查看配置信息

8.关于单元测试

1.单元测试相当于mian方法,并且可以创建多个

day14笔记

1. Cookie有效路径和访问路径的区别:

有效路径和访问路径没有关系。有效路径为了保护数据安全。有效路径的作用比如区分百度和京东的cookie
在这里插入图片描述
以下如何访问Servlet

package web;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//urlPatterns访问路径
@WebServlet(name = "Servlet003" ,urlPatterns = "/servlet/cookie003")
public class Servlet003 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie = new Cookie("xx", "这是Servlet003中的cookies");
        //修改有效路径
        cookie.setPath("/javaWeb004");
    }
}

day16笔记

1.xml中配置默认首页,欢迎页的代码

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <welcome-file-list>
       <welcome-file>(servlet路径或者jsp文件名)welcome.html</welcome-file>
 </welcome-file-list>
</web-app>

day17笔记

1.IDEA中重新加载静态资源步骤:

Build->Rebuild Project->Build Artifacts->项目名->Rebuild
Build->Rebuild Project->Build Artifacts->项目名->Build
(项目下的out文件夹中是各个模块的静态资源。)

2.在IDEA zouye模块下的web->WEB-INF->index.jsp中引入web->jq->jquery-3.5.1.min.js文件

通过语句

<script src="${WEB-INF}/jq/jquery-3.5.1.min.js"></script>

或者

<script src="${pageContext.request.contextPath }/jq/jquery-3.5.1.min.js"></script>

其中 ${pageContext.request.contextPath } 表示获取项目名
引入
在这里插入图片描述
补充笔记:EL表达式

理解:
 获取共享域中的数据
格式:
 ${name }
原理
 以get方法的方式获取

day18笔记

1.三个共享域对象的创建销毁时机:

可以通过Listener测试共享域对象创建销毁时机。

  1. ServletContext是在项目运行时服务器就为每一个工程创建了一个ServletContext对象;服务器关闭时销毁。
  2. HttpSession是在访问.jsp、servlet时创建;session默认30分钟后销毁或者调用session.invalidate()方法手动销毁
在jsp文件中 
<body>
<%
session.invalidate();
%>
</body>

  1. ServletRequest对象请求时创建,请求结束销毁

day19笔记

1.通过ajax的GET方式用户名唯一校验时报状态码500错误

ajax的GET方式:
在这里插入图片描述
具体错误信息:

在这里插入图片描述
在这里插入图片描述
错误原因:
xmlHttp.send()报错,路径问题。
解决:
xmlHttp.open(“GET”,“login?name=”+inp.value,true)中的路径login有问题,改成了loginServlet

day21笔记

1.案例:左侧导航栏点击在右侧显示相应信息

在这里插入图片描述
功能实现用到了a标签和iframe标签。

<a href=“stu.html” target="right"></a>      

a标签的target=“frame名称”,其中href链接的是要显示在右侧的页面。

<iframe name="right"></iframe>

iframe标签作用是在一个页面中嵌套另一个页面
iframe的属性:frameborder="0"去除iframe的边框;width,height设置宽高

day24笔记

1.Method对象中invoke方法中第一个参数表示

invoke方法的第一个参数是一个对象。
此对象可以为:①方法持有者;②方法持有者的继承者。
例子:父类有方法

public class Father {
    public void say(String name){
        System.out.println("我是father叫"+name);
    }
}

子类有方法

public class Son extends Father {
    @Override
    public void say(String name){
        System.out.println("我是son我叫"+name);
    }
}

测试类

public class TestInvoke {
    public void test() throws Exception {
        Class clazz = Class.forName("CloneObject.Father");//反射父类
        Father father = new Father();//实例化父类
        Son son = new Son();//实例化子类
        Object object=clazz.newInstance();//获得一个新的父类对象
         
        Method method = clazz.getMethod("say",String.class);
        method.invoke(father,"爸爸");
        method.invoke(son,"孩子");
        method.invoke(object,"新的父亲");
    }
    public static void main(String[] args) throws Exception {
        new TestInvoke().test();
    }
}

结果

我是father叫爸爸
我是son我叫孩子
我是father叫新的父亲
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值