100分求解一弱智问题!纠结了好些天了!高手一定要帮忙啊~~
高手一定帮帮小弟啊!!!
spring+hibernate删除数据
下面是错误代码:
2011-11-10 23:29:17 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet springBeans threw exception
java.lang.NullPointerException
at table.UserDAO.delete(UserDAO.java:21)
at controller.LoginController.handleRequest(LoginController.java:30)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
所有配置文件:
【web.xml】
<?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"> <servlet> <servlet-name>springBeans</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml,/WEB-INF/beans.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springBeans</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" xmlns:mvc="http://www.springframework.org/schema/mvc"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF-8"> </property> <property name="username" value="root"></property> <property name="password" value=""></property> </bean> <!-- 配置spring的sessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"></ref> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> </props> </property> <property name="mappingResources"> <list> <value>table/User.hbm.xml</value> <value>table/Dept.hbm.xml</value></list> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean></beans>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans> <!-- 视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property> <property name="prefix"><value>/</value></property> <property name="suffix"><value>.jsp</value></property> </bean> <bean name="/login.do" id="login.do" class="controller.LoginController"> <property name="successView"><value>userInfo</value></property> </bean> <bean id="userDao" class="table.UserDAO"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <bean id="deptDao" class="table.DeptDAO"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean></beans>
package controller;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;import table.User;import table.UserDAO;public class LoginController implements Controller { private String successView; public void setSuccessView(String successView){ this.successView=successView; } public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { UserDAO userDao=new UserDAO(); String id=request.getParameter("id"); String password=request.getParameter("password"); User user=new User(); user.setId(1001); userDao.delete(user); return new ModelAndView(successView); }}package table;import java.util.List;import org.hibernate.LockMode;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.orm.hibernate3.HibernateTemplate;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class UserDAO extends HibernateDaoSupport { protected void initDao() { } public void save(User transientInstance) { getHibernateTemplate().save(transientInstance); } public void delete(User persistentInstance) { getHibernateTemplate().delete(persistentInstance); } public List findById( java.lang.Integer id) { List instance =getHibernateTemplate().find("from User as u where u.id=1001"); return instance; } public List findByExample(User instance) { List results = getHibernateTemplate().findByExample(instance); return results; } public List findByProperty(String propertyName, Object value) { String queryString = "from User as model where model." + propertyName + "= ?"; return getHibernateTemplate().find(queryString, value); } public List findAll() { String queryString = "from User"; return getHibernateTemplate().find(queryString); }}
UserDAO userDao=new UserDAO();
[解决办法]
<property name="password" value=""></property>
[解决办法]
问题太多了,空指针异常是因为没有获取数据库连接,你在Controller层直接用实例化的userDao去调用delete方法,怎么可能去获得数据库的联接呢? 因为你是用spring配置的,所以你必须通过spring获得userDao. 然后还有那个spring的配置,没有配置正确。
问题太多,建议你在网上找个正确的配置对比下。
[解决办法]
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
在哪里?
[解决办法]