空指针异常

来源:6-4 项目作业

慕斯4002519

2019-03-14 17:04:05

java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at com.imooc.global.CoreServlet.service(CoreServlet.java:54)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at com.imooc.global.EncodingFilter.doFilter(EncodingFilter.java:20)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
 at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
com.imooc.controller.CategoryController
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
 at com.imooc.controller.CategoryController.list(CategoryController.java:26)
 ... 30 more


从昨天下午到现在了,还是找不到问题所在。他只说个空指针异常,也不说具体是哪得问题,老师他那个30more如何看到?

或者我能把整体传上去吗?这样问效率太低了

package com.imooc.controller;


import com.imooc.entity.Category;
import com.imooc.service.CategoryService;

import com.imooc.service.impl.CategoryServiceImpl;

import org.springframework.stereotype.Controller;


import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@Controller("categoryController")
public class CategoryController {

   @Resource
   private CategoryService categoryService;
   public void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       System.out.println(categoryService+"2s2s3");
       List<Category>categoryList = categoryService.selectAll();
       System.out.println(categoryList);
       request.setAttribute("categoryList",categoryList);
       request.getRequestDispatcher("/WEB-INF/categoryList.jsp").forward(request,response);
   }
}

package com.imooc.dao;

import com.imooc.entity.Category;
import org.junit.Test;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.List;

@Repository("categoryDao")
public interface CategoryDao {
   void add(Category category);
   void delete(int id);
   void update(Category category);
   Category selectById(int id);
   List<Category> selectAll();
}


<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.4//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.imooc.dao.CategoryDao">
   <resultMap id="resultMap" type="Category">
       <id column="id" property="id" />
       <result column="name" property="name"/>
       <result column="create_time" property="createTime"/>
       <result column="update_time" property="updateTime"/>
   </resultMap>
   <select id="selectAll" resultMap="resultMap">
       SELECT * FROM category
   </select>
   <insert id="add" useGeneratedKeys="true" keyProperty="id" >
       INSERT  category(name,create_time,update_time)VALUES (#{name},#{createTime},#(updateTime))
   </insert>
   <delete id="delete" >
       DELETE FROM category where id = #{id}
   </delete>
   <update id="update">
       UPDATE table category set name = #{name},create_time = #{createTime} update_time = #{updateTime} WHERE id = #{id}
   </update>
   <select id="selectById" resultMap="resultMap" >
       SELECT * FROM category where id = #{id}
   </select>


</mapper>

<?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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">
   <!-- 使用spring整合Mybatis 连接数据源和自动创建sql工厂类-->
   <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/hosptial?useSSL=false&amp;serverTimezone=Hongkong&amp;CharacterEncoding=utf-8&amp;allowPublicKeyRetrieval=true"/>
       <property name="username" value="root"/>
       <property name="password" value="henxxh002012"/>
   </bean>
   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <property name="dataSource" ref="dataSource"/>
       <property name="typeAliasesPackage" value="com.imooc.entity"/>
   </bean>
   <!--自动扫描dao包下的mapper.xml,使用sqlSessionFactory???-->
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="basePackage" value="com.imooc.dao"/>
       <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
   </bean>
   <!-- 声明式事务 -->
   <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <property name="dataSource" ref="dataSource"/>
   </bean>
   <tx:advice id="txAdvice" transaction-manager="transactionManager">
       <tx:attributes>
           <tx:method name="get*" read-only="true"/>
           <tx:method name="find*" read-only="true"/>
           <tx:method name="search*" read-only="true"/>
           <tx:method name="*" propagation="REQUIRED"/>
       </tx:attributes>
   </tx:advice>
   <aop:config>
       <aop:pointcut id="txPointcut" expression="execution(* com.imooc.service.*.*(..))"/>
       <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
   </aop:config>
   <!-- 全局扫描 -->
   <context:component-scan base-package="com.imooc"/>
   <aop:aspectj-autoproxy/>

</beans>



http://img.mukewang.com/climg/5c8a184b00012a1704930868.jpg

或者老师告诉我把什么修改成什么,如果可以就说明是哪得问题,比如说是数据库连接啊,注入啊,还是哪得问题,之前我发现了url得数据库名写得不对,改完还是不行,如果我把spring.xml得名字改了,会出现异常,说明ClassPathContext这个扫描了spring.xml,应该是从这出现了问题,我该如何测试出下一步是哪出了问题,在这个地方卡了好久了,没办法进行下面得啊,这还没有进行切面操作什么得,就仅仅是spring得IOC啊·········我在上个问题提出了一些可能性,麻烦老师看看,


写回答

2回答

好帮手慕阿莹

2019-03-15

1、建议同学换一种方式,用

ServletContext servletContext = this.getServletContext() ;
WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext);
categoryList= (categoryList) context.getBean("categoryList");

这种方式去获取一下,或者通过new 一个获取一下试试。

2、两天,建议通常写个测试方法,调用一下用注解注入的Dao层看看行不行,有没有注入进去

3、同学看一下,你的项目的web模块儿中,是否有依赖进去这个service层的jar包。

4、关于查看30more中的内容,同学看一下有没有像加号一样的按钮呢?如果有点开试试。但是报错的关键信息应该是不在这里的。

祝学习愉快!

0

慕斯4002519

提问者

2019-03-14

http://img.mukewang.com/climg/5c8a19790001377807280534.jpg

在spring.xml形成得图,是否会有帮助

0

0 学习 · 4317 问题

查看课程