学习内容:

1.Java反射

2.jdbc入门


1.反射的概述

Java的反射机制:动态获取信息以及动态调用对象方法

Java的反射机制的作用:用来编写一些通用性较高的代码或者框架的时候使用

原理:java文件编译成class文件,通过jvm将class对象加载到内存中,其中构造方法加载为构造对象,属性加载为Field对象,方法加载为Method对象

2.Field类:属性

Filed对象的获得

得到所有的成员变量

Field[] fields = c.getFields();//取得所有public属性(包括父类继承)

Field[] fields = c.getDeclareFields();//取得所有public属性(包括父类继承)

得到指定的成员变量

Field name = c.getFields("name ");//取得所有public属性(包括父类继承)

Field name = c.getDeclareFields("name ");//取得所有public属性(包括父类继承)

设置Field变量是否可以访问

field.setAccessible(boolean)

Field变量值的读取、设置

field.get(obj)
field.set(obj,value)

案例demo

public void demo1() throws Exception{
//获得Class
Class class1 = Class.forname("com.imooc.test.Person");
//获得属性
Field field1 = class1.getField("name");
//操作属性
Person p = (Person)class1.newInstance();
field.set(p,"李四") Object obj = field.get(p);
system.out.println(obj);
}

method类方法类似

2.jdbc API

一、加载驱动

DriveManager会导致驱动注册两次,实际开发中注册驱动使用

Class.forName("com.mysql.jdbc.Driver")

二、获得连接

Connection.getConnection(url,username,password)

Connection连接对象

主要作用:

一、创建执行SQL语句的对象

Statement createStatement()                                 :执行SQL语句,有SQL注入的漏洞存在

PreparedStatement prepareStatement(String sql):预编译SQL语句,解决SQL注入的漏洞

CallableStatement prepareCall(String sql)            :执行SQL中存储过程

二、进行事务的管理

setAutoCommit(boolean autoCommit)                   :设置事务是否自动提交

commit()                                                                  :事务提交

rollback()                                                                 :事务回滚

Statement :执行SQL

主要作用:

一、执行SQL语句

boolean execute(String sql)                                      :执行SQL

ResultSet executeQuery(String sql)                          :执行SQL中的select语句

int executeUpdate(String sql)                                    :执行SQL中的insert/update/delete语句

释放资源

// 释放资源
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;//垃圾回收机制更早回收对象
}

3.JDBC的SQL注入漏洞

举例:在用户名中输入带SQL语句关键字中的or的话,由于or前面用户名是正确的,此时无论密码是什么都是错误的

避免SQL注入漏洞的方法

用PreparedStatement创造对象

4. 数据库连接池

应用程序直接获取连接,用户每次请求都需要向数据库获得连接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。极易造成数据库服务器内存溢出。

c3p0为常用连接池

手动设置连接池

//创建连接池
ComboPooledDataSource dataSource = new ComboPooledDataSource ();
//设置连接池的参数
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql:///jdbctest");

或使用配置文件的方式

Java学习十三的更多相关文章

  1. 201671010140. 2016-2017-2 《Java程序设计》java学习第十三周

    java学习第十三周         本周,进行了对前六章知识点的小测试,在测试中我也发现了许多自己学习上存在的隐患,对一些知识点理解的太过粗略,没有很好的去记忆那些重要的小细节,把注意力过多的放在了 ...

  2. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  3. 20145330第七周《Java学习笔记》

    20145330第七周<Java学习笔记> 第十三章 时间与日期 认识时间与日期 时间的度量 GMT(格林威治标准时间):现在不是标准时间 世界时(UT):1972年UTC出来之前,UT等 ...

  4. JAVA学习之Ecplise IDE 使用技巧(2)第二章:键盘小快手,代码辅助

    上一篇:JAVA学习之Ecplise IDE 使用技巧(1)第一章:我的地盘我做主,工作空间 第二章:键盘小快手,代码辅助 内容包括: 第一:显示行号 如何设置行号:Ecplice菜单Windows& ...

  5. 2016最新Java学习计划

    一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码        第一阶段 Java基础 入门 学习周期: 35天 ...

  6. “全栈2019”Java第九十三章:内部类应用场景(迭代器设计模式)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. 201671010140. 2016-2017-2 《Java程序设计》java学习第十五周

    java学习第十五周 Java的GUI界面设计,框架以及主要部件填充,归置,布局管理,在第十一章和第十二章进行了系统的学习,在这两章的知识奠基下,可以简单的构造一个GUI用户界面,在两周的学习后,可以 ...

  8. “全栈2019”Java第十三章:基本数据类型

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. “全栈2019”Java第二十三章:流程控制语句中决策语句switch上篇

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. pom.xml报unknown error

    1. 从https://start.spring.io/的spring initializr生成demo,使用默认的2.1.6.release(2019年7月10日) 2. 在eclipse加载后,p ...

  2. 前端解析返回的对象时json显示$ref问题的解决

    在mapper中写的语句,结果集中association,采用的一个对象,整个list列表中每个元素有一个对象元素,如果第二个元素中有一个与第一个元素中对象同名的,就会去引用上一个元素的地址,在jso ...

  3. 《动手学深度学习》系列笔记—— 1.2 Softmax回归与分类模型

    目录 softmax的基本概念 交叉熵损失函数 模型训练和预测 获取Fashion-MNIST训练集和读取数据 get dataset softmax从零开始的实现 获取训练集数据和测试集数据 模型参 ...

  4. 019-PHP创建目录函数

    <?php if (mkdir("myDir1", 0777)) //创建目录的函数 { print("目录创建成功"); //目录建立成功 } else ...

  5. Java中调试与测试常用方法

    一.断言 1.概述 根据之前的条件来对后续的结果进行预判. 2.在Java中,断言默认是不开启的,需要手动进行开启,只需添加参数-ea(enable assert的意思) 开启步骤: 选中项目路径,鼠 ...

  6. 8 ~ express ~ 基于数据库的验证

    1,首先 在router/api.js 中引入数据库定义好的模型  /models/User.js var User = require('../models/User') //User返回的是一个构 ...

  7. zabbix 日志

    /var/log/zabbix/ tail -f /var/log/zabbix/zabbix_server.log tail -f /var/log/zabbix/zabbix_agentd.log

  8. Canvas基本定义

    Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.今天我们主要要了解的是2D相关的 大部分2D使用的api都在android.g ...

  9. JS高级学习笔记(9) 之 转:前端路由跳转基本原理

    原文链接: 前端路由跳转基本原理 前述 前端三大框架Angular.React和Vue都推行单页面应用SPA开发模式,这是因为在路由切换时,替换DOM Tree中发生修改的DOM部分,来减少原来因为多 ...

  10. Spring学习(三)——@PropertySource,@ImportResource,@Bean注解

    @PropertySource注解是将配置文件中 的值赋值给POJO 项目结构如下 一.创建一个Person.Java文件: import org.springframework.boot.conte ...