这个是接口 UserInterFace 的方法:
public boolean loGin(String userName,String userPwd);
这个是接口的实现类UserFunction 方法:
/**用户登录方法**/
public boolean loGin(String userName,String userPwd){
boolean scu=false;
try
{
ConnDB conn=new ConnDB();
String sql="select userpwd from userTB where username='"+userName+"'";
ResultSet rs= conn.executeQuery(sql);
if(rs.next()){
String password =rs.getString(1);
if(userPwd.equals(password)){
scu=true;
}
}
conn.close();
}
catch(Exception e){e.printStackTrace();}
return scu;
}
这个是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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><bean id="ConnDB" class="org.com.wzy.clzy.db.ConnDB"></bean><bean id="UserFunction" class="org.com.wzy.clzy.function.user.UserFunction"></bean><bean id="LoginAction" class="org.com.wzy.clzy.actions.login.LoginAction">
<property name="uf" ref="UserFunction"/>
</bean></beans>提示的错误就是:
java.lang.NullPointerException
org.com.wzy.clzy.actions.login.LoginAction.yzlogin(LoginAction.java:38)
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)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
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:249)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
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:249)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
public boolean loGin(String userName,String userPwd);
这个是接口的实现类UserFunction 方法:
/**用户登录方法**/
public boolean loGin(String userName,String userPwd){
boolean scu=false;
try
{
ConnDB conn=new ConnDB();
String sql="select userpwd from userTB where username='"+userName+"'";
ResultSet rs= conn.executeQuery(sql);
if(rs.next()){
String password =rs.getString(1);
if(userPwd.equals(password)){
scu=true;
}
}
conn.close();
}
catch(Exception e){e.printStackTrace();}
return scu;
}
这个是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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><bean id="ConnDB" class="org.com.wzy.clzy.db.ConnDB"></bean><bean id="UserFunction" class="org.com.wzy.clzy.function.user.UserFunction"></bean><bean id="LoginAction" class="org.com.wzy.clzy.actions.login.LoginAction">
<property name="uf" ref="UserFunction"/>
</bean></beans>提示的错误就是:
java.lang.NullPointerException
org.com.wzy.clzy.actions.login.LoginAction.yzlogin(LoginAction.java:38)
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)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
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:249)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
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:249)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
org.com.wzy.clzy.actions.login.LoginAction.yzlogin(LoginAction.java:38)查找错误信息,再仔细找找
package org.com.wzy.clzy.actions.login;import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.com.wzy.clzy.interfase.user.UserInterFace;
import org.com.wzy.clzy.model.UserModel;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private UserInterFace uf;
public void setUf(UserInterFace uf) {
this.uf = uf;
} public UserInterFace getUf() {
return uf;
} private UserModel user;
public UserModel getUser() {
return user;
}
public void setUser(UserModel user) {
this.user = user;
}
/**
* 从写父类的方法!
* */
@Action(
value="log1",
results={
@Result(name="success",location="main/index",type="redirect"),
@Result(name="error",location="main/error",type="redirect")
})
public String yzlogin() {
boolean src=false;
System.out.println(user.getUsername()+"^^^^^^^^^^^^^^^^"+ user.getUserpwd());
System.out.println(this.uf);
try{
ApplicationContext context=new ClassPathXmlApplicationContext(new String[] {"beans.xml"});
UserInterFace userf=(UserInterFace)context.getBean("UserFunction");
System.out.println("运行到站了"+userf);
}catch(Exception e){e.printStackTrace();}
//if(src==true){
return SUCCESS;
//}else{
//return ERROR;
//}
}}
ApplicationContext context=new ClassPathXmlApplicationContext(new String[] {"beans.xml"});
UserInterFace userf=(UserInterFace)context.getBean("UserFunction");
但是用set注入的话获取的bean是空指针
这个加载了的,我都换了好几种加载方法.这个是web.xml的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>clzycht</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/spring*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
你指定一下你的spring配置文件的路径吧
不继承ActionSupport我怎么调用业务呀,UserInterFace接口的实现我肯定会在spring里面配置啦.
为什么还用:
ApplicationContext context=new ClassPathXmlApplicationContext(new String[] {"beans.xml"});
UserInterFace userf=(UserInterFace)context.getBean("UserFunction");
来获取id = UserFunction 的bean?不是会通过spring的XML配置文件依赖注入的吗?
先了解struts2和1的区别
然后好好看看SSH中spring的原理
你可以把你任务有可能的都system.out.println一下,看看哪个为空?
然后一步一步的来,
我感觉凡是这种报空指针的错误的,其实自己都是能解决的。
public void setUf(UserInterFace uf) {
this.uf = uf;
}
这个值是空的...