JavaWeb自学笔记02

本文介绍了Java中的注解,包括其分类、元注解和使用方法,强调了注解在程序解析中的作用。同时,文章还探讨了数据库的基础知识,如数据库的概念、常见软件以及SQL的注释和数据类型。
摘要由CSDN通过智能技术生成

注解

  • 注释:用文字描述程序,给人看的

  • 注解(JDK1.5之后的新特性):说明程序的,给计算机看的
    使用分类:

      1、编写文档:通过代码里标识的注解生成文档(生成doc文档)(预定义注解)
      2、编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查(@override)(预定义注解)
      3、代码分析:通过代码里表示的注解对代码进行分析(使用反射)
    
  • JDK中预定义的一些注解

      1、@Override:检测被该注解标注的方法是否继承自父类(接口)
      2、@Deprecated:该注解标注的内容已过时(但是也可以使用,使用的时候该方法会有横线,提示该方法已经过时有更新的方法可以使用)
      3、@SuppressWarnings:压制警告(黄色的警告消失)
      一般传入参数all,@SuppressWarnings(“all”)
    
  • 自定义注解:

自定义注解格式:

元注解
public @interface 注解名称(){...}

2、注解的本质:

注解本质上是一个接口,该接口默认继承Annotation接口(可以通过反编译的方法查看)

3、注解的属性:接口中的抽象方法

注解是一个接口,接口中可以定义什么方法,注解中就可以定义什么方法。
注意:
(1)属性的返回值类型只能是以下几种,其他都不行
* 基本数据类型
* String
* 枚举
* 注解
* 以上类型的数组
(2)* 定义了属性,在使用时需要给属性赋值,如果不想给属性赋值,在定义时可以在属性后加default(...)设置默认值
  * 如果只有一个属性需要赋值,并且属性的名称是value,那么在使用注解给属性赋值时可以省略value直接写值
(3)数组赋值时使用{}包裹,如果数组中只有一个值,那么{}可以省略

元注解

元注解是描述注解的注解
常用的元注解:

1、@Target:描述注解能够作用的位置
2、@Retention:描述注解被保留的阶段
3、@Document:描述注解是否被抽取到API文档中
4、@Inherited:描述注解是否被子类继承

在程序中解析(使用注解)

解析注解:

获取注解中定义的属性值

可以使用注解代替之前所做框架的配置文件
要求:创建一个“框架”,使用该框架可以创建任何类的对象,使用任何类的方法
分析:因为解析注解可以获取注解中的属性值,可以使用注解来代替之前的配置文件
步骤:

1、创建一个注解,在该注解中定义类名和方法名两个属性
2、在框架类中调用这个注解
3、解析注解
(1)获取该类的字节码文件对象
(2)获取上面使用的注解对象
注意:注解作为一个接口但是能直接创建对象调用方法的原因是JVM偷偷在生成了该注解接口的子类,并且实现了注解的属性

在这里插入图片描述

(3)调用注解对象中的方法,获取返回值,注解中传入的参数不同,获取的返回值不同
在这里插入图片描述

实例——简单的测试框架(使用框架)

要求:使用注解来完成一个Calculator类(实现写好的类)的测试框架,当主方法被执行之后会自动执行要被检测的方法(加了自定义注解@check就是要被检测的方法)判断方法是否有异常,并记录到文件中。
步骤:

1、创建一个框架测试类
2、在类中创建一个字符缓冲输入流对象和一个文档,用于存放异常信息
3、创建要测试的类的对象 (本例是Calculator类)(创建该对象,可以使用对象名.getClass()来获取类对象,后面使用方法的时候也要传入该类对象作为参数)
4、获取字节码文件
5、获取类中的所有方法
6、判断方法上是否加了Check注解,如果有就执行
7、捕获异常,并且把异常写入刚刚创建的文档中

代码实现(测试框架中主方法的代码):

//       number  ---> 出异常的次数
        int number = 0;
//        创建一个缓冲输入流,把异常信息写入到一个指定文件中(缓冲输入流更高效)
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("bug.txt"));
//        创建要测试类的对象
        Calculator calculator = new Calculator();
//        获取该类的字节码文件,getClass在内存中获取
        Class calClass = calculator.getClass();
//        获取该类的所有方法
        Method[] declaredMethods = calClass.getDeclaredMethods();

//        遍历所有方法,判断方法上是否加了Check注解,如果有就执行
        for (Method declaredMethod : declaredMethods) {
//            判断遍历的方法上有没有Check注解
            if (declaredMethod.isAnnotationPresent(Check.class)) {
                try {
//                    执行该方法
                    declaredMethod.invoke(calculator);
                } catch (Exception e) {
//                    捕获异常,把异常信息写入到文档中
                    number++;//异常出现的次数
                    bufferedWriter.write(declaredMethod.getName() + "出异常啦!");
                    bufferedWriter.newLine();
//         写入出现的异常的简短名称,而不是有包名的全名称
//         其中getCause()是异常出现的原因,getClass()是在内存中获取类对象
                    bufferedWriter.write("出现异常的名称是:"+
                            e.getCause().getClass().getSimpleName());
                    bufferedWriter.newLine();
//                    出现异常的原因是:
                    bufferedWriter.write("异常出现的原因是:"+e.getCause().getMessage());
                    bufferedWriter.newLine();
//                    一个异常信息结束,用分割线分割
                    bufferedWriter.write("--------------------------------------");
                    bufferedWriter.newLine();

                }
            }
        }
        bufferedWriter.write("本次测试出现了" + number + "次异常");
