J2EE开发学习笔记(4)

12. Servlet中操作数据库

       servlet中操作数据库和java文件中操作数据库完全一致。

       特别注意SQL注入漏洞

      

       加入数据库后,框架图如下图所示:

      

      

       Loginhandle中加入数据库操作代码:

       首先加入SQL包:

       import java.sql.*;

      

       连接数据库:

       // 连接数据库

       Class.forName("com.mysql.jdbc.Driver");                

       // 获得连接

       ct = DriverManager.getConnection("jdbc:mysql://localhost/spdb", "root", "root");

       // 创建Statement

       sm = ct.createStatement();

      

       rs = sm.executeQuery("select * from users where username= '" + u + "' and passwd='" + p + "'");

       // 判断结果集中是否有数据

       if(rs.next())

       {

              // 进行数据操作

}

      

       try-catch语句的finally部分要将数据库的资源释放掉。如下代码:

       finally

       {

              try

              {

                     if(rs != null)

                     {

                            rs.close();                                  

                     }

                     if(rs != null)

                     {

                            sm.close();                                 

                     }

                     if(rs != null)

                     {

                            ct.close();

                     }                                                     

              }

              catch(Exception ex)                    

              {

                     ex.printStackTrace();

              }

       }

 

 

       注:如果使用SQL Server 2005,则连接语句可以使用如下的连接语句:

       Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");                  ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdb", "sally", "sally");

      

       在连接SQL Server 2000时,需要加入三个jar包:

       msbase.jarmssqlserver.jarmsutil.jar

       连接MySQL时,则是用对应版本的MySQLjar包即可。

       连接SQL Server 2005时,则需要将其对应的sqljdbc4.jar包即可。

      

       Jar包的放置目录有两个地方:

       TOMCAT_HOME/commons/lib目录下,或者是自己的webapps目录下的WEB-INF目录下新建lib目录,将3jar包放置到该目录下。

       两者的区别是:放到commons/lib目录下,所有的webapps都可以使用这三个jar[相当于公用的lib],而第二种则只能供自己的webapps使用。

      

       SQL注入的防止:

       所谓SQL注入,这个是数据库本身存在的一个漏洞,例如如下的SQL语句,执行后可以将数据库中所有的记录返回:

       select * from users where username='admin' and passwd = 'admin' or 1 = '1';

       没有对SQL注入漏洞采取措施的网站,就会存在问题,如果在登录界面中,用户名随意输入,密码输入'admin' or 1 = '1',那么就可以登录到网站中,这个是一个错误,需要防止。

       措施:

       在用户验证时,使用用户名查询所有的记录,然后将所有记录的密码和用户提交密码进行比较,如果匹配则说明登录成功,否则登录失败。这样就可以放置SQL注入的发生。

 

你可能感兴趣的:(sql,sql,数据库,server,servlet,jar,sqlserver)