知识大全 从零开始手把手教你用tomcat

Posted

篇首语:人并不是因为美丽才可爱,而是因为可爱才美丽。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 从零开始手把手教你用tomcat相关的知识,希望对你有一定的参考价值。

    前言

  本文根据实例详细介绍了如何在tomcat中配置数据源 并且十分详细的介绍了JDBC简介 事务处理 数据源简介 配置数据源 本文从最基础的知识点开始讲起 让不太了解tomcat的学者对其在头脑里有一个十分清晰 透彻的了解

  开发环境

  本文的环境 JDK TOMCAT Oracle i

  JDBC简介

  提到数据源 那就不能不说JDBC JDBC是Java  Database Connectivity的缩写 在java sql包中提供了JDBC API 定义了访问数据库的接口和类 但是JDBC API不能直接访问数据库 必须依赖于数据库厂商提供的JDBC驱动程序 即JDBC DRIVER

  Java sql中常用的接口和类如下     Driver接口和DriverManager类    Connection    Statement    PreparedSataement    ResultSet

   Driver接口和DriverManager类     DriverManager类用来建立和数据库的连接以及管理JDBC驱动程序 常用方法如下     registerDriver(Driver driver) 在DriverManager中注册JDBC驱动程序     getConnection(String url String user String pwd) 建立和数据库的连接 返回Connection对象     setLoginTimeOut(int seconds) 设定等待数据库连接的最长时间     setLogWriter(PrintWriter out) 设定输入数据库日至的PrintWriter对象      Connection    Connection代表和数据库的连接 其常用方法如下         getMetaData() 返回数据库的MetaData数据 MetaData数据包含了数据库的相关信息 例如当前数据库连接的用户名 使用的JDBC驱动程序 数据库允许的最大连接数 数据库的版本等等     createStatement() 创建并返回Statement对象     PrepareStatement(String sql) 创建并返回prepareStatement对象         Statement    Statement用来执行静态sql语句 例如 对于insert update delete语句 调用executeUpdate(String sql)方法 而select语句可以调用executeQuery(String sql)方法 executeQuery(String sql)方法返回ResultSet对象

   PrepareStatement    PrepareStatement用于执行动态的sql语句 即允许sql语句中包含参数 使用方法为     String sql = select col from tablename where col =? And col =? ;    PrepareStatement perpStmt = conn preparestatement(sql);    perpStmt setstring( col Value);    perpStmt setFloat( col Value);    ResultSet rs = perpStmt executeQuery();

   ResultSet ResultSet用来表示select语句查询得到的记录集 一个StateMent对象在同一时刻只能打开一个ResultSet对象 通过ResultSet的getXXX()方法来得到字段值 ResultSet提供了getString() getFloat() getInt()等方法 可以通过字段的序号或者字段的名字来制定获取某个字段的值 例如 在上例中getString( ) getString(col )都可以获得字段col 的值

  事务处理

  在实际应用中 我们会遇到同时提交多个sql语句 这些sql语句要么全部成功 要么全部失败 如果其中一条提交失败 则必须撤销整个事务 为此 Connection类提供了 个控制事务的方法         setAutoCommit(boolen autoCommit) 设置是否自动提交事务 默认为自动提交     mit() 提交事务     rollback() 撤销事务       参考例子     try                conn SetautoCommit(false);                 stmt = conn createstatement();            stmt executeUpdate( delete form table where col = );            stmt eecuteUpdate( delete from table where col = );                ();            catch(Exception e)                 e printStackTrace;                     try            conn rollback();           catch(Exception e )                 e printStackTrace;                                    通过一个JSP例子来访问oracle数据库     <%@ page import= java util * >        <%@ page import= java sql * >        <%        try                Connection conn = null;                Statement stmt = null;                ResultSet rs = null;                //加载oracle驱动程序                Class forName( oracle jdbc driver OracleDriver );                //注册oracle驱动程序                DriverManager regidterDriver(new             oracle jdbc driver OracleDriver());                //建立数据库连接                conn=DriverManager getConnection( jdbc:oracle:thin:@your             db ip:your db port:sid dbuser dbpassword);                stmt = conn createStatement();                rs = stmt executeQuery( select * from tablename );                while(rs next)                                    out print(rs getstring( colname ));                                  

  catch(Exception e)                                      finally                     rs close();                     stmt close();                     conn close();                    %>     数据源简介     JDBC 提供了javax sql DataSource的接口 负责与数据库建立连接 实际应用时不需要编写连接数据库代码 直接从数据源获得数据库的连接 Dataource中事先建立了多个数据库连接 这些数据库连接保持在数据库连接池中 当程序访问数据库时 只需要从连接池从取出空闲的连接 访问数据库结束 在将这些连接归还给连接池 DataSource对象由容器(Tomcat)提供 不能使用创建实例的方法来生成DataSource对象 要采用JAVA的JNDI(Java  Nameing and Directory Interface java命名和目录接口)来获得DataSource对象的引用 (另有一种说法 其实从技术上来说 数据源连接方式是不需要目录服务的 我们同样可以通过序列化数据源对象直接访问文件系统 这点是需要明确的 感兴趣的朋友可以试试 )JNDI是一种将对象和名字绑定的技术 对象工厂负责生产出对象 这些对象都和唯一的名字相绑定 程序中可以通过这个名字来获得对象的引用 Tomcat把DataSource作为一种可配置的JNDI资源来处理 生成DataSource对象的工厂为m ons dbcp BasicDataSourceFactory

  配置数据源

  配置数据源其实相当简单     首先在server xml中加入<Resource>元素 打开server xml 在<Context>中加入以下代码(以oracle为例)     <Resource name= jdbc/ JNDI名字 auth= Container type= javax sql DataSource />    <ResourceParams name= jdbc/JNDI名字 >    <parameter>    <name>factory</name>     <value>mons dbcp BasicDataSourceFactory</value>    </parameter>    <parameter>    <name>maxActive</name>    <value> </value>    </parameter>    <parameter>    <name>maxIdle</name>    <value> </value>    </parameter>    <parameter>    <name>maxWait</name>     <value> </value>    </parameter>    <parameter>     <name>username</name>    <value>用户名</value>    </parameter>    <parameter>    <name>password</name>    <value>密码</value>    </parameter>    <parameter>    <name>driverClassName</name>    <value>oracle jdbc driver OracleDriver</value>    </parameter>    <parameter>    <name>url</name>     <value>jdbc:oracle:thin:@ip:端口:sid </value>    </parameter>    </ResourceParams>         <Resource>元素的属性如下      name 指定Resource的JNDI的名字      auth 指定管理Resource的Manager 由两个可选值 Container和Application Container表示由容器来创建和管理Resource Application表示由WEB应用来创建和管理Resource 如果在web application deployment descriptor中使用<resource ref> 这个属性是必需的 如果使用<resource env ref> 这个属性是可选的     type 指定Resource所属的java类名        <ResourceParams>元素的属性如下     name 指定ResourceParams的JNDI的名字 必须和Resource的name保持一致     factory 指定生成DataSource对象的factory的类名     maxActive 指定数据库连接池中处于活动状态的数据库连接最大数目 表示不受限制     maxIdle 指定数据库连接池中处于空闲状态的数据库连接的最大数目 表示不受限制     maxWait 指定数据库连接池中的数据库连接处于空闲状态的最长时间(单位为毫秒) 超过这一事件 将会抛出异常 表示可以无限期等待     username 指定连接数据库的用户名     password 指定连接数据库的密码     driverClassName 指定连接数据库的JDBC驱动程序     url 指定连接数据库的URL

  其他文章说以上配置就OK了 对于web xml的配置可有可无 其实不是这样子的 如果在web应用中访问了由Servlet容器管理的某个JNDI Resource 则必须在web xml中声明对这个JNDI Resource的引用 表示资源引用的元素为<resource ref> 该元素加在<wepapp></ wepapp >中         <resource ref>    <descryiption>DB Connection</descryiption>    <res ref name>jdbc/JNDI名字 </res ref name>    <res type>javax sql DataSource </res type>    <res auth>Container </res auth>    </resource ref>

  <resource ref>元素的属性如下     description 对所引用的资源的说明     res ref name 指定所引用资源的JNDI名字 与<Resource>元素中的name属性保持一致     res type 指定所引用资源的类名字 与<Resource>元素中的type属性保持一致     res auth 指定所引用资源的Manager 与<Resource>元素中的auth属性保持一致         到这里 数据源就已经配置成功了 但是我在测试的时候除了一点小麻烦 主要原因是对DataSource的概念没搞清楚 我是这么测试的 写一个测试类 然后在eclipse中进行junit测试 捕获的异常为     javax naming NoInitialContextException: Need to specify class name in environment or system property or as an applet parameter or in an application resource file: java naming factory initial

  同样的代码在JSP 文件中正常运行 后来翻了一些资料 终于找到了问题的所在了 原来DataSource是由容器(TOMCAT)提供的 所以我的测试会抛出异常 为了再次验证想法是否正确 在jsp文件中import刚才抛出异常的类 在进行连接数据库 结果一切正常

