在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;
/** * @(#)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); } }