数据连接池

来源:互联网 发布:体检中心软件 编辑:程序博客网 时间:2024/05/02 21:55
tomcat中一定要放class-12
web.xml中的配置<!-- context-param begin 数据连接池--> <context-param>  <param-name>driver</param-name>  <param-value>oracle.jdbc.driver.OracleDriver</param-value> </context-param> <context-param>  <param-name>conn</param-name>  <param-value>   jdbc:oracle:thin:@127.0.0.1:1521:oracle  </param-value> </context-param> <context-param>  <param-name>user</param-name>  <param-value>scott</param-value> </context-param> <context-param>  <param-name>password</param-name>  <param-value>tiger</param-value> </context-param><!-- context-param end --><!-- /loginServlet   直连数据库中时,用到的参数是在servlet中声明的-->  <servlet>  <servlet-name>loginServlet</servlet-name>  <servlet-class>test.LoginServlet</servlet-class>  <init-param>   <param-name>driver</param-name>   <param-value>oracle.jdbc.driver.OracleDriver</param-value>  </init-param>  <init-param>   <param-name>conn</param-name>   <param-value>    jdbc:oracle:thin:@127.0.0.1:1521:oracle   </param-value>  </init-param>  <init-param>   <param-name>user</param-name>   <param-value>scott</param-value>  </init-param>  <init-param>   <param-name>password</param-name>   <param-value>tiger</param-value>  </init-param> </servlet> <servlet-mapping>  <servlet-name>loginServlet</servlet-name>  <url-pattern>/loginServlet</url-pattern> </servlet-mapping> <!-- /servlet/cookieTestServlet --> META-INF中----------------------------------------------context.xml中的代码<?xml version="1.0" encoding="UTF-8"?><Context>   <Resource name="jdbc/ORACLE"         auth="Container"             type="javax.sql.DataSource"             driverClassName="oracle.jdbc.driver.OracleDriver"             url="jdbc:oracle:thin:@127.0.0.1:1521:oracle"             username="scott"             password="tiger"             maxActive="100"             maxIdle="30"             maxWait="10000" /> <!--          //2、使用连接池获取连接//  try{//   InitialContext initContext = new InitialContext();//   Context context = (Context)initContext.lookup("java:comp/env");//   DataSource ds = (DataSource) context.lookup("jdbc/ORACLE");  //////   Context context = new InitialContext();////   DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/ORACLE"); //   //   conn = ds.getConnection();//   System.out.println("通过连接池连接到数据库。");//  }catch(Exception e){//   throw new ServletException(e);  //  }     -->   </Context>在实际中的应用-------------------------------------------------------------------import java.io.IOException;import java.io.PrintWriter;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.naming.Context;   //Context包import javax.naming.InitialContext;  //InitialContext包import javax.servlet.RequestDispatcher;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.sql.DataSource;  //记住是sql中的DataSourcepublic class LoginServlet extends HttpServlet{ private Connection conn = null; public void init() throws ServletException {  //1、使用servlet的初始化参数获取连接 ServletConfig config = getServletConfig();//这里以config作为变量名,不用修改下面代码了  //2、使用连接池获取连接    try{     InitialContext initContext = new InitialContext();     Context context = (Context)initContext.lookup("java:comp/env");     DataSource ds = (DataSource) context.lookup("jdbc/ORACLE");  //     Context context = new InitialContext();//     DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/ORACLE");           conn = ds.getConnection();     System.out.println("通过连接池连接到数据库。");    }catch(Exception e){     throw new ServletException(e);      }   }/*  //3、jdbc做法     String dbdriver = config.getInitParameter("driver");  String dburl = config.getInitParameter("conn");  String user = config.getInitParameter("user");  String password = config.getInitParameter("password");  System.out.println("---driver="+dbdriver+"  url="+dburl);  try {   Class.forName(dbdriver);   conn = DriverManager.getConnection(dburl, user, password);   System.out.println("直接连接到数据库。");  } catch (Exception e) {   throw new ServletException(e);  } }*/ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp)   throws ServletException, IOException {  //先获取前台传过来的用户名和密码  String username = req.getParameter("username");  String password = req.getParameter("password");    /*boolean flag = if (validateUser(username, password));    if(flag){//表示验证通过,允许登录   resp.setContentType("text/html; charset=utf-8");   resp.setCharacterEncoding("utf-8");   PrintWriter out = resp.getWriter();   out.println("登录成功, 欢迎"+username+"访问本系统。");  }else{   req.setAttribute("msg", "用户名或者密码不正确,请重新输入!");   RequestDispatcher rd = req.getRequestDispatcher("/WEB-INF/login2.jsp");   rd.forward(req, resp);  }*///  req.setCharacterEncoding("utf-8");//注意:当用户名为汉字“张三”时,需要使用本行代码;将request传入的汉字转为有效字符;//  resp.setContentType("text/html;charset=utf-8");//注意:本行代码保证在页面正确输出汉字;   if (validateUser(username, password)) {//连接到数据库进行判断用户名和口令//   if("java".equals(username) && "java".equals(password)){//直接在本行代码判断用户名和口令    PrintWriter out = resp.getWriter();        out.println("<HTML>");    out.println("  <HEAD><TITLE>welcome</TITLE></HEAD>");    out.println("  <BODY> <CENTER>");    out.print("  登录成功, welcome  ");    out.print(username);    out.println(".</CENTER>  </BODY>");    out.println("</HTML>");        out.flush();    out.close();   } else {    System.out.println("您输入用户名是:"+username+",密码是:"+password+";"+"用户名或者密码错误,请重新输入!");    /*RequestDispatcher rd = req.getRequestDispatcher("/login.jsp");*/    req.setAttribute("msg", "用户名或者密码不正确,请重新输入!");    RequestDispatcher rd = req.getRequestDispatcher("/WEB-INF/login2.jsp");    rd.forward(req, resp);   } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp)   throws ServletException, IOException {  doGet(req, resp); }public void destroy() { try {  if (conn != null){   conn.close();  } } catch (SQLException e) {  e.printStackTrace(); }}private boolean validateUser(String username, String password) { PreparedStatement ps = null; ResultSet rs = null; try {  ps = conn.prepareStatement("SELECT * FROM java_web_user WHERE user_id=? AND password=?");  ps.setString(1, username);  ps.setString(2, password);  rs = ps.executeQuery();  if (rs.next()){   return true;  } } catch (SQLException e) {  e.printStackTrace(); }finally{  try {   if (rs != null){    rs.close();   }   if (ps != null){    ps.close();   }  } catch (SQLException e) {   e.printStackTrace();  } } return false;}}login.jsp页面-----------------------------------------------------------------<%@ page contentType="text/html; charset=GBK"%> <% request.setCharacterEncoding("GBK"); %><% String path = request.getContextPath(); String basePath = request.getScheme() + "://"   + request.getServerName() + ":" + request.getServerPort()   + path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head>  <base href="<%=basePath%>">  <title>My JSP 'login.jsp' starting page</title>  <meta http-equiv="pragma" content="no-cache">  <meta http-equiv="cache-control" content="no-cache">  <meta http-equiv="expires" content="0">  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  <meta http-equiv="description" content="This is my page">  <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body>  <center>   <h1>请登录本系统 </h1>   <br>   <font color="red">${msg}</font>   <br>   <form action="<%=basePath %>loginServlet" method="post">    <table border="1">     <tr>      <td>姓名</td>      <td><input type="text" name="username"></td>     </tr>     <tr>      <td>密码</td>      <td><input type="password" name="password"></td>     </tr>     <tr>      <td colspan="2">       <input type="submit" value="登录">       <input type="reset" value="重置">      </td>     </tr>    </table>   </form>  </center> </body></html>


 

原创粉丝点击