
1) 、发布信息:修改 Tomcat\conf\context.xml 文件或者是把此配置文件 copy 到项目的 META-INF 目录下。< Context >< Environment name = "tjndi" value = " zhaojian hello JNDI" type = "java.lang.String" />Context >name :环境条目名称,相对于 java:comp/env 的名称value :通过 JNDI context 请求时,返回给应用的参数值,该值必须转换成 type 属性定义的 Java 类型type :环境条目的 Java 类名的全称

这时idea就会在web文件夹下自动创建一个META-INF文件夹以及context.xml文件
2) 、获取资源:使用 lookup() 进行查找,在 jsp 页面当中写下面的 java 代码// javax.naming.Context 提供了查找 JNDI Rescouce 的接口// 定义 ContextContext context= new InitialContext();// 使用 lookup() 查找资源信息 注意前缀:java:comp/envString result=(String)context.lookup( "java:comp/env/tjndi" );out.print(result);其中 Context 和 InitialContext 分别导入的包是 javax.naming.Context 和javax.naming.InitialContextapplication 和 JNDI 的区别:application 对象只能在一个 web 应用程序中使用,而使用 JNDI 发布的信息是对服务器上所有的 web 应用程序都可见的。 JNDI 不只完成这种简单的需求,它还提供了对其他资源的引用。


1 、配置 context.xml 文件xml version ="1.0" encoding ="UTF-8" ?>< Context path ="/" >< Resource name ="jdbc/stu" auth ="Container" type ="javax.sql.DataSource"maxActive ="100" maxIdle ="30" maxWait ="10000" username ="root"password ="123456" driverClassName ="com.mysql.cj.jdbc.Driver"url ="jdbc:mysql://localhost:3306/user_student?serverTimezone=UTC" />Context >

2 、配置 web.xml 文件< resource-ref >< res-ref-name > jdbc/stu res-ref-name >< res-type > javax.sql.DataSource res-type >< res-auth > Container res-auth >resource-ref >
3、添加数据库驱动文件,把数据库驱动的jar包,加入到tomcat的lib中
- import javax.naming.Context;
- import javax.naming.InitialContext;
- import javax.naming.NamingException;
- import javax.sql.DataSource;
- public class BaseDao {
- public Connection getConnection () {
- Connection conn = null;
- try { //获取与逻辑名相关联的数据源对象
- Context ctx = new InitialContext();
- DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/news");
- conn = ds.getConnection();
- } catch (SQLException exception) {
- exception.printStackTrace();
- } catch (NamingException namingException)
- namingException.printStackTrace();
- }
- return conn;
- }