-------------------Struts---------------------<?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE struts PUBLIC
      "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
      "http://struts.apache.org/dtds/struts-2.0.dtd">
  <struts>
        
      <constant name="struts.objectFactory" value="spring" />
      <package name="struts2"  extends="struts-default">
          <global-results>
           <result name="error">/login.jsp</result>
          </global-results>
          <action name="login" class="LoginAction" method="doLogin">
                      <result name="success">/index.jsp</result>
                       <result name="error">/login.jsp</result>
          </action>
      </package>  </struts>-------------------------applicationContext.xml---------------------------<bean id="UserBasicInfoDAO" class="model.UserBasicInfoDAO">
<property name="sessionFactory">
<ref bean="sf" />
</property>
</bean>

<bean id="LoginImpl" class="impl.LoginImpl" >
<property name="userBasicInfoDAO" ref="UserBasicInfoDAO" />
</bean>

<bean id="LoginAction" class="action.LoginAction" >
<property name="loginImpl" ref="LoginImpl" />
</bean>
-----------------------------------web.xml----------------------<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list> <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

  <filter>
        <filter-name>ssh2</filter-name>
        <filter-class>
             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
         <!-- org.apache.struts2.dispatcher.FilterDispatcher-->
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>ssh2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    </web-app>----------------------------LoginAction----------------------------
package action;import model.UserBasicInfo;
import impl.LoginImpl;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport{

private UserBasicInfo userBasicInfo;

private LoginImpl loginImpl;

public LoginImpl getLoginImpl() {
return loginImpl;
} public void setLoginImpl(LoginImpl loginImpl) {
System.out.println("set LoginImpl");
this.loginImpl = loginImpl;
} public String doLogin() throws Exception {
// TODO Auto-generated method stub
System.out.println("userId-------------"+userBasicInfo.getUserId());
UserBasicInfo userBasicInfo1=loginImpl.getUserBasicInfo(userBasicInfo.getUserId());//loginImpl空指针
if(userBasicInfo1!=null)
{
System.out.println("登录成功");
return SUCCESS;
}else
{
System.out.println("登录失败");
return ERROR;
}
} public UserBasicInfo getUserBasicInfo() {
return userBasicInfo;
} public void setUserBasicInfo(UserBasicInfo userBasicInfo) {
this.userBasicInfo = userBasicInfo;
}}---------------------------------LoginImpl----------------------------
[code=Java]
package impl;import model.UserBasicInfo;
import model.UserBasicInfoDAO;public class LoginImpl {
private UserBasicInfoDAO userBasicInfoDAO; public UserBasicInfoDAO getUserBasicInfoDAO() {
return userBasicInfoDAO;
} public void setUserBasicInfoDAO(UserBasicInfoDAO userBasicInfoDAO) {
System.out.println("set userbasicinfodao");
this.userBasicInfoDAO = userBasicInfoDAO;
}

public UserBasicInfo getUserBasicInfo(int userId)
{
return userBasicInfoDAO.findById(userId);
}
}[/code]
----------------------------------错误信息--------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
action.LoginAction.doLogin(LoginAction.java:26)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.

解决方案 »

  1.   

     private LoginImpl loginImpl;改成private LoginImpl loginImpl = new LoginImpl();
    试一下
      

  2.   

    哥,闹呢,直接实例化,就不用将struts给spring管理了
      

  3.   

    应该是userBasicInfo.getUserId()这个报的空指针吧 你对user里的id属性进行set方法了吗  你没对他set值 取不出来get值吧
      

  4.   

    在上一行已经输出值了,是我标注的那一行空指针错误。我已经跟踪过程序了,确实为loginImpl空指针,但是很奇怪,看不出哪的问题
      

  5.   

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>Login</title>
      </head>
      
      <body>  <s:form action="login" method="post">                
                  <s:textfield name="userBasicInfo.userId" label="用户名"/>
              <s:textfield name="userBasicInfo.infoPassword" label="密 码" />    
                  <s:submit value="提交" method="doLogin" />            
             </s:form>
              <!--  
            <form action="login.action" method="post"> 
         户名:<input type="text" name="userBasicInfo.userId"/>
         密码:<input type="password" name="userBasicInfo.infoPassword" />
         <input type="submit" value="登 录">
        </form>
         -->
      </body>
    </html>肯定有值,问题还是出在注入那块,附上jsp代码
      

  6.   

    在spring配置文件好像没有给它赋值吧
      

  7.   

    那你干脆把spring配置文件中的bean的id都用小写开头配置试试
      

  8.   

    spring配置文件中的bean的id都用小写开头配置
    大写的时候会有问题
      

  9.   

    <ref bean="sf" /> 在哪引的???sf在哪??
      

  10.   


    。。不规范害死人,以前写SSH的时候没太注意,受教了
      

  11.   

    你的Spring配置文件applicationContext.xml中bean标签中 注入userBasicInfo叻嘛? 貌似没有注入哎了,这样的话userBasicInfo就是空值,用的时候,会报告空指针异常
      

  12.   

    楼上的问题我也遇到了,但通过实践已经解决,在添加struts 时将 Struts 2 Spring Libs一同添加就可以解决了。