解决方案 »

  1.   

    56行是这一行吗?boolean b = lc.isLogin(user);
    如果是的话,我猜你是没把action交给spring来创建!
    在struts配置文件中加上这句看还会报错不<constant name="struts.objectFactory" value="spring" />
      

  2.   

    在applicationContext.xml里面加吗?我试试
      

  3.   

    在applicationContext.xml里面加吗?我试试
      

  4.   


    我在struts.xml里面加了,没用咧
      

  5.   

    配置文件applicationContext.xml属性里要加用户名和密码
      

  6.   

    我没看到关于SessionFactory的实例注入呢?是没有截图么?
      

  7.   

    这个问题最大的可能性是spring的context没有加载正确导致lc的依赖注入失败,你把启动的日志发一下,仔细分析一下是不是ssh成功集成了
      

  8.   

    我觉得是get set 方法有问题是不是自己手动写的哟
      

  9.   

    把你的struts配置文件个spring的配置文件,涉及到的配置文件都贴出来。。
      

  10.   


    在配置啦?我把配置文件全部贴出来吧。
    在改了set,get方法之后又有这个问题了。我是菜鸟,第一次用ssh,请大家指教哈。loginaction类:
    package com.bus.action;import java.util.List;import com.bus.model.TbUser;
    import com.bus.service.LoginService;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ActionContext;
    import org.apache.struts2.ServletActionContext;public class LoginAction extends ActionSupport {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private String userName;
    private String userPwd;
    private LoginService lc;
    private TbUser user;
    public String getUserName() {
    return userName;
    }
    public void setUserName(String userName) {
    this.userName = userName;
    }
    public String getUserPwd() {
    return userPwd;
    }
    public void setUserPwd(String userPwd) {
    this.userPwd = userPwd;
    }
    public LoginService getLc() {
    return lc;
    }
    public void setLc(LoginService lc) {
    this.lc = lc;
    }
    public TbUser getUser() {
    return user;
    }
    public void setUser(TbUser user) {
    this.user = user;
    }
    public String execute() throws Exception { System.out.print("对象"+user+"用户名:"+user.getUserName()+"密码:"+user.getUserPwd());
    boolean b = lc.isLogin(user);
    if (b) {
    ActionContext.getContext().getSession().put("login", "true");
    return SUCCESS;
    } else {
    return ERROR;
    }
    }}
    TbUserDAO:函数
    public boolean findLogin(TbUser user) {
    // TODO Auto-generated method stub
    String hql = "from TbUser where userName='" + user.getUserName() + "'and userPwd='" + user.getUserPwd() + "'";
    System.out.println(hql);
    List userlist = this.getHibernateTemplate().find(hql);
    if (userlist.size() > 0)
    return true;
    else
    return false;
    }applicationContext配置文件
    <?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-3.0.xsd">
    <!-- 定义数据源Bean -->
    <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/heybus">
    </property>
    <property name="username" value="root"></property>
    <property name="password" value="040528"></property>
    </bean> <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- 指定数据源 -->
    <property name="dataSource">
    <ref bean="dataSource" />
    </property> <!-- 指定数据库方言 -->
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.MySQLDialect
    </prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.format_sql">false</prop>
    <prop key="hibernate.hbm2ddl.auto">update</prop>
    </props>
    </property> <!-- 指定映射文件 -->
    <property name="mappingResources">
    <list>
    <value>com/bus/model/TbUserqueryinfo.hbm.xml</value>
    <value>com/bus/model/TbPriceinfo.hbm.xml</value>
    <value>com/bus/model/TbTransitline.hbm.xml</value>
    <value>com/bus/model/TbTransitinfo.hbm.xml</value>
    <value>com/bus/model/TbTransittype.hbm.xml</value>
    <value>com/bus/model/TbLinestation.hbm.xml</value>
    <value>com/bus/model/TbTransitstation.hbm.xml</value>
    <value>com/bus/model/TbPricetype.hbm.xml</value>
    <value>com/bus/model/TbUser.hbm.xml</value>
    </list>
    </property>
    </bean>
    <!--   定义hibernateTemplate-->
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <!-- 配置DAO组件 --> <!--
    注入SessionFactory ,不是给类的,而是给继承HibernateDaoSupport类的sessionFactory
    -->
    <bean id="TbUserqueryinfoDAO" class="com.bus.dao.TbUserqueryinfoDAO">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate" />
    </property>
    </bean>
    <bean id="TbPriceinfoDAO" class="com.bus.dao.TbPriceinfoDAO">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate" />
    </property>
    </bean>
    <bean id="TbTransitlineDAO" class="com.bus.dao.TbTransitlineDAO">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate" />
    </property>
    </bean>
    <bean id="TbTransitinfoDAO" class="com.bus.dao.TbTransitinfoDAO">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate" />
    </property>
    </bean>
    <bean id="TbTransittypeDAO" class="com.bus.dao.TbTransittypeDAO">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate" />
    </property>
    </bean>
    <bean id="TbLinestationDAO" class="com.bus.dao.TbLinestationDAO">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate" />
    </property>
    </bean>
    <bean id="TbTransitstationDAO" class="com.bus.dao.TbTransitstationDAO">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate" />
    </property>
    </bean>
    <bean id="TbPricetypeDAO" class="com.bus.dao.TbPricetypeDAO">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate" />
    </property>
    </bean>
    <bean id="TbUserDAO" class="com.bus.dao.TbUserDAO">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate" />
    </property>
    </bean> <!-- 配置业务逻辑组件 -->
    <bean id="usersService" class="com.bus.serviceimpl.UsersServiceImpl">
    <!-- 为业务逻辑组件注入DAO组件 -->
    <property name="dao" ref="TbUserDAO"></property>
    </bean> <bean id="loginService" class="com.bus.service.LoginService">
    <!-- 为业务逻辑组件注入DAO组件 -->
    <property name="dao" ref="TbUserDAO"></property>
    </bean>
    <!-- 创建LoginAction实例 -->
    <bean id="loginAction" class="com.bus.action.LoginAction" scope="prototype">
    <property name="lc" ref="loginService">
    </property>
    </bean>
    </beans>struts配置文件
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
    <!--指定Struts 2默认的ObjectFactory Bean,该属性默认值是spring. -->
    <constant name="struts.objectFactory" value="spring" />
    <package name="myPackage" extends="struts-default"> <interceptors>
    <interceptor name="clearFieldErrorInterceptor"
    class="com.bus.util.ClearFieldErrorInterceptor"></interceptor>
    <interceptor-stack name="myStack">
    <interceptor-ref name="clearFieldErrorInterceptor"></interceptor-ref>
    </interceptor-stack>
    </interceptors> <action name="login" class="loginAction">
    <result name="success">loginOk.jsp</result>
    <result name="input">login.jsp</result>
    <result name="error">loginFailure.jsp</result>
    </action>
    </package>
    </struts>    出现的异常是:
    java.lang.NullPointerException
    com.bus.action.LoginAction.execute(LoginAction.java:83)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)