springMVC 注入对象失败

最近有空想学着自己搭建一个SpringMVC的项目,因为之前都没咋学习相关的知识,所以在搭建过程中遇到了很多问题,其中第一问题就折腾了我好长时间,现在把它记录下来。
我是跟着这个博客开始进行搭建的, http://jinnianshilongnian.iteye.com/blog/1594806
1、下载所需的包
spring相关的jar包,可以从这个网址进行下载 http://repo.spring.io/release/org/springframework/spring/
需要添加Apache commons logging日志,下载网址 http://commons.apache.org/proper/commons-logging/download_logging.cgi
需要添加jstl标签库支持,下载网址(这个下载的时候需要看清楚,容易下错): http://www.downcc.com/soft/35705.html
2、就开始跟着博客配置环境,具体怎么配置,那个博客里边写的很清楚,我就只截一下我配置好了之后的图。
web.xml
servlet.xml的配置
controller
hello.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>Hello World</title>  
</head>  
<body>  
${message}  
</body>  
</html>  
我的页面上也显示出了"hello world"的信息,表明我配置成功了。
但是 这只是个简单的页面跳转,我希望能够将数据库连接起来,最简单的就是使用 spring的jdbcTempate,又是一通百度,开始进行配置。
我使用的是mySQL数据库

连接数据库的jar包:
mysql-connector-java-5.1.30-bin.jar
实体类:
public class Student extends JdbcDaoSupport {

	private String sno;
	
	private String sname;
	
	private String ssex;
	
	private String sbirthday;
	
	private String sclass;

	public String getSno() {
		return sno;
	}

	public void setSno(String sno) {
		this.sno = sno;
	}

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public String getSsex() {
		return ssex;
	}

	public void setSsex(String ssex) {
		this.ssex = ssex;
	}

	public String getSbirthday() {
		return sbirthday;
	}

	public void setSbirthday(String sbirthday) {
		this.sbirthday = sbirthday;
	}

	public String getSclass() {
		return sclass;
	}

	public void setSclass(String sclass) {
		this.sclass = sclass;
	}
}
Dao
public class StudentDao{

	private JdbcTemplate jdbcTemplate;
	
    public JdbcTemplate getJdbcTemplate() {
		return jdbcTemplate;
	}


	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}


	public Collection<Student> doquery() {  
        String sql = "SELECT SNO,SNAME,SSEX,SBIRTHDAY,CLASS FROM student";  
        return jdbcTemplate.query(sql, new RowMapper() {  
  
            public Object mapRow(ResultSet rs, int num) throws SQLException {  
            	Student stu = new Student();  
                stu.setSno(rs.getString("SNO"));
                stu.setSname(rs.getString("SNAME"));
                stu.setSsex(rs.getString("SSEX"));
                stu.setSbirthday(rs.getString("SBIRTHDAY"));
                stu.setSclass(rs.getString("CLASS"));
                return stu;  
            }
        });  
    }  
}
controller
public class HelloWorldController implements Controller {  
	
	private StudentDao studentDao;

	public StudentDao getStudentDao() {
		return studentDao;
	}

	public void setStudentDao(StudentDao studentDao) {
		this.studentDao = studentDao;
	}


	@Override  
    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception { 
		ModelAndView mv = new ModelAndView(); 
    	Collection<Student>  stuList =  studentDao.doquery();
    	mv.addObject("stuList", stuList);
    	mv.setViewName("hello");
       return mv;  
    }
} 
需要在servlet.xml中添加配置
<!-- 获取数据源 -->  
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>  
     <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" />
     <property name="username" value="root" />  
     <property name="password" value="root" /> 
   </bean>  
   
   <!-- jdbc注入 -->
  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
	<property name="dataSource" ref="dataSource"></property> 
  </bean>
  
     <!-- dao注入 -->
    <bean id="studentDao" class="cn.javass.chapter2.dao.StudentDao">  
       <property name="jdbcTemplate">
         <ref bean="jdbcTemplate"></ref>
       </property>
    </bean>
<!--定义控制器-->  
    <bean id="helloController" class="cn.javass.chapter2.controller.HelloWorldController">  
       <property name="studentDao">  
           <ref bean="studentDao"/>
       </property> 
     </bean>   
配完之后 运行,结果报空指针,debug一看,发现是我的Controller里面的studentDao没有注入成功,一直为空,我是左看右看啊,感觉都配对了,但是就是没有注入进去。然后我就用ClassPathXmlApplicationContext 的方式,加载 了一下我的配置文件
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-mvc.xml");  
        context.start();  
        HelloWorldController hController =  (HelloWorldController) context.getBean("helloController");
发现这个Controller里面的studentDao成功注入了,这证明我写是没有写错,是哪里配置错了。后来发现是因为

解决方式,上面那个就不用了,直接删掉,下面那配置上studentDao.

运行结果:

一路百度,不容易啊


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值