需要注意的几点:
1. 连接数据库的步骤
Class.forName("oracle.jdbc.driver.OracleDriver"); //加载驱动
ct=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","qj555","qj555"); //创建连接
sm=ct.createStatement();
rs=sm.executeQuery("select usertel from usertest where username='"+uname+"'");
2. 在oracle\product\10.2.0\db_1\jdbc\lib目录下,找到oracle数据库的jar包,复制到tomcat的lib目录或项目的WEB-INF/lib目录
3. sql语句的漏洞,select * from tb where uname='' and upwd='' or 1='1',使用查询密码来验证的方式,防止sql注入漏洞,如select upwd from tb where uname=''。
4.使用完数据库相关对象后,注意关闭。
5.使用设置session的方式保存用户名和密码,使同一用户在不同页面能访问相同的信息。
7. 查询唯一记录时,最好使用select top 1 * from tb where ...,的方式,找到符合条件的记录,就马上返回,不会继续向后查询,但是oracle中不支持top语法,可以使用
select rownum,t.* from usertest t where t.username='test3' and rownum<2来代替
6.连接sql server的步骤相同,但是驱动和url肯定是不同的,也需要jar包的支持,分别为msbase.jar,mssqlserver.jar,msutil.jar
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://Localhost:1433;DatabaseName=student";
String user="sa";
String password="111";
con=DriverManager.getConnection(“jdbc:microsoft:sqlserver://Localhost:1433;DatabaseName=usertest”,"sa","qj555");
String sql="select * from SCORE";
PreparedStatement ps=con.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
代码如下
//验证登录
package com.gtest;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class LoginCl extends HttpServlet{
//处理get请求
//req 用于获得客户端的信息
//res 用于向客户端(浏览器)返回信息
public void doGet(HttpServletRequest req, HttpServletResponse res){
this.doPost(req, res);
}
//处理get请求
//req 用于获得客户端的信息
//res 用于向客户端(浏览器)返回信息
public void doPost(HttpServletRequest req, HttpServletResponse res){
Connection ct=null;
Statement sm=null;
ResultSet rs=null;
try {
//接收用户名和密码
String uname=req.getParameter("username");
String upwd=req.getParameter("passwd");
//使用数据库方式验证
Class.forName("oracle.jdbc.driver.OracleDriver");
ct=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","qj555","qj555");
sm=ct.createStatement();
rs=sm.executeQuery("select usertel from usertest where username='"+uname+"'");
//PrintWriter pw=res.getWriter();
if (rs.next())
{
String spwd=rs.getString(1).trim();
if (spwd.equals(upwd)){
//验证通过
HttpSession hs = req.getSession(true);
//修改session的存在时间,单位为秒
hs.setMaxInactiveInterval(30);
hs.setAttribute("pass", "ok");
//保存用户名和密码
hs.setAttribute("uname",uname);
hs.setAttribute("upwd",upwd);
res.sendRedirect("welcom?uname="+uname+"&upwd="+upwd);//写你要跳转的servlet的url
}
else{
res.sendRedirect("login");
//pw.println(spwd);
}
}
else{
res.sendRedirect("login");
}
}
catch (Exception ex) {
ex.printStackTrace();
}
finally{
try {
if(rs!=null){
rs.close();
}
if(sm!=null){
sm.close();
}
if(ct!=null){
ct.close();
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
}