解决方案 »

  1.   


    struts.xml
    <?xml version="1.0" encoding="GBK" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 
    "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
    <constant name="struts.devMode" value="true"/>
    <constant name="struts.i18n.encoding" value="GBK"/>

    <package name="default" extends="struts-default" namespace="/">


    <action name="login.action" class="loginAction">
    <result name="input">/index.jsp</result>
    <result name="staff">/WEB-INF/JSP/Staff/index.jsp</result>
    <result name="manager">/WEB-INF/JSP/Manager/index.jsp</result>
    <result name="error">/login.jsp</result>
    </action>

    <action name="showPerInfo.action" class="managerAction" method="showPerInfo">
    <result name="success">/WEB-INF/JSP/Manager/showPerInfor.jsp</result>
    </action>

    <action name="showAllStaff.action" class="managerAction" method="showAllStaff">
    <result name="success">/WEB-INF/JSP/Manager/showAllStaff.jsp</result>
    </action>

    <action name="showProjects" class="managerAction" method="showProjects">
    <result name="success">/WEB-INF/JSP/Manager/showProjects.jsp</result>
    </action>

    </package>
    </struts>    
    ApplicationContext.xml<?xml version="1.0" encoding="GBK"?>
    <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,使用BasicDataSource************************* -->
    <!-- 设计连接数据库的驱动,URL,用户名,密码 -->
    <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/PMS2"></property>
    <property name="username" value="root"></property>
    <property name="password" value="bear"></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">true</prop>
    <prop key="hibernate.use_sql_comments">true</prop>
    <prop key="hibernate.cache.use_secend_level_cache">true</prop>
    <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
    </props>
    </property>

    <property name="mappingResources">
    <list>
    <value>com/pms2/model/Team.hbm.xml</value>
    <value>com/pms2/model/Project.hbm.xml</value>
    <value>com/pms2/model/Staff.hbm.xml</value>
    <value>com/pms2/model/Task.hbm.xml</value>
    <value>com/pms2/model/Department.hbm.xml</value></list>
    </property>
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <bean id="daoTemplate" abstract="true" lazy-init="true">
    <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <bean id="projectDao" class="com.pms2.dao.impl.ProjectDaoHibernate" parent="daoTemplate"/>

    <bean id="staffDao" class="com.pms2.dao.impl.StaffDaoHibernate" parent="daoTemplate"/>


    <bean id="loginService" class="com.pms2.service.impl.loginServiceImpl">
    <property name="staffDao" ref="staffDao"></property>
    </bean>
    <bean id="managerService" class="com.pms2.service.impl.managerServiceImpl">
    <property name="staffDao" ref="staffDao"></property>
    <property name="projectDao" ref="projectDao"></property>
    </bean>
    <bean id="staffService" class="com.pms2.service.impl.staffServiceImpl">
    <property name="staffDao" ref="staffDao"></property>
    <property name="projectDao" ref="projectDao"></property>
    </bean>


    <bean id="loginAction" class="com.pms2.action.LoginAction" scope="prototype" >
    <property name="ls" ref="loginService"></property>
    </bean>
    <bean id="managerAction" class="com.pms2.action.managerAction" scope="prototype">
    <property name="ms" ref="managerService"></property>
    </bean>
    <bean id="staffAction" class="com.pms2.action.staffAction" scope="prototype">
    <property name="ss" ref="staffService"></property>
    </bean>

    </beans>貌似是依赖注入失败,但是仔细检查了下,应该不是名字命名什么的问题,但是没找出错误
      

  2.   

    package com.pms2.action;import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import com.pms2.model.Staff;
    import com.pms2.service.impl.loginServiceImpl;
    import static com.pms2.service.loginService.*;public class LoginAction extends ActionSupport{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private final String STAFF_RESULT="staff";
    private final String MANAGER_RESULT="manager";

    private loginServiceImpl ls;

    private String tip;
    private Staff staff;

    private String id;
    private String password; public void setLs(loginServiceImpl ls){
    this.ls=ls;
    }

    public loginServiceImpl getLS(){
    return this.ls;
    }

    public String getTip() {
    return tip;
    } public void setTip(String tip) {
    this.tip = tip;
    } public Staff getStaff() {
    return staff;
    } public void setStaff(Staff staff) {
    this.staff = staff;
    } public String getPassword() {
    return password;
    } public void setPassword(String password) {
    this.password = password;
    } public String getId() {
    return id;
    } public void setId(String id) {
    this.id = id;
    }

    public String execute() throws Exception{
    ActionContext ctx=ActionContext.getContext();

    System.out.println("execute....");

    System.out.println(getId());

    int result=ls.validLogin(getId(), getPassword());

    System.out.println("*************validLogined***************");

    if(result==LOGIN_STAFF){
    setTip("Login Success!");
    ctx.getSession().put("id", getId());
    ctx.getSession().put("name",staff.getSname());
    System.out.println("staff_result");

    return STAFF_RESULT;
    }
    else if(result==LOGIN_MANAGER){
    setTip("Login Success!");
    ctx.getSession().put("id", getId());
    ctx.getSession().put("name",staff.getSname());
    System.out.println("manager_result");
    return MANAGER_RESULT;
    }
    else{
    setTip("登陆失败!");
    System.out.println("error_result");
    return ERROR;
    }
    }
    }
      

  3.   

    com.pms2.action.LoginAction.execute(LoginAction.java:72)
    问题应该就在你的Action的72行,空指针的话,你检查一下前台和Action之间的传值问题,有没有传递重复属性之类的。注入的话也有可能是你的loginService就没注入进来,你调用业务类导致的空指针。
      

  4.   

    这个get方法写错了吧:
     public loginServiceImpl getLS(){
            return this.ls;
        }
      

  5.   

    我晕,你怎么能写private loginServiceImpl ls;依赖注入注的是接口,不是实现类!
      

  6.   

    我晕,int result=ls.validLogin(getId(), getPassword());
    你这写的什么啊,参数直接写id和password。
      

  7.   

    像这种问题,异常告诉你在72行,很明显,你把可能出问题的地方打印一下,比如:
    System.out.println(getId());
    System.out.println(getPassword());
    发现是null的话不是很快就能解决。多动脑子啊。这就是你仔细检查了?我只是大概看了下,这都是最基础的东西啊。
      

  8.   

    = =!额,小问题貌似多但是这这这还是木有解决注入失败
    上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。
    xml的配置没问题,注意bean的property要和类中属性的变量名一致。
      

  9.   

    = =!额,大意了看异常信息大概就是注入问题了,72行这正好就是调用到loginService,id和password传导action都没有问题,用了print语句可以输出
      

  10.   

    = =!额,小问题貌似多但是这这这还是木有解决注入失败
    上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。
    xml的配置没问题,注意bean的property要和类中属性的变量名一致。
    这个改了已经,属性名是对应的 没问题
      

  11.   

    = =!额,小问题貌似多但是这这这还是木有解决注入失败
    上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。
    xml的配置没问题,注意bean的property要和类中属性的变量名一致。
    这个改了已经,属性名是对应的 没问题
    现在是什么问题~把异常贴上来~
      

  12.   

    debug 调试看看那句报空 的
      

  13.   

    = =!额,小问题貌似多但是这这这还是木有解决注入失败
    上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。
    xml的配置没问题,注意bean的property要和类中属性的变量名一致。
    这个改了已经,属性名是对应的 没问题
    现在是什么问题~把异常贴上来~和之前的异常信息一样,还是在那一行Stacktracesjava.lang.NullPointerException
        com.pms2.action.LoginAction.execute(LoginAction.java:73)
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        java.lang.reflect.Method.invoke(Method.java:597)