【求助】Servlet里面一调用Dao里的某个方法就出错! servletstruts数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 jdbcTemplate不为空啊,输出过了。 jdbcTemplate不为空啊,输出过了。不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗? "select * from Discipline where Dis_AcademyID = '"+id+"'";"select * from Discipline"; 试试看看。 jdbcTemplate不为空啊,输出过了。不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?jdbcTemplate一定是null。如果用的spring的话就简单,把jdbcTemplate注入进来就可以了。 jdbcTemplate不为空啊,输出过了。不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?在Servlet里调用的时候确实为空,在Action里调用才不为空,这到底什么情况啊。 jdbcTemplate不为空啊,输出过了。不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?在Servlet里调用的时候确实为空,在Action里调用才不为空,这到底什么情况啊。如果你用的spring注入jdbcTemplate那原因很简单,因为你的servlet不是由spring管理的,所以spring就不能往servlet里注入对象,而你的action是spring管理的,所以可以注入成功。 jdbcTemplate不为空啊,输出过了。不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?在Servlet里调用的时候确实为空,在Action里调用才不为空,这到底什么情况啊。如果你用的spring注入jdbcTemplate那原因很简单,因为你的servlet不是由spring管理的,所以spring就不能往servlet里注入对象,而你的action是spring管理的,所以可以注入成功。那我要怎么解决这个问题?我试了一个方法,就是在Action里写一个方法,用dao先查询好数据,然后放到list里面,方法的返回值就是这个list,然后我在Servlet里new一个这个Action类,然后在Servlet里调用Action的那个方法,让其返回list结果,这样还是不行。。 在Action里写一个方法,用dao先查询好数据,然后放到list里面,方法的返回值就是这个list,然后我在Servlet里new一个这个Action类,然后在Servlet里调用Action的那个方法,让其返回list结果,这样还是不行,错误就错在调用Dao方法的语句上,int size = disciplineDao.findbyid(id).size();。而在Action中调用这个方法,是没错的。 你这样做必须不行啊,行就有鬼了!你还是那个问题,你在servlet里new这个action,那么你action的对象就不再是spring管理的,而是你自己管理的,spring就不能给action注入jdbcTemplate了啊!你让spring帮你管理action是因为你加里一个包:struts2-spring-plugin,有这个包才能做到,那么如果你想让spring帮你管理servlet对象,也一样,加一个servlet和spring兼容的插件包,不过提前说明,这个我没试过,只是在我印象中有这么一个插件包。你搜一下看看有没有吧。另外,如果你想通过你刚才的方式来做的话,你可以在servlet里调用action的方法只不过调用的使用不要去new那个action,你可以从spring的applicationContext里去拿,这样spring就可以成功注入了 我用spring注入的方法,在xml中添加了这个bean。<bean id="disciplineDaoBean" class="com.dao.impl.DisciplineDao"> <property name="msg" value="Hello World!" /></bean> 然后在servlet中,对disciplineDao对象进行引用。ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/*.xml"); BeanFactory factory = context;DisciplineDao disciplineDao = (DisciplineDao)factory.getBean("disciplineDaoBean") ; System.out.println(disciplineDao.getMsg());Tomcat启动过程没出问题。就是在触发事件,调用到这个servlet的时候,出错了。以下是错误信息(部分):No unique bean of type [com.dao.impl.DisciplineDao] is defined: expected single matching bean but found 2: [disciplineDao, disciplineDaoBean]然后我在一个普通的java类里面,测试了一下,可以输出disciplineDao中msg的数据的。请问这是什么原因呢,怎么解决?说说你们的看法吧,为这个问题我已经弄了一整天了,现在也睡不着啊。 beans.xml贴出来对bean的管理是 自动的? public List<Discipline> findbyid(int id){ List<Discipline> list = new ArrayList<Discipline>; sql = "select * from Discipline where Dis_AcademyID = "+id+""; try { list = jdbcTemplate.queryForList(sql); } catch (Exception e) { e.printStackTrace(); return null; } return list; }打断点看看jdbcTemplate是否为空,如果为空就没注入看这个:!!!!http://blog.knowsky.com/187597.htm 给你的jdbcTemplate 初始化一下就可以了。可以在servlet获取WebApplicationContext ,然后获取bean 为你的jdbcTemplate赋值,就可以调用了。 http://blog.csdn.net/xwl617756974/article/details/7451773参考一下吧 spring比servlet先加载就行 spring里设置default-init-lazy=false 好像是这个属性 不对 上面的不行 不是Spring管的 你new出来的对象肯定不行通过applicationContext获得的才行 我刚才在servlet里面直接写JDBC了,因为操作不多,所以打算都写JDBC算数了。谢谢你们啊。 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext_yisuojob.xml"); PhotocheckService impl=(PhotocheckService) context.getBean("updatePhotocheck");今天我与遇到了一模一样的问题。在Service里面想调用接口实现类,结果一直报空指针异常。不能new 接口实现类。用以上方法我最终成功调用接口实现类。 是在Servlet里面想调用接口实现类,不是Service,笔误 用java怎么开发一个视频网站 struts-config.xmls配置跳不到相应的action...请高手解答下 哪位高手能帮帮我,我会深表感谢的 怎样让用户重新换个帐号登录的时候看到新的帐号 请教大家一个比较神奇的问题。。。 <jsp:include <jsp:param value=方法名 结果是什么?为什么? 测试才发现的问题! 有谁知道这样的怪问题?急切想知道答案!! 用户登录注销问题 java从零到企业级电商项目实战 爱不鸟了,谁来帮我看看啊~~~ 请教图片服务器上传问题
jdbcTemplate不为空啊,输出过了。
jdbcTemplate不为空啊,输出过了。
不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?
jdbcTemplate不为空啊,输出过了。
不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?jdbcTemplate一定是null。如果用的spring的话就简单,把jdbcTemplate注入进来就可以了。
jdbcTemplate不为空啊,输出过了。
不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?在Servlet里调用的时候确实为空,在Action里调用才不为空,这到底什么情况啊。
jdbcTemplate不为空啊,输出过了。
不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?在Servlet里调用的时候确实为空,在Action里调用才不为空,这到底什么情况啊。如果你用的spring注入jdbcTemplate那原因很简单,因为你的servlet不是由spring管理的,所以spring就不能往servlet里注入对象,而你的action是spring管理的,所以可以注入成功。
jdbcTemplate不为空啊,输出过了。
不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?在Servlet里调用的时候确实为空,在Action里调用才不为空,这到底什么情况啊。如果你用的spring注入jdbcTemplate那原因很简单,因为你的servlet不是由spring管理的,所以spring就不能往servlet里注入对象,而你的action是spring管理的,所以可以注入成功。那我要怎么解决这个问题?
我试了一个方法,就是在Action里写一个方法,用dao先查询好数据,然后放到list里面,方法的返回值就是这个list,然后我在Servlet里new一个这个Action类,然后在Servlet里调用Action的那个方法,让其返回list结果,这样还是不行。。
而在Action中调用这个方法,是没错的。
你让spring帮你管理action是因为你加里一个包:struts2-spring-plugin,有这个包才能做到,那么如果你想让spring帮你管理servlet对象,也一样,加一个servlet和spring兼容的插件包,不过提前说明,这个我没试过,只是在我印象中有这么一个插件包。你搜一下看看有没有吧。
另外,如果你想通过你刚才的方式来做的话,你可以在servlet里调用action的方法只不过调用的使用不要去new那个action,你可以从spring的applicationContext里去拿,这样spring就可以成功注入了
<property name="msg" value="Hello World!" />
</bean> 然后在servlet中,对disciplineDao对象进行引用。ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/*.xml");
BeanFactory factory = context;
DisciplineDao disciplineDao = (DisciplineDao)factory.getBean("disciplineDaoBean") ;
System.out.println(disciplineDao.getMsg());Tomcat启动过程没出问题。
就是在触发事件,调用到这个servlet的时候,出错了。
以下是错误信息(部分):No unique bean of type [com.dao.impl.DisciplineDao] is defined: expected single matching bean but found 2: [disciplineDao, disciplineDaoBean]
然后我在一个普通的java类里面,测试了一下,可以输出disciplineDao中msg的数据的。
请问这是什么原因呢,怎么解决?
说说你们的看法吧,为这个问题我已经弄了一整天了,现在也睡不着啊。
对bean的管理是 自动的?
List<Discipline> list = new ArrayList<Discipline>;
sql = "select * from Discipline where Dis_AcademyID = "+id+"";
try {
list = jdbcTemplate.queryForList(sql);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return list;
}
打断点看看jdbcTemplate是否为空,如果为空就没注入
看这个:!!!!
http://blog.knowsky.com/187597.htm
参考一下吧
通过applicationContext获得的才行
我刚才在servlet里面直接写JDBC了,因为操作不多,所以打算都写JDBC算数了。
谢谢你们啊。
PhotocheckService impl=(PhotocheckService) context.getBean("updatePhotocheck");今天我与遇到了一模一样的问题。在Service里面想调用接口实现类,结果一直报空指针异常。不能new 接口实现类。用以上方法我最终成功调用接口实现类。