这儿的jdbcTemplate不能用注解@Autowired来指定,因为在spring-servlet.xml文件中已经指定了扫描包为"com.spring",而jdbcTemplate的包为“org.springframework.jdbc.core.JdbcTemplate”,所以会扫描不到JdbcTemplate的。在spring-servlet.xml已经通过bean的方式,将数据源注入JDBC模板。
LoginController.java类
1 package com.spring.controller; 2 3 import java.util.HashMap; 4 import java.util.List; 5 import java.util.Map; 6 7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.stereotype.Controller; 9 import org.springframework.web.bind.annotation.RequestMapping; 10 import org.springframework.web.servlet.ModelAndView; 11 import com.spring.db.UserDao; 12 import com.spring.model.UserVO; 13 14 @Controller 15 public class LoginController { 16 17 @Autowired 18 private UserDao userDao; 19 @SuppressWarnings("unchecked") 20 21 @RequestMapping(value="/select.do") 22 public ModelAndView selectAll(){ 23 24 @SuppressWarnings("rawtypes") 25 Map model=new HashMap(); 26 27 List<UserVO> userVO=userDao.find(); 28 29 model.put("uservo", userVO); 30 31 return new ModelAndView("userInfo",model); 32 } 33 }
LoginController.java@Autowired根据字面意思可以很快理解,就是自动配置。有@Autowired注解的变量,会按照扫描路径进行查找文件并且自动配置信息。如果把userDao的注解@Autowired注解注释掉,也可以通过bean来实现相同的效果,首先在LoginController类里把userDao进行setter,如:
public void setUserDao(UserDao userDao) { this.userDao = userDao; }
然后再在spring-servlet.xml里面添加如下bean信息:
<bean class="com.spring.controller.LoginController"> <property ref="userDao"></property> </bean>
userInfo.jsp类
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <%@page import="com.spring.model.UserVO"%> 3 <% 4 @SuppressWarnings("unchecked") 5 /* 6 *这儿是合法的,根据com.spring.db.controller.LoginController中handleRequest的返回数据类型进行设置的。 7 */ 8 List<UserVO> str= (List<UserVO>)request.getAttribute("uservo"); 9 %> 10 11 <html> 12 <head> 13 <title>result</title> 14 </head> 15 16 <body> 17 <table> 18 <tr> 19 <td >编号</td> 20 <td >姓名</td> 21 <td >年龄</td> 22 </tr> 23 <% 24 for(UserVO user:str){ 25 %> 26 <tr> 27 <td><%=user.getId() %></td> 28 <td><%=user.getName() %></td> 29 <td><%=user.getPwd() %></td> 30 </tr> 31 <% 32 } 33 %> 34 </table> 35 </body> 36 </html>