今天做一个Spring和Struts的融合,通过bean注入后,程序一跑起来,就报这个错误:

java.lang.NullPointerException
com.cb.action.LoginAction.execute(LoginAction.java:48)
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: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)

下面先交待下各配置文件的情况:

struts.xml如下:

<?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>
<package name="login2" extends="struts-default" >
<action name="login" class="loginAction">
<result name="error">/err.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
<!-- 让用户直接访问该应用时列出所有视图页面 -->
<action name="*">
<result>/WEB-INF/content/{1}.jsp</result>
</action>
</package>
</struts>

Spring的applicationContext.xml如下:

<?xml version="1.0" encoding="GBK"?>
<!-- Spring配置文件的根元素,使用spring-beans-3.0.xsd语义约束 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
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.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <bean id="myService" class="com.cb.serviceImpl.MyServiceImpl">
</bean> <!-- controller -->
<bean id="loginAction" class="com.cb.action.LoginAction" scope="prototype">
<property name="ms" ref="myService"></property>
</bean>
<!-- <bean id="ms" class="com.cb.serviceImpl.MyServiceImpl"/> -->
</beans>

唯一的action如下,LoginAction.java

package com.cb.action;

import com.cb.serviceInter.MyService;
import com.opensymphony.xwork2.Action; public class LoginAction implements Action{ private String username;
private String password;
private String tip;
//系统所需业务逻辑组件
private MyService ms; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getTip() {
return tip;
} public void setTip(String tip) {
this.tip = tip;
} public MyService getMs() {
return ms;
} public void setMs(MyService ms) {
this.ms = ms;
} public String execute() throws Exception {
System.out.println("************test1****"+ms+"名字是:"+getUsername());
if(ms.valid(getUsername(), getPassword())){
setTip("恭喜,整合成功!");
return SUCCESS;
}else {
setTip("对不起,登录失败!");
return ERROR;
}
} }

【分析】通过报的错误,可以明确的知道,private MyService ms;没有正常注入,就是这个实例是null。显然是spring的注入出现问题,但是我检查了所有的情况,发现ms的setMs也有,配置的也没有任何问题,这就奇怪了,怎么回一直提示注入失败呢?

【解决】最后发现一切问题出在struts.xml中,有两种解决办法:1,在<package name="login2" extends="struts-default" >中加上namespace=“/”。2,把action的<action name="login" class="loginAction">中name=“login”改成别的任何名字,估计有可能是login为struts2的保留字,所以以后的命名,尽量不要使用login,换个别的名字。但是第一种方法,加上namespace=“/”我始终没想明白是什么原因,加上命名空间了以后就没有错误,因为命名空间是一个逻辑名,访问action的时候,我不加逻辑名,应该不会有问题的。还是没想明白,希望各位看出问题的,能交流下,万分感谢!

java.lang.NullPointerException&com.cb.action.LoginAction.execute(LoginAction.java:48)的更多相关文章

  1. java.lang.NullPointerException org.apache.jsp.index_jsp._jspInit(index_jsp.java:22)

    java.lang.NullPointerException org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) org.apache.jsp.i ...

  2. 整合ssh的时候出现空指针java.lang.NullPointerException

    转自:https://blog.csdn.net/koudailidexiaolong/article/details/9468857 HTTP Status 500 - type Exception ...

  3. CrashHandler: java.lang.NullPointerException

    08-29 20:33:47.305 20636-20636/com.tongyan.subway.inspect D/AndroidRuntime: Shutting down VM 08-29 2 ...

  4. Caused by: java.lang.NullPointerException, java.lang.reflect.InvocationTargetExc

    java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native M ...

  5. Spring异常解决 java.lang.NullPointerException,配置spring管理hibernate时出错

    @Repository public class SysUerCDAO { @Autowired private Hibernate_Credit hibernate_credit; /** * 根据 ...

  6. JAVA错误:Exception in thread "main" java.lang.NullPointerException

    JAVA错误:Exception in thread "main" java.lang.NullPointerException例如: Exception in thread &q ...

  7. 报错!!!Servlet.service() for servlet [action] in context with path [/myssh] threw exception [java.lang.NullPointerException] with root cause java.lang.NullPointerException

    这个为什么报错啊~~ at com.hsp.basic.BasicService.executeQuery(BasicService.java:33) 这个对应的语句是   Query query = ...

  8. 报错:空指针java.lang.NullPointerException 原因 Action层 private UserService userservice 上未加@Autowire注解

    java.lang.NullPointerException at com.itheima.test.Test2.fun1(Test2.java:18) at sun.reflect.NativeMe ...

  9. 关于java.lang.NullPointerException: Module 'null' not found.的问题

    在用eclipse做struts1项目时,配置都ok了.可是一运行就报java.lang.NullPointerException: Module 'null' not found.错. 代码如下: ...

随机推荐

  1. 如何系统地学习Node.js?

    转载自知乎:http://www.zhihu.com/question/21567720 ------------------------------------------------------- ...

  2. UI3_CustomUITableViewCell

    // AppDelegate.m // UI3_CustomUITableViewCell // // Created by zhangxueming on 15/7/15. // Copyright ...

  3. eclipse如何修改dynamic web module version;——eclipse操作备忘

    1.eclipse如何修改dynamic web module version 一.修改工程属性: 右键eclipse的工程,选择属性,再选择Project Facets里面中选择Dynamic We ...

  4. Tomcat 优化 java.lang.OutOfMemoryError: Java heap space 的解决方法

    Tomcat 优化 java.lang.OutOfMemoryError: Java heap space 的解决方法 java.lang.OutOfMemoryError: Java heap sp ...

  5. Java序列化与反序列化(Serializable)

    Java序列化与反序列化(Serializable) 特别注意: 1.要序列化的类必须实现Serializable借口 2.在反序列化(读取对象)的时候必须额外捕获EOFException 3.序列化 ...

  6. unity基本操作二

    一:error1,先断网再启动点击Manual Activation点击Save License生成相应的alf文件2,联网打开https://license.unity3d.com/manual上传 ...

  7. js生成 1-100 不重复随机数

    var count=100; var a=new Array(); for(var i=0;i<100;i++){ a[i]=i+1; } a.sort(function(){ return 0 ...

  8. IEEE Floating Point Standard (IEEE754浮点数表示法标准)

    浮点数与定点数表示法是我们在计算机中常用的表示方法 所以必须要弄懂原理,特别是在FPGA里面,由于FPGA不能像在MCU一样直接用乘除法. 定点数 首先说一下简单的定点数,定点数是克服整数表示法不能表 ...

  9. 《Java核心技术与最佳实践》读书笔记

    第一章 Java7新语法 1.switch中使用字符串 2.增加二进制表示0b10101010:数字字面量允许直径使用下划线12_34_90 3.一个catch字句捕获多个异常,多个异常之间用|分隔 ...

  10. javascript代码复用--继承

    由于javascript没有类的概念,因此无法通过接口继承,只能通过实现继承.实现继承是继承实际的方法,javascript中主要是依靠原型链要实现. 原型链继承 原型链继承是基本的继承模式,其本质是 ...