Java学习笔记:防注入,预处理的实现步骤,字节流,获取,读取配置文件【诗书画唱】

SQL_PreparedStatement:
什么是防注入?
直接输入字符串,拼接后,用户再输入一个or 1=1的时候,那么这个条件是肯定成立的,所以用户输入不输入用户名都没有多大的关系了,会把数据都打印出来等等。为了解决这个问题,就要使用preparedstatement解决,它默认将sql语句编译成函数,每次只要传入相应的参数就可以了,就可以防止用户sql注入。
预处理:我们每次对于数据库操作数据库都要将sql语句编译成函数,
如果我们使用预处理的时候,数据库就默认生成了一个函数,以后再
传入相同的内容的时候,只需要调用这个函数就可以了,这个就可以提升sql执行的效率
预处理的实现步骤:
//1.导入数据包
//2.加载数据包
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//3.创建连接数据库的对象(Connection)
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=fuxi","qqq","11111");
//4.创建执行sql语句的对象,是用statement,防注入,预处理是用preparedStatement
String sql="select * from denglu where uid=? and uname=?";//1
PreparedStatement ps=con.prepareStatement(sql);//编译sql语句
ps.setObject(1, 1);
ps.setObject(2, "qwe");
//5.写并且执行sql语句,ResultSet的对象
ResultSet res=ps.executeQuery();//使用这个方法去执行sql语句
//6.遍历这个对象
while(res.next()){
System.out.println(res.getObject(1)+" "+res.getObject(2));
}
为什么要读取配置文件:
//将一些常用的配置信息保存在配置文件里,
//java类一旦编译,虽然我们不能直接修改编译后的文件,但是我们
//可以修改配置文件,写的代码对于配置都是去配置文件里读的,万一
//数据库用户名或者密码修改之后,我直接修改配置文件即可。
//读取配置文件:
//1.建立一个文件,src目录下,文件名称可以随便,但是后缀名必须为.properties
//2..properties中添加几个内容
//3.在main中添加一下代码
将这个配置文件转化为字节流
//使用类加载器转化文件
InputStream is=qqq.class.getResourceAsStream ("../zz.properties");
Properties p=new Properties();
p.load(is);
System.out.println(p);
//获取指定的单个内容
System.out.println(p.getProperty("qq"));
配置文件就是XXX.properties格式的文件

之后点“New”“Other”“File”,之后就命名XXX.properties格式。
每次写好Java文件,点击执行的时候,都会自动编译生成和Java文件相同名字的class文件,之后发给别的公司class文件和配置文件,别的公司把这个文件从桌面等处拖到Java等的编译器中时,可以运行,并且用配置文件更改处理class中的数据库名,用户名,用户密码等。但看到的都是”0101“之类的二进制,但可以通过“反编译”生成源码等。