1,首先導包
dao
//獲取數據String username = request.getParameter("username");String password = request.getParameter("password");//傳遞到Service層UserService service = new UserService();//這里的UserService 需要創建到service包下User user = service.login(username,password);//若登錄成功返回登錄的對象//這里的User為domain包下的對象,需要創建實體User
domain
package beyond.web.domain;public class User {//User里面的這些定義都是根據數據庫創建的private int id;private String username;private String password;private String email;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;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}
service
package beyond.web.service;import beyond.web.dao.UserDao;
import beyond.web.domain.User;public class UserService {public User login(String username, String password) {UserDao dao = new UserDao();return dao.login(username,password);//最后返回一個User對象即可}
}
//轉到dao
dao
導包c3p0、commons-dbutils、jstl、mysql-connector、standar
導配置文件c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config><default-config><property name="user">root</property><property name="password">beyond</property><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql:///web13</property></default-config>
</c3p0-config>
導工具DataSourceUtils
package beyondwsq.utils;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource;public class DataSourceUtils {private static DataSource dataSource = new ComboPooledDataSource();private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();// 直接可以獲取一個連接池public static DataSource getDataSource() {return dataSource;}public static Connection getConnection() throws SQLException{return dataSource.getConnection();}// 獲取連接對象public static Connection getCurrentConnection() throws SQLException {Connection con = tl.get();if (con == null) {con = dataSource.getConnection();tl.set(con);}return con;}// 開啟事務public static void startTransaction() throws SQLException {Connection con = getCurrentConnection();if (con != null) {con.setAutoCommit(false);}}// 事務回滾public static void rollback() throws SQLException {Connection con = getCurrentConnection();if (con != null) {con.rollback();}}// 提交并且 關閉資源及從ThreadLocall中釋放public static void commitAndRelease() throws SQLException {Connection con = getCurrentConnection();if (con != null) {con.commit(); // 事務提交con.close();// 關閉資源tl.remove();// 從線程綁定中移除}}// 關閉資源方法public static void closeConnection() throws SQLException {Connection con = getCurrentConnection();if (con != null) {con.close();}}public static void closeStatement(Statement st) throws SQLException {if (st != null) {st.close();}}public static void closeResultSet(ResultSet rs) throws SQLException {if (rs != null) {rs.close();}}}
package beyond.web.dao;import java.sql.SQLException;import javax.sql.DataSource;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.taglibs.standard.tag.common.sql.DataSourceUtil;import beyond.web.domain.User;
import beyond.web.utils.DataSourceUtils;public class UserDao {public User login(String username, String password) throws SQLException {//需要導工具導包QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());//查詢,沒有事務控制String sql = "select * from user where username=? and password=?";//sql語句return runner.query(sql, new BeanHandler<User>(User.class) ,username,password);//拋異常}}