这是dao代码IBookDAOImpl代码package com.niit.dao.impl;import java.util.List;import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.niit.dao.IBookDAO;
import com.niit.vo.Book;
import com.niit.vo.Bookcat;public class IBookDAOImpl extends HibernateDaoSupport implements IBookDAO {
public IBookDAOImpl() {
System.out.println("构造方法 IBookDAOImpl");
} public boolean delete(int id) {
// TODO Auto-generated method stub
return false;
} public boolean insert(Book b) {
// TODO Auto-generated method stub
return false;
} public List<Book> queryAll() {
System.out.println("111111111");
String hql = "FROM Book AS b";
List list = (List<Book>)super.getSession().createQuery(hql).list();
System.out.println("2222222222");
System.out.println(list.size());
return list;
} public Book selectById(int id) {
// TODO Auto-generated method stub
return null;
} public boolean update(Book b) {
// TODO Auto-generated method stub
return false;
}
public List<Book> queryByBookcat(Bookcat bookcat) {
System.out.println("11111111");
String hql = "FROM Book AS b where b.catid = ?";
Query q = super.getSession().createQuery(hql);
q.setInteger(0, bookcat.getCatid());
List<Book> list = q.list();
System.out.println("2222222");
return list;
}
}
IBookcatDaoImpl代码package com.niit.dao.impl;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.niit.dao.IBookcatDao;
import com.niit.vo.Book;
import com.niit.vo.Bookcat;public class IBookcatDaoImpl extends HibernateDaoSupport implements IBookcatDao {
public IBookcatDaoImpl() {
System.out.println("构造方法 IBookcatDaoImpl");
} public void delete(int id) throws Exception {
// TODO Auto-generated method stub } public void insert(Bookcat bc) throws Exception {
// TODO Auto-generated method stub } public List<Bookcat> queryAll() throws Exception {
String hql = "FROM Bookcat AS bc";
List<Bookcat> list = (List<Bookcat>)super.getSession().createQuery(hql).list();
System.out.println(list.size());
return list;
} public Bookcat queryById(int itemid) throws Exception {
// TODO Auto-generated method stub
return null;
} public void update(Bookcat bc) throws Exception {
// TODO Auto-generated method stub }}
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.niit.dao.IBookDAO;
import com.niit.vo.Book;
import com.niit.vo.Bookcat;public class IBookDAOImpl extends HibernateDaoSupport implements IBookDAO {
public IBookDAOImpl() {
System.out.println("构造方法 IBookDAOImpl");
} public boolean delete(int id) {
// TODO Auto-generated method stub
return false;
} public boolean insert(Book b) {
// TODO Auto-generated method stub
return false;
} public List<Book> queryAll() {
System.out.println("111111111");
String hql = "FROM Book AS b";
List list = (List<Book>)super.getSession().createQuery(hql).list();
System.out.println("2222222222");
System.out.println(list.size());
return list;
} public Book selectById(int id) {
// TODO Auto-generated method stub
return null;
} public boolean update(Book b) {
// TODO Auto-generated method stub
return false;
}
public List<Book> queryByBookcat(Bookcat bookcat) {
System.out.println("11111111");
String hql = "FROM Book AS b where b.catid = ?";
Query q = super.getSession().createQuery(hql);
q.setInteger(0, bookcat.getCatid());
List<Book> list = q.list();
System.out.println("2222222");
return list;
}
}
IBookcatDaoImpl代码package com.niit.dao.impl;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.niit.dao.IBookcatDao;
import com.niit.vo.Book;
import com.niit.vo.Bookcat;public class IBookcatDaoImpl extends HibernateDaoSupport implements IBookcatDao {
public IBookcatDaoImpl() {
System.out.println("构造方法 IBookcatDaoImpl");
} public void delete(int id) throws Exception {
// TODO Auto-generated method stub } public void insert(Bookcat bc) throws Exception {
// TODO Auto-generated method stub } public List<Bookcat> queryAll() throws Exception {
String hql = "FROM Bookcat AS bc";
List<Bookcat> list = (List<Bookcat>)super.getSession().createQuery(hql).list();
System.out.println(list.size());
return list;
} public Bookcat queryById(int itemid) throws Exception {
// TODO Auto-generated method stub
return null;
} public void update(Bookcat bc) throws Exception {
// TODO Auto-generated method stub }}
解决方案 »
- java与VB如何实现编码统一
- 怎么在MyClipse下配置与建立Web project,新建EJB,和新建Servlet以及怎么发布到Tomcat server使之正常运行
- java.io.IOException: Stream closed
- hibernate 跨库查询
- 紧急求助:jxl里写公式时如何调用其他sheet的单元格
- 现在公司做j2ee开发,所用的myeclipse、jdk、mysq、spring、struct、hibernate的主流版本都是什么?
- 怎么让数据库插入数据的时候能够插入一个单引号的一半
- 在ECLIPSE中编写TOMCAT程序,出现如下错误!
- 使用过对象系列化的各位师兄师姐进来帮我解答一个小问题
- 用本机SMTP server和JavaMail发送email中出现的怪问题,请教!
- 基于J2EE的bbs论坛怎么实现
- 用Xstream解析xml转成javabean
<bean id="ibookdaoimpl" class="com.niit.dao.impl.IBookDAOImpl" parent="ibookdao">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate"/>
</property>
</bean>
<bean id="ibookcatdao" class="com.niit.dao.IBookcatDao" abstract="true"></bean>
<bean id="ibookcatdaoimpl" class="com.niit.dao.impl.IBookcatDaoImpl" parent="ibookcatdao">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate"/>
</property>
</bean>
<bean name="/jsp/index" class="com.niit.struts.action.IndexAction">
<property name="ibookdao">
<ref local="ibookdaoimpl"/>
</property>
<property name="ibookcatdao">
<ref local="ibookcatdaoimpl"/>
</property>
</bean>
这是struts-config.xml中的相关配置 <form-beans >
<form-bean name="userForm" type="com.niit.struts.form.UserForm" />
<form-bean name="indexForm" type="org.apache.struts.action.DynaActionForm" /> </form-beans> <action attribute="indexForm" input="/jsp/errors.jsp"
name="indexForm" parameter="status" path="/jsp/index" scope="request"
type="com.niit.struts.action.IndexAction">
<forward name="indexdo" path="/jsp/index.jsp"></forward>
</action>
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.niit.struts.action;import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.actions.DispatchAction;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.niit.dao.IBookDAO;
import com.niit.dao.IBookcatDao;
import com.niit.dao.impl.IBookDAOImpl;
import com.niit.dao.impl.IBookcatDaoImpl;
import com.niit.vo.Book;
import com.niit.vo.Bookcat;/**
* MyEclipse Struts Creation date: 07-02-2007
*
* XDoclet definition:
*
* @struts.action path="/index" name="indexForm" input="/form/index.jsp"
* parameter="status" scope="request" validate="true"
*/
public class IndexAction extends DispatchAction {
private IBookDAO ibookdao;
private IBookcatDao ibookcatdao ; /*
* Generated Methods
*/
public IBookDAO getIbookdao() {
return ibookdao;
}
public IBookcatDao getIbookcatdao() {
return ibookcatdao;
}
public void setIbookcatdao(IBookcatDao ibookcatdao) {
System.out.println("=====set ibookcatdao ========");
this.ibookcatdao = ibookcatdao;
}
public void setIbookdao(IBookDAO ibookdao) {
System.out.println("======set ibookdao ===");
this.ibookdao = ibookdao;
}
/**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward list(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaActionForm indexForm = (DynaActionForm) form;
// 查询信息
// ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
// "applicationContext.xml");
// ibookdao = (IBookDAOImpl)ctx.getBean("ibookdaoimpl");
// ibookcatdao = (IBookcatDaoImpl)ctx.getBean("ibookcatdaoimpl");
List<Book> list = null;
List<Bookcat> all = null;
try {
list = this.ibookdao.queryAll();
all = this.ibookcatdao.queryAll();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("list", list);
request.setAttribute("all", all);
return mapping.findForward("indexdo");
}}
现在的问题是用sping注入不了值,taomcat启动的时候显示两个dao的构造方法和set方法都调用了,但是报空指针错误
构造方法 IBookDAOImpl
构造方法 IBookcatDaoImpl
======set ibookdao ===
=====set ibookcatdao ========
java.lang.NullPointerException
at com.niit.struts.action.IndexAction.list(IndexAction.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.niit.filter.EncodingFilter.doFilter(EncodingFilter.java:21)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:619)
但是如果我在indexaction中不使用set get方法,使用注释的那段代码,即如下代码,直接从配置文件读取,却正常使用,能取出值。 ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
ibookdao = (IBookDAOImpl)ctx.getBean("ibookdaoimpl");
ibookcatdao = (IBookcatDaoImpl)ctx.getBean("ibookcatdaoimpl");
不知道是怎么回事?不知道有没有人知道原因
删除红色 <bean id="ibookcatdaoimpl" class="com.niit.dao.impl.IBookcatDaoImpl" parent="ibookcatdao">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate"/>
</property>
</bean>
这里有问题吧,是不是你struts的配置文件有问题呀。加<controller/>了么?
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in> 这个配置了没有。
还有就是如5喽所说,不清楚lz那么配置有什么特殊用意??
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
<message-resources parameter="com.niit.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>这些都配了
学习spring时候看到的,尝试用一下,
不过按照五楼的改回去了,还是一样的错误 郁闷
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.niit.filter.EncodingFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
web的配置了
<property name="ibookdao">
<ref local="ibookdaoimpl"/>
</property>
<property name="ibookcatdao">
<ref local="ibookcatdaoimpl"/>
</property>
</bean>应该是这个action bean里面那2个没注入成功,试过用<context:annotation-config /> 用annotation注入吗
我奇怪的是 构造方法和set方法都已经调用了。为什么注入不成功呢,我在调用那个查询前加了打印语句,显示两个都是null值
public IBookDAO getIbookdao() {
return ibookdao;
}
public IBookcatDao getIbookcatdao() {
return ibookcatdao;
}
action中写上了
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>