Java学习十三
学习内容:
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学习十三的更多相关文章
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十三周
java学习第十三周 本周,进行了对前六章知识点的小测试,在测试中我也发现了许多自己学习上存在的隐患,对一些知识点理解的太过粗略,没有很好的去记忆那些重要的小细节,把注意力过多的放在了 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 20145330第七周《Java学习笔记》
20145330第七周<Java学习笔记> 第十三章 时间与日期 认识时间与日期 时间的度量 GMT(格林威治标准时间):现在不是标准时间 世界时(UT):1972年UTC出来之前,UT等 ...
- JAVA学习之Ecplise IDE 使用技巧(2)第二章:键盘小快手,代码辅助
上一篇:JAVA学习之Ecplise IDE 使用技巧(1)第一章:我的地盘我做主,工作空间 第二章:键盘小快手,代码辅助 内容包括: 第一:显示行号 如何设置行号:Ecplice菜单Windows& ...
- 2016最新Java学习计划
一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码 第一阶段 Java基础 入门 学习周期: 35天 ...
- “全栈2019”Java第九十三章:内部类应用场景(迭代器设计模式)
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十五周
java学习第十五周 Java的GUI界面设计,框架以及主要部件填充,归置,布局管理,在第十一章和第十二章进行了系统的学习,在这两章的知识奠基下,可以简单的构造一个GUI用户界面,在两周的学习后,可以 ...
- “全栈2019”Java第十三章:基本数据类型
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十三章:流程控制语句中决策语句switch上篇
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
随机推荐
- Qt编写的项目作品2-控件属性设计器(组态)
一.功能特点 自动加载插件文件中的所有控件生成列表,默认自带的控件超过120个. 拖曳到画布自动生成对应的控件,所见即所得. 右侧中文属性栏,改变对应的属性立即应用到对应选中控件,直观简洁,非常适合小 ...
- SQLmap自动注入工具命令(10.28 10.29 第二十八 二十九天)
SQL注入工具:明小子 啊D 萝卜头 sqlmap 等等 SQLMAP:开源的自动化诸如利用工具,支持的数据库有12中,在/plugins中可以看到支持的数据库种类,在所有注入利用工具中他 ...
- 每天一点点之 uni-app 框架开发 - 页面滚动到指定位置
项目需求:在页面中,不管位于何处,点击评论按钮页面滚动到对应到位置 实现思路如下: uni.createSelectorQuery().select(".comment").bou ...
- 从PC厂商狠抓粉丝经济看,春天将至?
10月中旬,市场研究机构IDC发布的全球三季度PC出货量报告显示,第三季度全球个人电脑出货量总计6740万台,比去年同期下降0.9%.似乎这一数据的发布,依旧在证明着PC市场的颓势.但在这样的大背景下 ...
- Python3中的bytes和str类型
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...
- 配置anaconda 的仓库镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config -- ...
- docker image ubuntu12.04 安装软件源
docker 容器为ubuntu12.04 ,无法添加软件源. apt-get install python-software-properties software-properties-commo ...
- spark-submit脚本分析
执行任务 ./spark-submit \ --class cn.com.dtmobile.spark.DebugTest \ --master yarn \ --deploy-mode client ...
- Elasticsearch 更新文档
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- POJ 1068:Parencodings
Parencodings Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22849 Accepted: 13394 De ...