[2009-06-28 00:27:39] WARN [Unhandled Exception thrown: class java.lang.NullPointerException]
[2009-06-28 00:27:39] ERROR [Servlet.service() for servlet action threw exception]
java.lang.NullPointerException
at com.gwan.web.LoginAction.execute(LoginAction.java:26)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

    空指针异常,调试一下,肯定是action里的错误
      

  2.   

    空指针异常,调试一下,肯定是action里的错误
      

  3.   


    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;import com.gwan.service.IUsersService;public class LoginAction extends Action {

    private IUsersService userService;

    public void setUserService(IUsersService userService) {
    this.userService = userService;
    }

    public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,
    HttpServletResponse response) throws Exception {
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    String forword = "";
    if(userService.login(username, password))
    forword = "success";
    else
    forword = "error";
    return mapping.findForward(forword);
    }
    }import com.gwan.dao.IUsersDao;
    import com.gwan.domain.Users;
    import com.gwan.service.IUsersService;public class UsersService implements IUsersService {

    private IUsersDao usersDao; public void setUserDao(IUsersDao usersDao) {
    this.usersDao = usersDao;
    } @Override
    public Users findUserByName(String username) {
    // TODO Auto-generated method stub
    return usersDao.findUserByName(username);
    }

    public boolean login(String username, String password){
    Users user = findUserByName(username);
    if(user != null)
    if(password.equals(user.getPassword()))
    return true;
    return false;
    }
    }
      

  4.   

    at com.gwan.web.LoginAction.execute(LoginAction.java:26)
    错误在你的Action中的第26行,
    有以下几种原因:
        1.没有获取到参数(或者参数获取到得是空的);
        2.实体里面getXXX()里获取的是没有数据的;
        3.没有连接到数据库
      

  5.   


    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
    <beans default-autowire="byName" default-lazy-init="true">
     
     
    <!-- 界面UI服务 -->
    <bean id="userService" class="com.gwan.service.impl.UsersService">
    </bean>

    </beans><?xml version="1.0" encoding="GBK"?>
    <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="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    </bean> <!-- 定义事务属性 -->
    <aop:config proxy-target-class="true">
    <aop:advisor pointcut="execution(* com.gwan.service.*.*(..))"
    advice-ref="txAdvice" />
    </aop:config> <!--
    基本事务定义,使用transactionManager作事务管理,默认get*方法的事务为readonly,其余方法按默认设置.
    -->
    <tx:advice id="txAdvice">
    <tx:attributes>
    <tx:method name="get*" read-only="true" />
    <tx:method name="find*" read-only="true" />
    <tx:method name="*" />
    </tx:attributes>
    </tx:advice></beans>注入后userService 为null,不知道该怎么改了
      

  6.   

    没有getUserDao()方法,获取不到,只能set();
    标准的JavaBean是同时配备get()和set()方法的。
      

  7.   

    spring 在注入 Service 和 Dao 时,在web调用时怎么是null呢
      

  8.   

    spring 在注入 Service 和 Dao 时,在web调用时怎么是null呢 
      

  9.   

    怎么没看到你把service注入到action中的配置呢?建议贴出来看看
      

  10.   

    问题解决了,是自己在action类里的set属性与配置文件名称不一致,还缺少注入action的配置文件缺少文件,属性不一致。这东西还真难弄啊,初学算是体会了