cha138/Article/program/Java/ky/201311/28022

相关参考

知识大全 手把手教你创建RMANCATAGORY

手把手教你创建RMANCATAGORY  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!第一步创建RM

知识大全 手把手教你ADO.NET快速起步

手把手教你ADO.NET快速起步  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ADONET是微

知识大全 手把手教你编程打印出PDF

手把手教你编程打印出PDF  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天使用的类叫FPDF

知识大全 手把手教你RequisitePro的SQL Server配置[1]

手把手教你RequisitePro的SQLServer配置[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 手把手教你RequisitePro的SQL Server配置[3]

手把手教你RequisitePro的SQLServer配置[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 手把手教你RequisitePro的SQL Server配置[2]

手把手教你RequisitePro的SQLServer配置[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 手把手教你RequisitePro的SQL Server配置[4]

手把手教你RequisitePro的SQLServer配置[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 手把手教你装debian(二)

  基系统的安装和模块的选取    配置好基系统是非常重要的因为这样可以建造一个非常稳定的基础还可省去以后编译内核的麻烦不过    bf内核的选项非常繁多过程和编译内核相似对新手来说是一次很好的锻炼机

知识大全 引经据典,手把手教你如何运用国学起名

想必各位家长都希望孩子将来能够有文化,不再像自己以前一样干体力活,所以不妨就在孩子刚出生的时候就赐予他一个有文化涵养的名字,现在很多人人取名字都喜欢喜欢引经据典,这样的名字的确具有很深远的意义,所以小

知识大全 一步一步教你用JS和INF编辑注册表

一步一步教你用JS和INF编辑注册表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JScrip