需求:上一day所编写的servlet网页程序已经实现了用户名登录以及cookie技术,
那么,怎样让servlet网页程序使用数据库中的表作为登录依据呢?
今天实现的便是连接数据库这一功能
首先,我们先做好准备,安装驱动
参考教程: http://wenku.baidu.com/link?url=w3Aks8OPj6XfbQpfra8o-35fCWULbYVABPCcwdJ708z8XO_Sqb_mVAG1PX2H_uve9w-OOS5n9AqaPnYmebV-MpL8TNyaSKeXO7jBN6r_HhK
此项最为费时间,请耐心一步一步完成
其中如果用的java编辑器不是eclipse,只需按照你所用的编辑器的方式导入jdbc4.jar
驱动顺利安装完成之后
让我们给logincl做些改变
//登录控制文件的servlet
package test1;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class LoginCl extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
this.doPost(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
Connection ct = null;
ResultSet rs = null;
Statement sm = null;
try{
//服务器接收login页面发来的用户名和密码,要用到req。
String u = req.getParameter("username");//此处填写组件名
String p = req.getParameter("passwd");//此处填写组件名
//连接到数据库(运行驱动)
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//得到链接
ct = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=数据库名","数据库用户名","数据库密码");
//创建Statrment
sm=ct.createStatement();
rs=sm.executeQuery("select top 1 passwd from users where username ='"+u+"'");
if(rs.next())//查询到了
{
//说明用户是存在的
String dbPasswd=rs.getString(1);
if(dbPasswd.equals(p))
{
//密码和数据库中的一致
HttpSession hs = req.getSession(true);
hs.setMaxInactiveInterval(20);
hs.setAttribute("pass","ok");
//连接登录后的欢迎界面
//sendRedirect的作用是跳转界面
res.sendRedirect("wel?username="+u+"&passwd="+p);//该处填写域名
}
else
res.sendRedirect("login");
}
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();
}
}
}
}
输入你数据库中有的账户名和密码,顺利登录!
之后,直接在数据库表中添加或修改用户信息,servlet程序会直接读取,用不着修改程序。