DDconnectionBroker连接池(MySQL)

用DDconnectionBroker连接池处理简单的登陆
用JDBC 连接Mysql 数据库。
默认已经下载并导入了DDconnectionBroker.jar

先写一个连接池的java文件命名为DDConn.java

package MysqlConnection;
import java.sql.Connection;
import java.sql.SQLException;

import com.devdaily.opensource.database.DDConnectionBroker;


  public class DDConn 
  { 

    private DDConnectionBroker m_broker; 
    private static DDConn m_singleton = null; 

 // 数据库连接所需要的各种参数
    private String driver = "com.mysql.jdbc.Driver";  //驱动
    /*我已经在本地的mysql数据库中新建了Login数据库,
     *这个数据库中新建了一张表Users,
     *Users中有一条数据(username:wanghao,password:wanghao@)
     */
    private String url = "jdbc:mysql://localhost:3306/Login";
    // 数据库的用户名和密码
     private String uname = "root";
    private String passwd = "wanghao@";
    //连接池的最大连接和最小连接数
   private int minConnections =0;
   private int maxConnections = 10;

   private long timeout = 100 ;
   private long leaseTime  =60000 ;
   private String logFile = "/home/wang/Sigin.log";
//连接池的初始化
public void InitBroker(){
         try 
         { System.out.print("Being here");

            m_broker = new DDConnectionBroker(driver, 
                                             url, uname, passwd, 
                                             minConnections, 
                                             maxConnections, 
                                             timeout, 
                                             leaseTime, 
                                             logFile); 
         } 
         catch (SQLException se)  
         {
             System.err.println( se.getMessage() ); 
         } 
    }  
//得到连接的数量
 public int GetNumberConnections() throws SQLException {
     if(m_broker != null) 
         return m_broker.getNumberConnections();
     else return -1;
 }
//得到连接
    public synchronized Connection getConnection() throws Exception  
    { 
        if (m_broker == null) 
        { 
            throw new Exception("Can't get Connection broker!");  
        } 
        return (m_broker.getConnection()); 
    } 

  //释放连接
    public synchronized void freeConnection(Connection con)  
     throws Exception  
    { 
        if (m_broker == null ) 
        { 
            throw new Exception("Can't get Connection broker!");  
        } 
        m_broker.freeConnection(con);  
    }

  }



再写一个针对本次使用连接池的类JavaConn.java对DDCon.java进一步封装

package MysqlConnection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
public class JavaConn {
private DDConn Con = new DDConn();
private static JavaConn instance;
//连接池的实例化 
synchronized public static JavaConn getInstance()
{ if(instance == null)
{      instance = new JavaConn();
       instance.Con.InitBroker();
}
return instance;

}
//得到连接
public Connection getConnection() throws Exception{
    return Con.getConnection();
}
//释放连接
public void freeConnection() throws Exception
{
    Con.freeConnection((Connection) Con);
}
//得到连接的数目
public int getNumberConnections() throws SQLException
{
    return Con.GetNumberConnections();
}  
}

好,我们数据库连接池的代码写好后,写个登录界面来验证一下:

package Login;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


//用户登录管理系统的登录界面:Login.java
@WebServlet("/login.do")
public class Login extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {         
        try {
            //解决中文乱码
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            out.println("<html>");
            out.println("<body>");
            out.println("<h1>登录界面--请登录</h1>");
            out.println("<form action=loginCheck.do method=post>");

            if (username == null)
                {   out.println("用户名:<input type=text name=username><br>");
                    out.println("密&nsp码:<input type=password name=password><br>"); 
        }
            else    
            {   out.println("用户名:<input type=text name=username  value = "+ username +"><br>");
                out.println("密&nsp码:<input type=password name=password value = " + password + "><br>"); 
              }

            out.println("<input type=submit value=login><br>");
            out.println("</form>");
            out.println("</body>");
            out.println("</html>");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

然后再写一个LoginCheck.java来接收前台的参数,并与数据库中的数据进行比对。

package Login;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import MysqlConnection.JavaConn;
@WebServlet("/loginCheck.do")
public class LoginCheck extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                try {
                    //解决中文乱码
                    response.setContentType("text/html;charset=gbk");           
                    //接受用户从浏览器端传送过程来的用户名和密码  
                    String username = request.getParameter("username");
                    String password = request.getParameter("password");

                    JavaConn ConnectionPool =JavaConn.getInstance();//得到一个实例化的连接池
                    Connection  Con =  ConnectionPool.getConnection();//申请一个连接


                            String sql = "select * from Users where username='"+username+"' and password='"+password+"'";  
                      //statement里面带有很多方法  实现插入更新 删除
                      Statement stmt = Con.createStatement();
                      //rs为返回结果的集合 否则为空值
                      ResultSet rs = stmt.executeQuery(sql);

                      if(rs.next()) {
                    //合法
                    //跳转到欢迎界面:welcome.java           response.sendRedirect("welcome.do?username = "+ username);             
                    }else{
                        //用户名和密码不匹配,跳转到登录界面
                        response.sendRedirect("login.do");  }

                } catch (Exception e) {
                    e.printStackTrace();
                }
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        this.doGet(request, response);
    }
}

额,看来还要一个欢迎页面 welcome.java,通过LoginCheck的检查后,会跳转到这里····

package Login;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import MysqlConnection.JavaConn;
@WebServlet("/welcome.do")
//用户登录管理系统的欢迎界面:Welcome.java
public class Welcome extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        HttpSession session = request.getSession(false);
        String u = (String)session.getAttribute("username");
        if(u == null) 
        {//如果非法访问  跳转到登录界面
            response.sendRedirect("login.do");          
        }
        else{
            try {
            //解决中文乱码
                response.setContentType("text/html;charset=UTF-8");          
                PrintWriter out = response.getWriter();
                JavaConn ConnectionPool =JavaConn.getInstance();//得到一个实例化的连接池
                out.println("你好!" + u);
                out.println("欢迎选修Java EE");
                out.println("现在共有" +ConnectionPool.getNumberConnections() + "位用户在线");
                out.println("<a href='/Signup.do'>退出登陆</a>");


            } catch (Exception e) {
                e.printStackTrace();
            }
        }   
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        this.doGet(request, response);
    }

}

下面是测试结果:
这里写图片描述

这里写图片描述
我在浏览器中再新开一个窗口,重新登录:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值