1、创建web和java EE方法:
1 .首先创建一个项目
2.创建好项目之后, 在目录位置右击鼠标,找到添加框架支持
3.里面有web和java EE
2、数据库连接池:
1.编写程序的准备工作,连接数据库:
// 管理数据库连接的一个容器(Connection)
*它允许应用程序重复使用一个现有的数据库连接;
*避免数据库连接遗漏
//1、导入jar包
//2、定义配置文件
// 3、加载配置文件
Properties pro = new Properties();
pro.load(new FileInputStream("jdbc-demo/src/pro.properties"));
// 4、获取连接池对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
// 5、获取数据库连接
Connection conn = ds.getConnection();
2.pro配置文件:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///要连接的数据库名称?useSSL=false&useServerPrepstmts=true
username=root
password=密码
#初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
3.注意、注入问题:
sql注入就是一种通过操作输入来修改后台操作语句,把sql命令插入到web表单递交或者输入域名或者页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,造成数据库信息泄露、损坏等后果。
我们都需要对用户输入的数据进行过滤处理。
-- 注入 以任意用户名和特定密码登录系统
// String name = "张三";
// String pwd = "1234";
String name = "dfghjk";(随意输入)
String pwd = " ' or '1' = '1 ";
String sql="select * from user where username='"+name+"' && password = '"+pwd+"'";
System.out.println(sql);
解决注入问题:
1、普通用户与系统管理员用户的权限要有严格的区分。
在权限设计中,对于终端用户,即应用软件的使用者,不提供数据库对象的建立、删除等权限。
2、强制使用参数化语句。
用户的输入的内容必须进行过滤,或者使用参数化的语句来传递用户输入的变量,而不是直接嵌入到SQL语句。
4.connection事物管理:
try {
//开启事务 在执行语句前
conn.setAutoCommit(false);
int count = statement.executeUpdate(s1); //执行语句
System.out.println(count);
int i=3/0;
count1 = statement.executeUpdate(s2);
System.out.println(count1);
//提交事务 当程序执行成功结束时
conn.commit();
} catch (Exception e) {
//回滚事务 当程序出现错误
conn.rollback();
throw new RuntimeException(e);
}
//一定要注意释放资源
statement.close();
conn.close();