tomcat--- oracle9i连接池配置

将连接数据库需要的那几项数据以参数形式写进web.xml.有两个位置可以放。

!)web.xml全局配置

context-param  

<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:orcl
  </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>

取法:

ServletContext context= getServletContext();

String dbdriver = context.getInitParameter("driver");
String dburl = context.getInitParameter("conn");
String user = context.getInitParameter("user");
String password = context.getInitParameter("password");

2)Servlet内部参数<init-param>

<servlet>
  <servlet-name>xuefei2</servlet-name>
  <servlet-class>nwpu.edu.cn.xuefei.FirstServlet</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>xuefei2</servlet-name>
  <url-pattern>/xuefei2</url-pattern>
 </servlet-mapping>

取法:

  ServletConfig config = getServletConfig();
  String dbdriver = config.getInitParameter("driver");
  String dburl = config.getInitParameter("conn");
  String user = config.getInitParameter("user");
  String password = config.getInitParameter("password");

 

取出需要的参数后,用参数得到连接:

直接连接数据库

 try {
   Class.forName(dbdriver);
   conn = DriverManager.getConnection(dburl, user, password);
   System.out.println("直接连接到数据库。");
   } catch (Exception e) {
   throw new ServletException(e);
   }

数据源:此时需要在META-INF下写context.xml

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);
  }

 

完整示例:

package nwpu.edu.cn.xuefei;

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;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

public class FirstServlet extends HttpServlet {
 private Connection conn = null;

 public void init() throws ServletException {
  // ServletConfig config = getServletConfig();
  //
  // String dbdriver = config.getInitParameter("driver");
  // String dburl = config.getInitParameter("conn");
  // String user = config.getInitParameter("user");
  // String password = config.getInitParameter("password");
  //
//   try {
//   Class.forName(dbdriver);
//   conn = DriverManager.getConnection(dburl, user, password);
//   System.out.println("直接连接到数据库。");
//   } catch (Exception e) {
//   throw new ServletException(e);
//   }
  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);
  }
 }

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws IOException, ServletException {
  String name = request.getParameter("name");

  String password = request.getParameter("password");

  if (validateUser(name, password)) {

   response.setContentType("text/html;charset=utf-8");// 设定内容类型
   PrintWriter out = response.getWriter();// 获取输出流
   out.println("<HTML>");
   out.println(" <HEAD><TITLE>Login success!!</TITLE></HEAD>");
   out.println(" <BODY>");
   out.print("<center>WELCOME    " + name + "</center>");
   out.println(" </BODY>");
   out.println("</HTML>");
   out.flush();
   out.close();
  } else {

   response.sendRedirect("index.jsp");
  }

 }

 private boolean validateUser(String name, String password) {
  // TODO Auto-generated method stub
  PreparedStatement ps = null;
  ResultSet rs = null;
  try {
   ps = conn
     .prepareStatement("SELECT * FROM java_web_user WHERE user_id=? AND password=?");
   ps.setString(1, name);
   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;
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws IOException, ServletException {
  doGet(request, response);
 }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值