以下示例基于Spring:
1、在Mysql中建立Spring数据库,数据库中建立user表
2、在tomcat目录下conf\context.xml中的<Context>标签中加入
<Resource name="jndi"
auth="Container"
type="javax.sql.DataSource"
password="mysql5"
username="root"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/spring"
maxActive="5"
maxIdle="2"
maxWait="3000"
/>
3、修改项目的web.xml文件,加入
<resource-ref>
<res-ref-name>jndi</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4、在spring配置文件中配置Datasource
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jndi"/>
</bean>
我们也可以采用下面的方式,但是要加入以下命名空间 :
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">
<!-- Spring 2.0为获取J2EE资源提供了一个jee命名空间,通过jee命名空间,可以有效地简化J2EE资源的引用。 -->
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jndi"/>
User.java
package cn.nevo.model;
import org.springframework.stereotype.Component;
/**
* Entity
* @author Administrator
*
*/
@Component("user")
public class User {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
UserDao.java
package cn.nevo.dao;
import cn.nevo.model.User;
public interface UserDao {
public void save(User user);
}
UserDaoImpl.java
package cn.nevo.dao.impl;
import java.sql.Connection;
import java.sql.SQLException;
import javax.annotation.Resource;
import javax.sql.DataSource;
import org.springframework.stereotype.Component;
import cn.nevo.dao.UserDao;
import cn.nevo.model.User;
@Component("userDao")
public class UserDaoImpl implements UserDao {
private DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
//默认是by name注入
@Resource
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
System.out.println(dataSource);
}
public void save(User user) {
Connection conn = null;
try {
conn = dataSource.getConnection();
conn.createStatement().executeUpdate("insert into user values (null, '" +user.getUsername()+"')");
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
System.out.println("user saved!");
}
}
UserService.java
package cn.nevo.service;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cn.nevo.dao.UserDao;
import cn.nevo.model.User;
@Component("userService")
public class UserService {
private UserDao userDao;
public UserDao getUserDAO() {
return userDao;
}
@Resource(name = "userDao")
public void setUserDAO(UserDao userDao) {
this.userDao = userDao;
}
public void add(User user) {
userDao.save(user);
}
}
LoginServlet.java
package cn.nevo.servlet;
import java.io.IOException;
import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.nevo.model.User;
import cn.nevo.service.UserService;
@SuppressWarnings("serial")
public class LoginServlet extends HttpServlet {
private User user;
public User getUser() {
return user;
}
@Resource
public void setUser(User user) {
this.user = user;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
user.setUsername(request.getParameter("username"));
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
UserService userService = (UserService)ctx.getBean("userService");
userService.add(user);
}
}
bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">
<!--
隐式注册 post-processors 包括了
AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor,
也包括了前面提到的 RequiredAnnotationBeanPostProcessor。处理我们配置的annotation
-->
<context:annotation-config />
<!--
要检测这些类并注册相应的bean,需要在XML中包含以下元素,其中'basePackage'是类的公共父包
(或者可以用逗号分隔的列表来分别指定包含各个类的包)。
-->
<context:component-scan base-package="cn.nevo" />
<!-- 从Tomcat配置的JNDI服务获取数据源-->
<!--
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jndi"/>
</bean>
-->
<!-- Spring 2.0为获取J2EE资源提供了一个jee命名空间,通过jee命名空间,可以有效地简化J2EE资源的引用。 -->
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jndi"/>
</beans>
index.jsp
<body>
<form action="loginServlet" method="post">
UserName:<input type="text" name="username">
<input type="submit" value="Login">
</form>
</body>
相关推荐
自己总结的三种使用方式,对比来看选择最适合你的方式
tomcat上配置的JNDI数据源的几种方式
在Tomcat配置JNDI数据源的三种方式
TOMCAT8 JNDI对用户名和密码加密
Tomcat jndi 配置数据源过程 Tomcat jndi 配置数据源过程 Tomcat jndi 配置数据源过程 Tomcat jndi 配置数据源过程
根据项目名自动生成 JNDI 配置文件,使程序员从手动配置JNDI数据源中解脱出来。 使用说明: 1、把“TomcatJNDI.war”文件放入 tomcat 的 webapps 文件夹下; 2、启动tomcat,在地址栏上输入:...
自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。
NULL 博文链接:https://buliedian.iteye.com/blog/858026
Tomcat配置JNDI数据源的N种方法
tomcat配置jndi几个方式
tomcat中配置jndi 数据源!!!
Tomcat6+spring+jndi配置数据源说明.docx
Tomcat6.0 JNDI数据源经典实例,里面JAR包,配置文件,数据源都配置好了,sql语句已经打包好了,直接可以建表的。
Tomcat_5配置JNDI数据源
配置JNDI数据源 spring tomcat
Springmvc +JNDI 在Tomcat下 配置数据源 一、 简介 二、 tomcat配置jndi有三种方式。...三、 数据源配置在Tomcat/conf/ context.xml 文件或者 server.xml 文件 中的区别 四、 常见的报错及解决方案
如何使用JNDI数据源,Tomcat数据源配置
java中使用tomcat提供的JNDI数据源
Tomcat中配置jndi数据源连接池(自己写的) 做过实用 没有问题
在Tomcat配置数据源有多种方法,这里主要详细介绍通过JNDI来配置数据源.在实际项目中经常用到.