空指针异常

问题描述

请各位帮我看看问题到底出在哪里2011-01-25 10:25:00,296 WARN [org.apache.struts.action.RequestProcessor] - Unhandled Exception thrown: class java.lang.NullPointerException2011-1-25 10:25:00 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet action threw exceptionjava.lang.NullPointerExceptionat main.com.rpc.servlet.TestLogonAction.doCheckUser(TestLogonAction.java:25)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:585)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 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:128)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:293)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)at java.lang.Thread.run(Thread.java:595)Action类import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import main.com.rpc.ajaxservice.AjaxServiceCheckUser;import main.com.rpc.servlet.pojo.Userconfiginfo;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;public class TestLogonAction extends DispatchAction {private AjaxServiceCheckUser checkUserService;public ActionForward doCheckUser(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {boolean flag = false;String name = request.getParameter("name");Userconfiginfo userConfig = new Userconfiginfo();userConfig.setLOGINACCOUNT(name);if (!"".equals(name) && name != null) {flag = checkUserService.doCheckUser(userConfig);}return null;}public AjaxServiceCheckUser getCheckUserService() {return checkUserService;}public void setCheckUserService(AjaxServiceCheckUser checkUserService) {this.checkUserService = checkUserService;}}Service类package main.com.rpc.ajaxservice;import main.com.rpc.ajaxdao.AjaxDaoCheckUser;import main.com.rpc.servlet.pojo.Userconfiginfo;public class AjaxServiceCheckUser {private AjaxDaoCheckUser ajaxdaoCheckUse;public boolean doCheckUser(Userconfiginfo config) {boolean flag = false;try{flag = ajaxdaoCheckUse.doCheckUser(config);}catch(Exception e){e.printStackTrace();}return flag;}public AjaxDaoCheckUser getAjaxdaoCheckUse() {return ajaxdaoCheckUse;}public void setAjaxdaoCheckUse(AjaxDaoCheckUser ajaxdaoCheckUse) {this.ajaxdaoCheckUse = ajaxdaoCheckUse;}}Dao类package main.com.rpc.ajaxdao;import java.sql.SQLException;import java.util.List;import main.com.rpc.servlet.pojo.Userconfiginfo;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class AjaxDaoCheckUser extends HibernateDaoSupport {private static final Log log = LogFactory.getLog(AjaxDaoCheckUser.class);private Session session = null;private Query qr = null;private List<Userconfiginfo> list = null;public boolean doCheckUser(Userconfiginfo config) throws SQLException {boolean flagResult = false;String hql = " From Userconfiginfo Where LOGINACCOUNT=?";try {//String[] userInfo = new String[2];userInfo[0] = config.getLOGINACCOUNT();System.out.println(this.getHibernateTemplate());List userList = this.getHibernateTemplate().find(hql, userInfo);if (userList.size() > 0) {flagResult = true;}} catch (Exception e) {log.error("查询名字出错", e);throw new SQLException("查询名字出错");} finally {try {if (session != null) {session.close();}} catch (Exception e) {throw new SQLException("查询名字出错");}}return flagResult;}}struts配置文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config> <form-beans> <form-bean name="StuInfoForm" type="main.com.rpc.web.StuInfoForm"></form-bean> <form-bean name="userForm" type="main.com.rpc.servlet.UserForm"></form-bean> </form-beans> <action-mappings> <action path="/login" parameter="method" name="StuInfoForm" type="org.springframework.web.struts.DelegatingActionProxy"> <forward name="query" path="/query.jsp"></forward> <forward name="toAdd" path="/add.jsp"></forward> <forward name="toModify" path="/modify.jsp"></forward> </action> <action attribute="userForm" input="/ajax.jsp" name="userForm" parameter="operate" path="/user" scope="request" type="main.com.rpc.servlet.TestLogonAction"> <forward name="login" path="/login.jsp" /> </action> </action-mappings> <controller processorClass="main.com.rpc.web.RequestAction"></controller> <message-resources parameter="main.com.rpc.web.ApplicationResources" /></struts-config>spring 配置文件<?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: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-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"><bean id="mydb" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName"><value>oracle.jdbc.pool.OracleConnectionPoolDataSource</value></property><property name="url"><value>jdbc:oracle:thin:@localhost:1521:orcl</value></property><property name="username"><value>leadermis</value></property><property name="password"><value>leadermis</value></property></bean><!-- 事务AOP --><!-- 配置sessionFactory <bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation"value="/WEB-INF/classes/main/hibernate.cfg.xml"></property></bean>--><bean id="mySessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource"><ref bean="mydb" /></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop></props></property><property name="mappingResources"><list><value>main/com/rpc/persist/user.hbm.xml</value><value>main/com/rpc/servlet/pojo/userconfiginfo.hbm.xml</value></list></property></bean><bean id="StuInfoDAO" class="main.com.rpc.persist.StuInfoDAO"><property name="sessionFactory"><ref bean="mySessionFactory" /></property></bean><!-- 实现类 --><bean id="StuInfoHandler" class="main.com.rpc.biz.StuInfoHandlerImpl"><property name="stuinfoDao" ref="StuInfoDAO"></property></bean><!-- action --><bean name="/login" class="main.com.rpc.web.StuInfoAction"><property name="stuInfoHandler" ref="StuInfoHandler"></property></bean><bean id="ajaxDao" class="main.com.rpc.ajaxdao.AjaxDaoCheckUser"><property name="sessionFactory" ><ref bean="mySessionFactory"/></property></bean><bean id="ajaxService" class="main.com.rpc.ajaxservice.AjaxServiceCheckUser"><property name="ajaxdaoCheckUse" ref="ajaxDao"></property></bean><bean name="/user" class="main.com.rpc.servlet.TestLogonAction"><property name="checkUserService" ref="ajaxService"></property></bean> <!-- 配置事务管理器 --><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="mySessionFactory"></property></bean><!-- 配置事务的传播特性 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="add*" propagation="REQUIRED"/><tx:method name="del*" propagation="REQUIRED"/><tx:method name="modify*" propagation="REQUIRED"/><tx:method name="*" read-only="true"/></tx:attributes></tx:advice><!-- 哪些方法参与事务 --><aop:config><aop:pointcut id="method" expression="execution(* com.rpc.biz.*.*(..))"/><aop:advisor advice-ref="txAdvice" pointcut-ref="method"/></aop:config></beans>  问题补充:其实也发现是checkUserService没有被初始化,因为采用的spring机制,set方法也给了,但是为什么不能被初始化呢。

解决方案

可能原因:TestLogonAction实例不是从Spring IOC容器中获得的,而是Struts自己创建的。配置错误:在Struts中配置TestLogonAction的时候type属性应该是org.springframework.web.struts.DelegatingActionProxy
解决方案二:
问题就在这两个是实例化上面吧。 checkUserService ajaxService自己写个测试的,针对这两个service 做实例化, 看问题出在哪里有时候遇到这样的问题,一般可以先改下配置文件里面的名字, 名称冲突貌似很常见 看起来傻,有时候太管用了
解决方案三:
TestLogonAction 的实例是从Spring IOC容器中获得的吗?
解决方案四:
checkUserService显然这个没初始化

时间: 2024-08-03 00:53:45

空指针异常的相关文章

框架-@Autowired注入为null,空指针异常。

问题描述 @Autowired注入为null,空指针异常. Spring mvc + hibernate 的框架中,在非Controller下使用@Autowired注入失败,空指针异常.配置文件中已经加入了如下的内容 <!-- 使用annotation 自动注册bean并保证@Required@Autowired的属性被注入 --> /context:component-scanService类:@Service(""realtimeDataService"&q

报空指针异常,但是我debug到对象是有值的,执行查询方法就报错,错误信息如下:

问题描述 报空指针异常,但是我debug到对象是有值的,执行查询方法就报错,错误信息如下: 5C java.lang.NullPointerException at net.shop.services.manage.account.impl.AccountServiceImpl.selectCount(AccountServiceImpl.java:44) at net.shop.web.action.manage.account.AccountAction.unique(AccountActi

如何在Java中避免空指针异常

空指针异常(Null Pointer Exception)是我们平时最容易碰到的,也是最令人讨厌的异常.本文介绍如何避免出现空指针异常. 首先我们看如下的示例 private Boolean isFinished(String status) { if (status.equalsIgnoreCase("Finish")) { return Boolean.TRUE; } else { return Boolean.FALSE; } } 如果status的值为空的话,那么将会出现空指针

一个空指针异常问题,求大神帮忙解决下,在线等

问题描述 一个空指针异常问题,求大神帮忙解决下,在线等 public void getQaList(String type, String qid, String qid_min, String cat_id, String tag_id, String page, String qid_top, boolean isShowLoadingDialog) { List<RequestParameter> parameter = new ArrayList<RequestParameter

junit4 测试类(A)的时候 测试结果报空指针异常

问题描述 junit4 测试类(A)的时候 测试结果报空指针异常 junit4 测试类(A)的时候 (A)中的方法引用了接口 然后用bebug测试的时候 到引用接口的那一行的时候就会报空指针异常 请问 有什么办法使他不报异常 而这个接口又不能去除掉 求解!!! 解决方案 http://bbs.csdn.net/topics/390786622

ssh下jsp页面访问实体数据出现空指针异常

问题描述 ssh下jsp页面访问实体数据出现空指针异常 我用的是ssh框架,通过action访问实体数据没有问题,当在jsp页面中创建dao的实现类对象去访问数据就出错了.顺便问下spring的实体映射是在前台页面执行完之后进行的吗?我怀疑jsp页面中去访问的实体数据不存在.jsp中代码:,dao中代码

jsp页面初始化报空指针异常,怎么办

问题描述 jsp页面初始化报空指针异常,怎么办 <% String jmzmessages = null; String jmzid=""; String jmzname=""; jmzmessages = request.getParameter("jmzmessage"); String[] jmzs = jmzmessages.split("/"); if(jmzs.length>=2){ jmzid = j

android Fragment切换跳转子页面空指针异常

问题描述 android Fragment切换跳转子页面空指针异常 我有四个fragment,进程序默认加载第一个,我点击了第四个fragment,然后点击它的地址列表!就会报首页轮播图的空指针异常,哪位大神吗有大概思路,给提示下 解决方案 手动抛出一个异常--- 解决方案二: http://www.51zxw.net/study.asp?vip=12576487

jsp页面中用到${pageContext.request.contextPath}报空指针异常

问题描述 jsp页面中用到${pageContext.request.contextPath}报空指针异常 起初是jsp中红色感叹号,报javax.servlet.jsp.jspException can not resolve a type 我加入了jsp-api.jar报后,就报图片中的空指针异常了 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding=&q

java-初学Strust2框架,报空指针异常,不知道哪里找不到

问题描述 初学Strust2框架,报空指针异常,不知道哪里找不到 server.xml中的 docBase路径也改过了的,TomCat启动时没问题,浏览器试验后,报空指针: 解决方案 数据是不是没传入,jsp页面里输入框的name属性要和数据库字段表里的字段名要一致