zoukankan      html  css  js  c++  java
  • J2EE环境搭建(三)配置Tomcat 7.0的局部数据源

    在J2EE环境搭建(一)中遗留下一个配置Tomcat数据源的问题,最近都在专心搞iOS的东西,由于J2EE布置了作业,所以又回过头来搞下J2EE。汗。。。

    在这里我使用的是MySQL。


    1.配置MySQL的JDBC驱动

    (1)下载MySQL的JDBC驱动,这里用的是mysql-connector-java-5.1.17-bin.jar。

    (2)将该jar文件复制到Tomcat的lib目录下。



    2.下载安装MySQL

    这里要求MySQL的版本在5.1以上,我安装的是mysql-essential-5.1.65-win32.msi。

    在安装时选择Custom方式,到达配置时选择GBK编码方式,用户名root(默认),密码123456(自定吧)。

    在安装完成后,可以打开MySQL安装目录下的my.ini文件进行查看修改:


    例如这里的端口号是3306,默认的字符编码方式为GBK等。

    然后在环境变量中配置数据库的路径:

    %PATH%; F:softwareJ2EEMySQLin


    之后可以打开MySQL的命令行查看,打开方式有多种:

    方法一:可以在开始菜单中搜索MySQL,然后打开MySQL Command Line Client。



    打开后输入密码123456即可:




    方法二:也可以将bin目录下的mysql.exe(直接打开的话会闪退)复制一个快捷方式到某个盘中例如F盘,然后用cmd打开。注意直接输入mysql.exe由于没有密码是被拒绝访问的,因此必须输入用户名和密码:


    然后输入

    mysql> select version(), current_date; 

    可以查看版本信息和当然日期。

    输入

    mysql>quit


    可以退出MySQL程序,当然输入exit可以直接退出命令行窗口。



    3.建立一个数据库和表

    可以通过MySQL语句建立,可以通过sql成批处理导入脚本,也可以用图形界面的MySQL管理软件导入。

    下面说说前面两种方法:

    方法一:通过MySQL语句建立

    像2那样打开mysql.exe,然后输入下列命令

    1)创建并选择数据库javaee

    mysql> CREATE DATABASE javaee;
    mysql> USE javaee;
    

    2)在javaee数据库中创建表格news_inf

    mysql>create table news_inf
    ->( news_id int primary key auto_increment,
    -> news_title varchar(255));
    

    3)往表格news_inf中插入数据

    mysql>insert into news_inf values
    ->(null , 'Jimmy Lee'),
    ->(null , 'is SB');
    

    4)查看数据库的内容

    mysql> USE javaee;
    mysql> SHOW TABLES;

    可以看到javaee中多了一个表格news_inf。


    如果要删除数据库javaee,可以输入

    drop database javaee;


    方法二:直接导入脚本

    首先建立一个sql文件,代码如下:

    drop database javaee;
    create database javaee;
    use javaee;
    
    create table news_inf
    (
     news_id int primary key auto_increment,
     news_title varchar(255)
    );
    
    insert into news_inf
    values
    (null , 'Jimmy Lee'),
    (null , 'is SB');

    将该文件复制到一个便于使用的路径,例如F盘目录下。
    然后打开mysql.exe,输入

    mysql>source f:/test.sql;

    之后可以看到命令行窗口输入Query OK等信息。



    4.部署程序和配置局部数据源

    (1)将程序部署到Tomcat中,方法有多种,在(一)中已经说过,这里不再赘述。

    首先看看jsp程序的代码:

    <%--
    网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
    author  yeeku.H.lee kongyeeku@163.com
    version  1.0
    Copyright (C), 2001-2012, yeeku.H.Lee
    This program is protected by copyright laws.
    Program Name:
    Date: 
    --%>
    
    <%@ 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/dstest");
    //获取数据库连接
    Connection conn=ds.getConnection();
    //获取Statement
    Statement stmt=conn.createStatement();
    //执行查询,返回ResulteSet对象
    ResultSet rs=stmt.executeQuery("select * from news_inf");
    while(rs.next())
    {
    	out.println(rs.getString(1) 
    		+ "	" + rs.getString(2) + "<br/>");
    }
    %>
    </body>
    </html>

    这里直接使用了疯狂Java一书作者李刚先生的例子代码。这里的局部数据源对应的JNDI自定义名字为jdbc/dstest。


    (2)修改当前工程的WEB-INF目录下的web.xml文件,在web元素中添加以下子元素:

    <Resource name="jdbc/dstest" 
    auth="Container"
    type="javax.sql.DataSource" 
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/javaee"
    username="root" 
    password="123456" 
    maxActive="5"
    maxIdle="2" 
    maxWait="10000"/>

    其中name指定JNDI名字,driverClassName为该JNDI的类型。url指定其路径(3306为MySQL程序的端口,javaee为要访问的数据库),username和password要和自定的用户名密码匹配。其他信息以上代码注释已有详细说明。

    作用是为本工程配置一个JNDI(Java命名和目录接口,用于为自己创建的Java对象命名)。

    立即运行的话,会发现如下错误:

    org.apache.jasper.JasperException: javax.servlet.ServletException: javax.naming.NameNotFoundException: Name jdbc is not bound in this Context

    原因在于创建的JNDI在Tomcat的Context上下文环境中找不到该变量的声明。


    3)配置Tomcat的context.xml

    因此还需要在Tomcat的conf目录下的context.xml中加入以上Resource元素。有些资料说还要在Catalina/localhost目录新建一个相应的xml文件,经验证是不需要的,这里参考了TOMCAT配置数据源


    现在重启Tomcat的startup.bat,再打开本程序,即可看到数据库javaee中的news_inf表格中的内容:




    以上是为Tomcat 7.0配置局部数据源的方法,也就是该数据源仅限于某一个工程中的程序使用,如果需要配置全局数据源,那么必须修改Tomcat的server.xml文件,引用教材的话:这样做可能导致破坏Tomcat系统,所以应该尽量避免使用全局数据源。

  • 相关阅读:
    84. Largest Rectangle in Histogram (Solution 2)
    84. Largest Rectangle in Histogram (Solution 1)
    73. Set Matrix Zeroes
    【JavaScript】Symbol 静态方法
    【JavaScript】Date
    【JavaScript】Math
    725. Split Linked List in Parts把链表分成长度不超过1的若干部分
    791. Custom Sort String字符串保持字母一样,位置可以变
    508. Most Frequent Subtree Sum 最频繁的子树和
    762. Prime Number of Set Bits in Binary Representation二进制中有质数个1的数量
  • 原文地址:https://www.cnblogs.com/james1207/p/3367601.html
Copyright © 2011-2022 走看看