局部数据源的使用

1.我们都知道JDBC的固定步骤是以下几步组成::

(1)Class.forName();

(2)Connection con  = DriverManager.getConnection();

(3)PreparedStatement stat = con.prepareStatement(sql);

(4)stat.executeQuery();

(5)con.close();

而(1)(2)(5)步是每次JDBC操作都要执行的,重复执行是非常耗时的,为了解决重复操作的问题,引入了数据源。

2.首先在WEB应用程序中的META-INF文件夹下,建立一个context.xml的文件。以下代码表示数据源名是jdbc/sampleDS.数据库的用户名是root.root用户对应的密码是123456.

<?xml version="1.0" encoding="UTF-8"?>

<Context reloadable="true">
<Resource
   name="jdbc/sampleDS"
   type="javax.sql.DataSource"
   maxActive="4"
   maxIdle="2"
   username="root"
   maxWait="5000"
   driverClassName="com.mysql.jdbc.Driver"
   password="123456"
   url="jdbc:mysql://127.0.0.1:3306/echarts" />
</Context>

3.通过DataSource的名字查找对应的DataSource,通过一个DataSource在连接池中获得一个Connection

4.在servlet中使用

import java.io.IOException;
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.naming.NamingException;
import javax.servlet.RequestDispatcher;
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 UserQueryServlet extends HttpServlet{
    DataSource dataSource;

    public void init(){
        try{
            //创建一个上下文对象
            Context context = new InitialContext();
            //然后通过它的lookup方法查找数据源对象
            dataSource = (DataSource)context.lookup("java:comp/env/jdbc/sampleDS");
        }catch(NamingException ne){
            log("Exception:" + ne);
        }
    }

    public void doPost(HttpServletRequest request,HttpServletResponse response)
             throws ServletException,IOException{
        Connection dbConnection=null;
        try{
            //获得数据库连接对象
            dbConnection = dataSource.getConnection();
        }catch(SQLException se){
            log("Exctption:" + se);
        }
        response.setContentType("text/html;charset=UTF-8");
        String UserName,password;
        if( request.getParameter("username") !=null){
            UserName = request.getParameter("username");
            password = request.getParameter("password");
            UserDAO userdao = new UserDAO();
            UserBean userbean = userdao.searchUser(UserName);
            request.getSession().setAttribute("user", userbean);

            try{
                String sql = "SELECT*FROM user WHERE userName=?";
                System.out.println(sql);
                PreparedStatement pstmt = dbConnection.prepareStatement(sql);
                pstmt.setString(1,UserName);
                ResultSet rst = pstmt.executeQuery();
                if(rst.next()) {
                    UserBean user = new UserBean();
                    user.setUserName(rst.getString("userName"));
                    user.setPassword(rst.getString("userPassword"));
                    request.getSession().setAttribute("username", UserName);
                    if(user.getPassword().equals(password)){
                        RequestDispatcher view = request.getRequestDispatcher("/showUser.jsp");
                        view .forward(request, response);
                    }else{
                        RequestDispatcher view = request.getRequestDispatcher("/error.jsp");
                        view .forward(request, response);
                    }
                }else{
                    RequestDispatcher view = request.getRequestDispatcher("/error.jsp");
                    view .forward(request, response);
                }
            }catch(SQLException e){
                log("Exception: ",e);
            }finally{
                try{
                    dbConnection.close();
                }catch(SQLException e){}
            }

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

5.在JSP中使用

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@ page import="javax.naming.*,java.sql.*,javax.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>测试Tomcat局部数据源</title>
</head>
<body>
<%
//初始化Context,使用InitialContext初始化Context
Context ctx=new InitialContext();
/*
通过JNDI查找数据源,该JNDI为java:comp/env/jdbc/dstest,分成两个部分
java:comp/env是Tomcat固定的,Tomcat提供的JNDI绑定都必须加该前缀
jdbc/dstest是定义数据源时的数据源名
*/
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/echarts");
//获取数据库连接
Connection conn=ds.getConnection();
//获取Statement
Statement stmt=conn.createStatement();
//执行查询,返回ResulteSet对象
ResultSet rs=stmt.executeQuery("select * from adminstore");
while(rs.next())
{
    out.println(rs.getString(1)
        + "\t" + rs.getString(2) + "<br/>");
}
%>
</body>
</html>

局部数据源的使用

时间: 2024-07-30 06:17:15

局部数据源的使用的相关文章

Tomcat数据源总结

一.数据源的由来 JDBC操作主要由以下几步组成: (1)Class.forName(); (2)Connection con  = DriverManager.getConnection(); (3)PreparedStatement stat = con.prepareStatement(sql); (4)stat.executeQuery(); (5)con.close(); 很显然,(1)(2)(5)步是每次JDBC操作都要执行的,重复执行是非常耗时的,因此为了解决重复操作的问题,引入了

Tomcat配置JNDI数据源

本文将介绍Tomcat配置JNDI数据源的方法,主要分为配置局部数据源(仅供单个应用使用)和全局数据源(所有用该Tomcat的应用都可以使用) 一.思考 从我们学习Web开发以来,我们都是通过程序代码来实现数据库的访问的.从一开始直接将数据库配置信息写在代码中,到后来将配置信息抽取出来写在了Properties文件中,我们访问数据库的代码更加精简. 而通过JNDI方式访问数据库则更为直接,JNDI连接数据库的方式直接将数据库信息放在Tomcat中,而项目代码里直接通过JNDI技术就可以得到数据源

配置Tomcat数据源

Tomcat提供了两种配置数据源的方式: 全局数据源(可以让所有的web应用访问) 局部数据源(单个web应用访问) 使用tomcat的web部署: 在tomcat的conf目录下新建Catalina目录,在该目录下新建localhost目录,在localhost目录下创建一个任意名字的xml文件(部署web应用的配置文件),该文件的主文件名做为web应用的虚拟路径.例:在conf/Catalina/localhost 下创建一个test.xml文件,该文件内容如下: <Context docB

Tomcat配置和数据源配置

Tomcat 的配置 1. 图形化控制台的相关配置 当启动tomcat之后,进入tomcat默认主页,在偏右上角的地方有三个按钮,当我们点击进入的时候要求我们输入帐号密码.相关配置文件在 webapps/manager/WEB-INF路径下.使用无格式编辑器打开该路径下的web.xml,在该文件的末尾部分可以看到如下配置片段 <!-- Define a Security Constraint on this Application --> <!-- NOTE: None of these

Tomcat6.0数据库连接池配置

http://blog.163.com/magicc_love/blog/static/185853662201111101130969/ oracle驱动包Tomcat 6.0配置oracle数据库连接池 安装Tomcat后,在我的电脑-属性—>高级-->环境变量系统变量中添加以下环境变量(假定你的tomcat安装在c:\tomcat); CATALINA_HOME: c:\tomcat CATALINA_BASE: c:\tomcat TOMCAT_HOME: c:\tomcat 然后修改

Tomcat详解

解压缩下载的Tomcat压缩包,呈现的目录结构如下. bin:目录存放一些启动和关闭Tomcat的可执行程序和相关内容.conf:存放关于Tomcat服务器的全局配置.lib:目录存放Tomcat运行或者站点运行所需的jar包,所有在此Tomcat上的站点共享这些jar包,如果需要扩展Tomcat功能,可以将第三方类库复制到该路径下.logs:这是一个空路径,该路径用于保存Tomcat每次运行后产生的日志.temp:保存Web应用运行过程中生成的临时文件.wabapps:目录是默认的站点根目录,

echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端

1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小demo的效果图如下:(很熟悉,有没有) 2.按照echarts的使用方法新建一个echarts.html文件.为ECharts准备一个具备大小(宽高)的Dom(讲的有点细,熟悉的朋友直接跳过) <!DOCTYPE html> <head> <meta charset="u

javax.naming.NameNotFoundException:Name[ XXX] is not bound in this context.

在用局部数据源去连数据库的时候,在本地的项目中,都是可以的,可是一部署到服务器上,就报错了. 报的错误是:javax.naming.NameNotFoundException:Name[ XXX] is not bound in this context. 查了下解决方案:在项目的web.xml中加入下面的代码 <resource-ref> <description>DB Connection</description> <res-ref-name>zjut

Tomcat的下载、安装、配置、管理

Tomcat是Java领域最著名的Web开源容器,简单,易用,稳定性好.既可以用于个人学习使用,也可以作为商业开发产品发布.Tomcat不仅仅提供Web容器的基本功能,还支持JAAS和JNDI绑定等.目前最新的发布版本Tomcat是8.0.14,这个文章中使用的Tomcat版本是8.0.3,其实最新版与该版本的区别不是非常大,具体有哪些新特性可以阅读apache的官方文档,进行了解. 下载Tomcat服务器 登录http://tomcat.apache.org下载. 解压安装包 解压后会得到如下