稍微看了下,Spring 中JNDI 的使用,弄了个小例子。有很多不完备的地方,以后慢慢看,再改吧。
技术使用
Spring MVC
JDBC Template
Maven
JNDI
一些配置
Maven POM 配置
spring-context、spring-webmvc、spring-orm、spring-jdbc、mysql-connector-java等
创建数据库
create database usersdb;
CREATE TABLE `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
`email` varchar(45) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin1
3.在Tomcat 中配置JNDI 数据源
也可以在其它地方配置,比如web.xml 中配置。这个配置,是为了JNDI 能够查找到该数据源。
name="jdbc/UsersDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/usersDB"
username="XXX"
password="YYY"
/>
说明:Resource 的name 属性 "jdbc/UserDB" 将会在Spring-MVC 中使用到。
说明:所谓的在tomcat 中配置,可以是在tomcat 的 context.xml 中,添加该Resource entry。
Java 开发
1.Mode, user.java
public class User {
private int id;
private String username;
private String password;
private String email;
// getter setter
}
2.DAO 类
public interface UserDAO {
public List list();
}
可以用JDBC Template 实现该数据操作,并作操作扩展。
3. 在Spring MVC 中引入JNDI 数据源
由于我使用的是Spring 4, 我倾向于Java Config 的模式,所以引入JNDI 的方法如下:
@Bean
public UserDAO getUserDao() throws NamingException {
JndiTemplate jndiTemplate = new JndiTemplate();
DataSource dataSource =(DataSource) jndiTemplate.lookup("java:comp/env/jdbc/UsersDB");
return new UserDAOImpl(dataSource);
}
说明 comp/env 这个前缀是有必要的。
4.Controller 类
@Controller
public class HomeController {
@Autowired
private UserDAO userDao;
@RequestMapping(value="/")
public ModelAndView home() throws IOException{
List listUsers = userDao.list();
ModelAndView model = new ModelAndView("home");
model.addObject("userList", listUsers);
return model;
}
}
5.前端展示部分如下:
Contact List
${status.index + 1} | ${user.username} | ${user.email} |
效果如下
一个简陋的页面如下: