Spring MVC 使用 JNDI 配置的DataSource

稍微看了下,Spring 中JNDI 的使用,弄了个小例子。有很多不完备的地方,以后慢慢看,再改吧。

<一> 技术使用

  • Spring MVC

  • JDBC Template

  • Maven

  • JNDI


<二> 一些配置

  1. Maven POM 配置

    1. spring-context、spring-webmvc、spring-orm、spring-jdbc、mysql-connector-java等

  2. 创建数据库

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 能够查找到该数据源。

<Resource
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<User> 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<User> listUsers = userDao.list();
		ModelAndView model = new ModelAndView("home");
		model.addObject("userList", listUsers);
		return model;
	}
}

5.前端展示部分如下:

<div align="center">
    <h1>Contact List</h1>
    <table border="1">
        <th>No</th>
	<th>Username</th>
	<th>Email</th>
	        	
	    <c:forEach var="user" items="${userList}" varStatus="status">
	    <tr>
	        <td>${status.index + 1}</td>
		<td>${user.username}</td>
		<td>${user.email}</td>				
	    </tr>
            </c:forEach>	        	
    </table>
</div>


<四> 效果如下

一个简陋的页面如下:

Spring MVC 使用 JNDI 配置的DataSource_第1张图片

你可能感兴趣的:(Spring MVC 使用 JNDI 配置的DataSource)