a_dao:数据访问层,接口设计
AdminDao.java
IAdminDao.java
b_entity:实体类
Admin.java
c_util:工具类
jdbcUtil.java
d_servlet:控制层
AdminServlet.java
db.properties
db.properties
url=jdbc:mysql://localhost:3306/test
user=root
password=root
driverClass=com.mysql.jdbc.Driver
IAdminDao.java
package a_dao;
import java.util.List;
import c_jdbc.Admin;
/*
* 数据访问层,接口设计
* */
public interface IAdminDao {
/*
* 保存
* */
void save(Admin admin);
/*
* 根据用户名密码查询
* */
Admin findByNameAndPwd(Admin admin);
Admin findByName(Admin admin);
List<Admin> findAll();
}
AdminDao.java
package a_dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import c_jdbc.Admin;
import d_util.jdbcUtil;
public class AdminDao implements IAdminDao {
private Connection conn;
private QueryRunner qr = new QueryRunner();
@Override
public void save(Admin admin) {
// TODO Auto-generated method stub
String sql = "insert into admin (userName,password) values(?,?)";
try {
conn = jdbcUtil.getConnection();
qr.update(conn, sql, admin.getUserName(),admin.getPassWord());
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException();
}finally{
jdbcUtil.close(conn, null, null);
}
}
@Override
public Admin findByNameAndPwd(Admin admin) {
// TODO Auto-generated method stub
String sql = "select * from admin where userName=? and passWord=?";
try {
conn = jdbcUtil.getConnection();
Admin ad = qr.query(conn, sql,
new BeanHandler<Admin>(Admin.class),
admin.getUserName(),
admin.getPassWord());
return ad;
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException();
}finally{
jdbcUtil.close(conn, null, null);
}
}
@Override
public Admin findByName(Admin admin) {
// TODO Auto-generated method stub
String sql = "select * from admin where userName=?";
try {
conn = jdbcUtil.getConnection();
Admin ad = qr.query(conn, sql,
new BeanHandler<Admin>(Admin.class),
admin.getUserName());
return ad;
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException();
}finally{
jdbcUtil.close(conn, null, null);
}
}
public List<Admin> findAll(){
String sql = "select * from admin";
//移动光标取第一行数据
//boolean flag = rs.next();
try{/*
conn = jdbcUtil.getConnection();
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
while(rs.next()){
//根据列名称取值
int id = rs.getInt("id");
String userName = rs.getString("userName");
String passWord = rs.getString("passWord");
Admin admin = new Admin();
admin.setId(id);
admin.setUserName(userName);
admin.setPassWord(passWord);
list.add(admin);
}
return list;*/
conn = jdbcUtil.getConnection();
List<Admin> list = new ArrayList<Admin>();
Admin ad = qr.query(conn, sql,
new BeanHandler<Admin>(Admin.class));
list.add(ad);
return list;
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException();
}finally{
jdbcUtil.close(conn, null, null);
}
}
}
Admin.java
package c_jdbc;
public class Admin {
private int id;
private String userName;
private String passWord;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
@Override
public String toString() {
return "Admin [id=" + id + ", userName=" + userName + ", passWord=" + passWord + "]";
}
}
jdbc.java
package d_util;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class jdbcUtil {
private static String url = null;
private static String user = null;
private static String password = null;
private static String driverClass = null;
/**
* 静态代码块中(只加载一次)
*/
static{
try {
//读取db.properties文件
Properties props = new Properties();
/**
* . 代表java命令运行的目录
* 在java项目下,. java命令的运行目录从项目的根目录开始
* 在web项目下, . java命令的而运行目录从tomcat/bin目录开始
* 所以不能使用点.
*/
//FileInputStream in = new FileInputStream("./src/db.properties");
/**
* 使用类路径的读取方式
* / : 斜杠表示classpath的根目录
* 在java项目下,classpath的根目录从bin目录开始
* 在web项目下,classpath的根目录从WEB-INF/classes目录开始
*/
InputStream in = jdbcUtil.class.getResourceAsStream("/db.properties");
//加载文件
props.load(in);
//读取信息
url = props.getProperty("url");
user = props.getProperty("user");
password = props.getProperty("password");
driverClass = props.getProperty("driverClass");
//注册驱动程序
Class.forName(driverClass);
} catch (Exception e) {
e.printStackTrace();
System.out.println("驱程程序注册出错");
}
}
public static Connection getConnection(){
try {
Connection conn = DriverManager.getConnection(url,user,password);
return conn;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException();
}
}
public static void close(Connection conn,Statement stat,ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
throw new RuntimeException(e);
}
}
if(stat!=null)
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
AdminServlet.java
package f_servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import a_dao.AdminDao;
import a_dao.IAdminDao;
import c_jdbc.Admin;
import e_service.*;
/**
* 4. 控制层开发
*
* @author Jie.Yuan
*
*/
@SuppressWarnings("serial")
public class AdminServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 编码
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
// 获取操作类型
String method = request.getParameter("method");
if ("register".equals(method)) {
register(request,response);
}else {
out.print("未获取到操作类型");
}
}
private void register(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
/*
注册
IAdminDao adminDao = new AdminDao();
Admin admin = new Admin();
String userName = request.getParameter("userName");
String passWord = request.getParameter("passWord");
admin.setUserName(userName);
admin.setPassWord(passWord);
adminDao.save(admin);
*/
/*
查询*/
IAdminDao adminDao = new AdminDao();
Admin admin = new Admin();
String userName = request.getParameter("userName");
String passWord = request.getParameter("passWord");
System.out.println("接收参数:"+"userName:"+userName+"-passWord:"+passWord);
admin.setUserName(userName);
admin.setPassWord(passWord);
System.out.println("接收参数admin1:"+"getUserName:"+admin.getUserName()+"-getPassWord:"+admin.getPassWord());
Admin admin2 = adminDao.findByName(admin);
System.out.println("接收参数admin2:"+"getUserName:"+admin2.getUserName()+"-getPassWord:"+admin2.getPassWord());
Admin admin3 = adminDao.findByNameAndPwd(admin);
System.out.println("接收参数admin3:"+"getUserName:"+admin3.getUserName()+"-getPassWord:"+admin3.getPassWord());
List<Admin> list = adminDao.findAll();
System.out.println(list);
for(Admin admin4 : list){
System.out.println("接收参数admin4:id:"+admin4.getId()+"-getUserName:"+admin4.getUserName()+"-getPassWord:"+admin4.getPassWord());
}
}
}