发表于: 2017-11-07 20:53:06

1 638


今天完成的内容:

(1)总结创建传统JDBC流程,以任务代码为例:

1.加载JDBC驱动程序:

在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String  className)实现。成功加载后,会将Driver类的实例注册到DriverManager类中。

try{
Class.forName("com.mysql.jdbc.Driver");
   conn = DriverManager.getConnection(url);
} catch(ClassNotFoundException e){
//TODO Auto-generated catch block
   e.printStackTrace();
} catch(SQLException e){
//TODO Auto-generated catch block
   e.printStackTrace();
}

ps:不同数据库厂商的驱动类名称不同。MySQL5:com.mysql.jdbc.Driver

2、提供JDBC连接的URL   

连接URL定义了连接数据库时的协议、子协议、数据源标识。   

书写形式:协议:子协议:数据源标识   

协议:在JDBC中总是以jdbc开始。子协议:是桥连接的驱动程序或是数据库管理系统名称数据源标识:标记找到数据库来源的地址与连接端口。   

private static final String url = "jdbc:mysql://localhost:3306/test1?" +
"user=root&password=0000&useUnicode=true&characterEncoding=UTF8";

3、创建数据库的连接   

要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。   

使用DriverManager的getConnectin(String url , String username ,  String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。   

conn = DriverManager.getConnection(url);

 4、创建一个Statement   

  要执行SQL语句,必须获得java.sql.Statement实例,执行静态SQL语句。通常通过Statement实例实现。执行动态SQL语句。通常通过PreparedStatement实例实现。

PreparedStatement pstmt = null;
public boolean insert(Student entity){
//声明返回值变量
   boolean flag = false;
   //获取连接对象
   conn = JdbcUtil.getConn();
   //sql语句
   String sql = "INSERT INTO task1(name,qq,kind,time,school,number,link,wish,brother,create_at)" +
" values(?,?,?,?,?,?,?,?,?,?)";
   try{
//由sql语句创建预处理对象
       pstmt = conn.prepareStatement(sql);

 5、执行SQL语句   

Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate 和execute   

1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。   

2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或 DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等    3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。   

rs = pstmt.executeQuery();
int i = pstmt.executeUpdate();

6、处理结果   

两种情况:1、执行更新返回的是本次操作影响到的记录数。   2、执行查询返回的结果是一个ResultSet对象。   

ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些 行中数据的访问。   

使用结果集(ResultSet)对象的访问方法获取数据,如:

entity.setName(rs.getString("name"));

7、关闭JDBC对象    

操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:   

 1、关闭记录集   2、关闭声明   3、关闭连接对象    

public static void release(ResultSet rs, PreparedStatement pstmt){
if(rs!=null){
try{
rs.close();
       } catch(SQLException e){
//TODO Auto-generated catch block
           e.printStackTrace();
       }
}
if(pstmt!=null){
try{
pstmt.close();
       } catch(SQLException e){
//TODO Auto-generated catch block
           e.printStackTrace();
       }
}
}

(2)了解token,cookie。

Token

token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库。

Cookie

cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。

基于 Token 的身份验证:

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

1、客户端使用用户名跟密码请求登录。

2、服务端收到请求,去验证用户名与密码。

3、验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端。

4、客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里。

5、客户端每次向服务端请求资源的时候需要带着服务端签发的 Token。

6、服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据。

明天计划:继续总结为主,做任务五为辅。

遇到的问题:JDBC处理结果部分详情不太清楚。

收获:以上

禅道:http://task.ptteng.com/zentao/task-view-10685.html


返回列表 返回列表
评论

    分享到