学习内容:

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. (一)微信小程序环境搭建

    1 注册 首先 打开(https://mp.weixin.qq.com/)微信公众平台官网 选着 小程序 之后 在新的页面选择 选着前往注册 按照提示注册 注意:个人版和企业版有一定的区别 2 开发者 ...

  2. Java按位运算符之按位取反

    一 数据储存形式 二进制在内存中以补码的形式存在. 补码首位是符号位,0表示该数是正数,1表示该数是负数.   例如:   数值 带符号的二进制原码 (首位表示符号位) 补码 内存中的形式 (*表示无 ...

  3. 杂记 -- 关于ref、kepp-alive、nextTick、fetch

    1.ref:定义一个普通的dom节点或一个vue的组件实例对象 定义方法: <div class="page1"> <button @click="li ...

  4. 161-PHP 文本替换函数str_replace(二)

    <?php $str='Hello world!'; //定义源字符串 $search='o'; //定义将被替换的字符 $replace='O'; //定义替换的字符串 $res=str_re ...

  5. 移动端触屏click点击事件延迟问题,以及tap的解决方案

    在移动端 触屏click事件虽然也会响应,但是总感觉是有延迟,一直听说click事件在手机上有200~300毫秒的延迟问题,亲自测了一下,在pc端模拟手机的话是测不出来的,但是用手机测试时发现延迟非常 ...

  6. 如何让手游更省带宽,耗电量更少?TBR渲染架构解析!

    如何让手游更省带宽,耗电量更少?渲染或是其中一个可突破的点.本文中,腾讯游戏学院专家Hailong将从为大家解析TBR渲染架构的特点. 什么是TBR? 全称是Tile Based Rendering, ...

  7. Codeforces 460C 二分结果+线段树维护

    发现最近碰到好多次二分结果的题目,上次多校也是,被我很机智的快速过了,这个思想确实非常不错.在正面求比较难处理的时候,二分结果再判断是否有效往往柳暗花明. 这个题目给定n个数字的序列,可以操作m次,每 ...

  8. Android Studio真机调试安装以后打开闪退,打包APK再安装正常打开没有问题

    一直真机调试都没有问题, 但是有一次开始,真机调试正常安装没有问题,但是一打开就崩溃了一眨眼间就像被光闪了一下的那种. oppoR11调试会这样,但是用魅族试过没有问题, 报错出现过Android S ...

  9. JVM学习与问题总结——java内存区域与内存溢出异常

    java虚拟机将内存分为哪些区域? 根据Java SE7版本的Java虚拟机规范,虚拟机管理的内存包括5个运行时数据区域: 程序计数器 虚拟机栈 本地方法栈 方法区 堆 运行时数据区各部分的作用? 程 ...

  10. Django配置日志

    在settings里配置 # 日志配置 LOGGING = { # 是python的版本 'version': 1, # 是否禁用 'disable_existing_loggers': False, ...