zoukankan      html  css  js  c++  java
  • 学习JNDI

    既然datasource对象有tomcat提供,那么我们如何在应用程序中获得它呢,tomcat把这个对象放在JNDI服务中,

    并用一个名字把它关联起来,我们在应用程序中,只需通过JNDI搜索这个名字,就能得到这个datasource对象。
    JNDI是一个目录服务,就像我们书本前面的目录一样,大家可以翻到书中的目录,比如说“第二章servlet基础。。。25页”,

    这就建立了一个名称和对象的关联,我们可以根据“第二章servlet基础。。。25页”这个名字,在25页找到真正的第二章内容。
    同样,JNDI也是一样,我们将datasource放到JNDI目录服务中,然后给他起一个名字比如“jdbc/s1”,那么我们在应用程序中,

    就可以通过javax.namming.Context接口的lookup()方法,索引“jdbc/s1”这个名字来得到datasource对象

    JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。

    命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性

     

    一、记住三点:

    1.在Tomcatconfcontext.xml 配置

    <Resource name="jdbc/hadoop"
    auth="Container" type="javax.sql.DataSource" maxActive="100"
    maxIdle="30" maxWait="10000" username="root" password="123456"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://192.168.8.134:3306/hadoop"/>

    2.在web.xml中配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <display-name></display-name>
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>


    <resource-ref>
    <description>mysql hadoop DataSource</description >
    <res-ref-name>jdbc/hadoop</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>


    </web-app>

    3.在javabean进行取得连接 ,已经操作:

    package datasource;

    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.Iterator;

    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.sql.DataSource;

    public class TitlesBean {
    Connection conn=null;
    ArrayList<String> mylist=new ArrayList<String>();


    public ArrayList<String> getMylist() {
    return mylist;
    }



    public ArrayList<String> getAccount() {

    try {
    //通过Context、DataSource获取Connection对象
    Context ic = new InitialContext();
    //这里的lookup是在tomcat的context中配置的名字
    DataSource source = (DataSource)ic.lookup("java:comp/env/jdbc/hadoop");
    conn = source.getConnection();
    /*java:comp/env/jdbc/news"
    * 分为两部分java:comp/env
    *为JavaEE默认路径
    *jdbc/news为DataSource名
    */
    String sql="select * from trade_detail";
    Statement st = conn.createStatement() ;
    ResultSet results = st.executeQuery(sql);
    while(results.next())
    {
    mylist.add(results.getString("account"));

    }

    } catch (Exception exception) {
    exception.printStackTrace();
    }

    finally{
    }
    return mylist;
    }
    }

    4.这样既就可以进行web页面进行操作

    例如:

    showJNDI_hadoopData.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="datasource.TitlesBean" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>">

    <title>My JSP 'MyJsp.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

    </head>

    <body>

    <%
    TitlesBean c = new TitlesBean();
    ArrayList<String> mylist = c.getAccount();
    for (Iterator<String> iterator = mylist.iterator(); iterator
    .hasNext();) {
    String str = (String) iterator.next();
    System.out.println("account :"+str);
    %>

    <p><%=str%></p>
    <% } %>

    </body>
    </html>

    图:

  • 相关阅读:
    函数--第一类对象、闭包、
    递归
    局部变量 和 全局变量
    默认参数,不固定参数 *args,**kwargs
    函数基本语法及特性
    文件修改
    文件操作,重点,日常使用!!!
    集合
    重新写了一边三级菜单,加了一些自己的理解
    三级菜单
  • 原文地址:https://www.cnblogs.com/nucdy/p/5798539.html
Copyright © 2011-2022 走看看