在Servlet中操作数据库跟普通Java文件操作数据库是一样的
注意连接数据库要将需要的jar包拷贝到Tomcat容器上,因为Servlet是在Tomcat上运行的,不是Eclipse。
具体有两种方法:
- 将.jar拷贝到%Tomcat%/lib文件夹上,这种方式所有的webapps都可以使用(公共lib库)
- 在自己的webapps目录的WEB-INF文件夹下建立一个lib文件夹,然后将.jar包拷贝到此文件夹内,这种方式只有放有jar包的webapps才能使用(独立lib库)
下面通过一个例子来说明怎么操作数据库,在之前的用户管理系统上添加在数据库上验证的功能:
先在SQL Server上新建TestServlet数据库:
create database TestServlet
go
use TestServlet
go
create table users (
userId int primary key identity(1,1),--用户id号
username varchar(20),--用户名
passwd varchar(20),--用户密码
email varchar(30),--电子邮件
grade int)--用户的级别
go
insert into users values
('admin','admin','admin@sohu.com',1)
insert into users values
('shunping','shunping','shunping@sohu.com', 1)
insert into users values
('tester1','tester1','tester1@sohu.com',5)
insert into users values
('tester2','tester2','tester2@sohu.com',5)
insert into users values
('tester3','tester3','tester3@sohu.com',5)
insert into users values
('tester4','tester4','tester4@sohu.com',5)
insert into users values
('tester5','tester5','tester5@sohu.com',5)
insert into users values
('tester6','tester6','tester6@sohu.com',5)
insert into users values
('tester7','tester7','tester7@sohu.com',5)
insert into users values
('tester8','tester8','tester8@sohu.com',5)
insert into users values
('tester9','tester9','tester9@sohu.com',5)
insert into users values('tester10','tester10','tester10@sohu.com',5)
insert into users values('tester11','tester11','tester11@sohu.com',5)
insert into users values('tester12','tester12','tester12@sohu.com',5)
insert into users values('tester13','tester13','tester13@sohu.com',5)
insert into users values('tester14','tester14','tester14@sohu.com',5)
--显示用户表
select * from users;
然后在用户管理系统的LoginCl上添加数据库验证的代码:
/**
* @(#)HelloGen.java
*
*验证页面
* @author
* @version 1.00 2017/2/23
*/
package com.chongqing;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class LoginCl extends HttpServlet {
//处理get请求
public void doGet(HttpServletRequest req,HttpServletResponse res){
Connection ct = null;
PreparedStatement ps = null;
ResultSet rs = null;
//业务逻辑
try {
//接收用户名和密码
String u = req.getParameter("username");
String p = req.getParameter("passwd");
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=TestServlet","sa","293313");
ps = ct.prepareStatement("select * from users where username = ? and passwd = ?");
ps.setString(1,u);
ps.setString(2,p);
rs = ps.executeQuery();
if(rs.next()){
//合法,添加Session并跳转到欢迎界面
HttpSession mySession = req.getSession(true);
mySession.setMaxInactiveInterval(30); //指定Session存活的时间,单位是秒
mySession.setAttribute("usname",u); //在Session中添加一个属性
res.sendRedirect("wel");//转到wel界面
}else{
//不合法
res.sendRedirect("login");//返回login界面
}
/*
//验证
if(u.equals("zero")&&p.equals("123")){
//合法,添加Session并跳转到欢迎界面
HttpSession mySession = req.getSession(true);
mySession.setMaxInactiveInterval(30); //指定Session存活的时间,单位是秒
mySession.setAttribute("usname",u); //在Session中添加一个属性
res.sendRedirect("wel");//写你要到的Servlet的URL
}else{
//不合法
res.sendRedirect("login");//写你要到的Servlet的URL
}
*/
}
catch (Exception ex) {
ex.printStackTrace();
}finally{
//关闭资源!!!
//关闭顺序是,谁后创建谁先关闭
try {
if(null != rs){
rs.close();
}
if(null != ps){
ps.close();
}
if(null != ct){
ct.close();
}
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
运行结果表明,只有在users表中有的用户而且密码正确才能进入wel界面。