• 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系统,所以应该尽量避免使用全局数据源。

  • 相关阅读:
    用Telnet发送HTTP请求
    chrome失去响应问题
    windows应用技巧
    转载:Linux 的系统服务及其配置(略有修改)
    poj2249 排列组合
    poj1068 模拟
    并查集———吉林省赛(六)G题
    著名医生的药方(深搜)
    源代码(C#)
    (课程设计)简单总结
  • 原文地址:https://www.cnblogs.com/james1207/p/3367601.html
Copyright © 2020-2023  润新知