//     flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
//    注意:flush()和close()必须要有一个,否则就无法写入文档
        bufferedWriter.flush();
        bufferedWriter.close();

结果展示:
在这里插入图片描述
注意:
我们一般是使用注解,但是如果要自定注解的话,不要忘记加注解的注解(写这个程序时,因为忘记加注解的注解,导致框架类代码中判断方法上是否有注解时无法判断)
小结:
1、以后大多数时候,我们会使用注解,而不是自定义注解
2、注解是给编译器和解析程序用的
3、注解不是程序的一部分,注解就像是一个标签

数据库的基本概念

  1. 什么是数据库(DadaBase 简称DB)

    用于存储和管理数据的仓库
    
  2. 数据库的特点:

    (1)用于持久化存储数据,实际上数据库就是一个文件系统
    (2)方便存储和管理数据
    (3)使用统一的方式操作数据库——SQL
    
  3. 常见的数据库软件(数据库软件是对数据库概念的具体实现,就像蛋糕的不同品牌)

    (1)Oracle:收费的大型数据库(很贵)
    (2)MySQL:本来在sun公司下是不收费的,被Oracle公司收购之后就收费了(MySQL6.x之后就收费了)
    (3)SQLServer
    (4)...
    

数据库的安装卸载与配置

  1. 安装:此处省略…

  2. 卸载:

    (1)去MySQL的安装目录找到my.ini文件,复制其中的datadir=”...“
    (2)卸载MySQL
    (3)粘贴刚刚复制的目录找到MySQL文件夹,将它删除,如果不删除再次安装就不会成功
    
  3. 配置

(1)MySQL的启动与关闭:

①手动
②在命令行敲入“service.msc”
③以管理员身份打开命令行
	(输入cmd显示cmd之后不要直接打开命令行,右键以管理员方式运行,如果不以管理员方式运行就没有权限),敲入”net stop mysql”,MySQL就会成功停止。使用”net start mysql”就会成功启动MySQL

(2)MySQL登录与退出

①登录本地MySQL:“mysql -u登录名 -p密码”(mysql -uroot -p111111)
②远程连接MySQL:”mysql -h要登录的IP地址 -u登录名 -p密码”
③“mysql --host=登录IP --user=登录名 --password=连接目标的密码
④退出:exit  quit

(3)MySQL的目录结构

①安装目录:bin ---> 存放指令文件
data ---> 存放日志文件等数据
include ---> C语言的头信息
lib ---> 存放jar包
share ---> 存放MySQL的错误信息
my.ini ---> mysql的配置文件
②数据目录:就是配置文件my.ini中的datadir后面的目录
Mysql服务器 = 硬件 + 软件(MySQL软件)
Mysql服务器其实就是安装了Mysql软件的主机
数据库:主机上的文件夹(一个数据库对应一个文件夹)
表:数据库文件夹中的文件
数据:文件中的数据

(该图片源自学习视频的软件)
在这里插入图片描述

SQL

  1. 什么是SQL

    SQL(Structured Query Language 结构化查询语言):就是定义了操作所有关系型数据库的规则。
    Oracle和MySQL、DB2都是关系型数据库,也就是说学会了SQL语言,就可以操作所有的关系型数据库软件
    

注意:每一种数据库操作的方式都有一些不一样的地方——”方言“,SQL是中国的普通话,大家都能听懂普通话,但是每个地区都会有方言

  1. SQL的三种注释

    (1)-- 注释内容(--后面一定要加空格!)(单行注释)
    (2)#注释内容(可以不加空格)(单行注释)
    (3)/*注释内容*/(多行注释)
    
  2. SQL分类

    (1)DDL(Definition):数据定义
    (2)DML(Manipulation):数据操作
    (3)DQL(Query):数据查询
    (4)DCL(Control):数据控制
    

在这里插入图片描述

SQL中的数据类型

几种常见的数据类型:

  1. int:整数类型 —— age int

  2. double:小数类型 —— score double(5 , 2) 一共有五位,小数点后保留两位

  3. date:日期,只包含年月日——yyyy-MM-dd

  4. dateTime:日期,年月日 时分秒 ——yyyy-MM-dd HH:mm:ss

  5. timestamp:日期,年月日 时分秒 ——yyyy-MM-dd HH:mm:ss

    注意:如果将来不给这个字段赋值,或赋值为null,则默认使用系统时间来自动赋值
    
  6. varchar:字符串 —— name varchar(20):姓名最大20个字符(张三 两个字符 zhangsan 八个字符)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值