读书人

100分求解一弱智有关问题!纠结了好些

发布时间: 2012-02-23 22:01:36 作者: rapoo

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 code
<?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>



【applicationContext.xml】:
XML code
<?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> 



【beans.xml】自己加的,配置视图解析器和DAO.class
XML code
<?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>

【index.jsp 中action="login.do",下面是login.do的controller:LoginController】

Java code
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);    }}


【UserDAO类】
Java code
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);    }} 


貌似是没连接上数据库,我把dataSource随便改下还是报这个错!

[解决办法]
一般查询再删除
User user = userDao.load(1001,User.class);
userDao.delete(user);



getHibernateTemplate()没得到HibernateTemplate对象
[解决办法]
你用什么数据库?驱动对没?
[解决办法]
你用jdbc连看行不行,不行的话就说明是配置有错了。。

Class.forName("com.mysql.jdbc.Driver");
Connection con = DrvierManager.getConnection("jdbc:mysql://localhost:3306/spring","root","");



[解决办法]
探讨

你用什么数据库?驱动对没?

[解决办法]
你的数据库没有设置密码。

你在数据库里设置一个密码,然后配置过来~~

试试吧~
[解决办法]
空指针异常,如果启动服务没有报出,这个问题很有可能是某些对象在使用前未实例化,看看你的userDao是否已经实例化了,而且是在你调用它方法前实例化。
[解决办法]
getHibernateTemplate().delete(persistentInstance);这里打断点,调试,应该是hibernateTemplate为空,没配置好
[解决办法]
= = 。。
Java code
 UserDAO userDao=new UserDAO();
[解决办法]
Java code
<property name="password" value=""></property>
[解决办法]
问题太多了,空指针异常是因为没有获取数据库连接,你在Controller层直接用实例化的userDao去调用delete方法,怎么可能去获得数据库的联接呢? 因为你是用spring配置的,所以你必须通过spring获得userDao. 然后还有那个spring的配置,没有配置正确。
问题太多,建议你在网上找个正确的配置对比下。
[解决办法]
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
在哪里?
[解决办法]
探讨
引用:

问题太多了,空指针异常是因为没有获取数据库连接,你在Controller层直接用实例化的userDao去调用delete方法,怎么可能去获得数据库的联接呢? 因为你是用spring配置的,所以你必须通过spring获得userDao. 然后还有那个spring的配置,没有配置正确。
问题太多,建议你在网上找个正确的配置对比下。

这样改了……

[解决办法]
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);
}
}

你既然这样做,还用个啥Spring哟。
[解决办法]
你这里使用的UserDAO,是你自己手动new的,有被Spring管理吗?

读书人网 >J2EE开发

热点推荐