安东石油技术有限公司料理怎么样,好不好的默认点评

SSH框架报空指针异常解决过程 -
- ITeye技术网站
博客分类:
今天搭建了一个SSH框架,在Spring的applicationContext.xml中注入关系配的好好的,就是报空指针异常,找了很久。终于在同事等众人的一番忙碌之后还是让我给解决了。
首先:我没有在Web.xml中配置Spring监听,导致启动的时候就很快。Action层中sett方法就不走。然后把监听给添加上去了。
第二:监听添上去之后,sett方法是走了,但是还是报空指针异常,结果在网上,还有同事说是struts.xml中action 的class 应该配置为applicationContext.xml 中bean的Id,也就是说struts中的对象要由Sping中获取,否则就是为空。
第三:同事帮我这样配置了,结果启动就报错,O(∩_∩)O哈哈~。幸而我在之前在网上查找错误原因的时候,看到一条“spring和struts之间是又一个叫struts-spring-2.2xxx记不清楚了”来联系起来的,所以我用MyEclipse又创建一个Web工程,在集成struts的时候,把与Spring有关的集成选项选中了,然后果真出现了这个包,拷贝过去,启动,OK。
O(∩_∩)O~
浏览: 11262 次
来自: 河南关于SSH2框架搭建过程中出现的问题的总结
时间: 19:08:13
&&&& 阅读:613
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&以前接触过SSH框架,但是一直都没有用过,然后这段时间又重新回顾了一下,当然,期间也碰到了不少问题,然后就在网上查相关资料,折腾了一番,也学到了不少东西,所以决定整理下来。使用的IDE工具是Myeclipse10.1,碰到的问题大致有下面几个:
1、问题1——控制台报加载Struts配置文件失败的异常。
异常原因:主要是缺少struts2-spring-plugin-2.X.X.X这个插件jar包。
解决方法:将这个jar包导入到项目中即可。
a、可以直接下载所需要的版本如:struts2-spring-plugin-2.2.1.jar,然后将这个jar包放到WebRoot/WEB-INF/lib目录下,然后build Path一下即可。
b、也可以直接通过Myeclipse工具进行添加,只是通过这种方式添加后,会多引入了几个包,我也不知道项目中有没有用到过,反正删掉了其他的几个项目也能正常运行,没有什么影响,应该是项目中没有用到。
右击项目——》选择Build Path——》选择Add Libraries.
选择Myeclipse Libraries
勾选Struts2 Spring Libraries
ok,异常消失。
需要注意的是:Struts2得已经交由Spring进行管理了,即配置文件里面已经做了正确的配置了,不然有可能还会出现其他的问题。至于什么问题我就懒得去试了。
a、web.xml配置文件中开启了Spring监听。
b、然后struts.xml配置文件中配置了将Struts2委托给Spring进行管理。
2、问题2——对象关系映射失败,实体映射失败,找不到POJO类,额,我也不知道能不能这样叫,估计不行,暂且就这样称呼吧。
异常原因:entity class not found。
发生的位置:Hibernate的映射文件中xxxx.hbm.xml
解决方法,更改xxxx.hbm.xml映射文件中POJO类的路径
错误的配置:
正确的配置:POJO类的完整路径
3、问题3——Spring的bean初始化注入失效。这个问题困扰了我好久,我的配置是这样的,Struts.xml文件中的action的class属性值配置的是applicationContext.xml文件中由Spring注入的bean的id值,之前一直以为是这个路径配置文件,导致Spring不能初始化注入,甚至还怀疑过是命名空间namespace的配置问题,试了好几次,最后效果还是一样的报异常。
struts.xml的配置:
applicationContext.xml文件的配置:
然后启动Tomcat的时候,控制台没有任何异常,一切正常,但是运行的时候,就报不能实例化action的异常。
运行,不能实例化action,找不到action的定义
之后,做了下尝试,将struts.xml文件的action的class属性写成action的完整路径。这个时候却报空指针,程序找到了action,也进入到了action中,但是action中定义的Service却又出现同样的问题,注入失败,初始化为null。所以报控指针异常。
service注入失败,报空指针,用debug跟一下可以看到Service为null.
然后,经过一番折腾,在网上搜了好久,最后才发现原来是web.xml配置文件中配置的Spring监听出了问题。applicationContext.xml文件的加载路径配置不正确。
解决方法:
关于applicationContext.xml文件的放置,一般有两种做法,
a、放置在项目的顶级根目录src目录下面。配置方法如下:
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:applicationContext.xml&/param-value&
&/context-param&
b、放置在项目的WebRoot/WEB-INF目录下面。配置方法如下:
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&/WEB-INF/classes/applicationContext*.xml&/param-value&
&/context-param&
或者也可以使用下面这种方式:
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&WEB-INF/classes/applicationContext*.xml&/param-value&
&/context-param&
由于Spring的监听配置出了问题,所以程序找不到applicationContext.xml文件,于是便无法完成初始化的注入操作了,通过上面两种方式的配置正确后,问题解决。Spring初始化注入成功。
4、问题4——关于数据库的异常,驱动jar包的冲突。使用的是Oracle11g数据库。导入的数据库驱动jar包文件是classes12.jar,运行之后报如下异常:
oracle.jdbc.driver.OracleDatabaseMetaData.supportsGetGeneratedKeys()Z
Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.OracleDatabaseMetaData.supportsGetGeneratedKeys()Z
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:142)
解决方法:
换成ojdbc6.jar再运行就没有这个问题了。 问题解决、
应该是驱动的版本与oracle的版本有冲突,所以才会报这个错。
5、问题5——使用的jsp标签跳转到action,一直没有任何效果,请求不到资源,但是浏览器中直接输入page的值,能够成功跳转。
解决方法:
需要在struts.xml文件中过滤器映射中对下面配置dispatcher属性,
配置REQUEST和FORWARD属性即可,问题解决、
ok,结束,暂时碰到的问题就这么多,这也算是这几天学习SSH2框架以来的一个小小的总结,后续再慢慢学习。。加油!!!标签:&&&&&&&&&&&&&&&
&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!我的代码如下
package&com.
import&org.springframework.beans.factory.annotation.A
import&com.form.UserF
import&com.opensymphony.xwork2.ActionS
import&monS
public&class&LoginAction&extends&ActionSupport&{
private&UserForm&
private&String&
private&String&
@Autowired
private&CommonService&commonS
public&UserForm&getUser()&{
public&void&setUser(UserForm&user)&{
this.user&=&
public&String&getUsername()&{
public&void&setUsername(String&username)&{
this.username&=&
public&String&getPassword()&{
public&void&setPassword(String&password)&{
this.password&=&
public&String&execute()&{
user&=&new&UserForm();
user.setPassword(password);
user.setUsername(username);
return&commonService.CheckUser(user);
package&com.
import&monD
import&com.form.UserF
public&class&CommonServiceImp&implements&CommonService{
private&CommonDao&commonD
public&void&setCommonDao(CommonDao&commonDao)&{
monDao&=&commonD
public&CommonServiceImp(){};
public&String&CheckUser(UserForm&user)&{
//&TODO&Auto-generated&method&stub
if(commonDao.CheckUser(user)==true){
return&&success&;
return&&error&;
回复讨论(解决方案)
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&&
&package&name=&SSH&&extends=&struts-default&&&&
&&&&&&&&&action&name=&loginAction&&class=&com.action.LoginAction&&&&&
&&&&&&&&&&&&&result&name=&success&&/Success.jsp&/result&&&
&&&&&&&&&&&&&result&name=&error&&/error.jsp&/result&&&
&&&&&&&&&/action&&&
&&&&&/package&&
&/struts&&&&&
Spring配置:
&?xml&version=&1.0&&encoding=&UTF-8&?&
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&id=&dbname&&class=&mons.dbcp.BasicDataSource&&
&property&name=&driverClassName&
value=&oracle.jdbc.OracleDriver&&
&/property&
&property&name=&url&
value=&jdbc:oracle:thin:@localhost:1521:dbname&&
&/property&
&property&name=&username&&value=&hym&&&/property&
&property&name=&password&&value=&hym&&&/property&
&bean&id=&transactionManager&&&
&&&&&&&&class=&org.springframework.orm.hibernate3.HibernateTransactionManager&&&&
&&&&&&&&&property&name=&sessionFactory&&ref=&sessionFactory&&/&&&
&&&&&/bean&&
&bean&id=&sessionFactory&
class=&org.springframework.orm.hibernate3.LocalSessionFactoryBean&&
&property&name=&mappingResources&&
&value&com/po/TbUser.hbm.xml&/value&&/list&
&/property&
&property&name=&dataSource&&
&ref&bean=&dbname&&/&
&/property&
&property&name=&hibernateProperties&&
&prop&key=&hibernate.dialect&&
org.hibernate.dialect.Oracle9Dialect
&/property&
&bean&id=&loginAction&&class=&com.action.LoginAction&&scope=&prototype&&&/bean&
&bean&id=&commonDao&&class=&monDaoImp&&&&
&&&&&&&&&property&name=&sessionFactory&&&&
&&&&&&&&&&&&&ref&bean=&sessionFactory&&/&&&
&&&&&&&&&/property&&&
&&&&&/bean&&&
&&&&&bean&id=&commonService&&class=&monServiceImp&&
&&&&&&&&&property&name=&commonDao&&&&
&&&&&&&&&&&&&ref&bean=&commonDao&&/&&&
&&&&&&&&&/property&&&
&&&&&/bean&&&
&&&&&bean&class=&org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor&/&
web.xml配置
&?xml&version=&1.0&&encoding=&UTF-8&?&
&web-app&version=&3.0&&
xmlns=&/xml/ns/javaee&&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&&
xsi:schemaLocation=&/xml/ns/javaee&
/xml/ns/javaee/web-app_3_0.xsd&&
&&&display-name&SSH&/display-name&
&&&welcome-file-list&
&&&&&welcome-file&Login.jsp&/welcome-file&
&&&/welcome-file-list&
&&&filter&
&& &filter-name&SSH&/filter-name&
&& &filter-class&
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
&& &/filter-class&
&&&/filter&
&&&filter-mapping&
&& &filter-name&SSH&/filter-name&
&& &url-pattern&/*&/url-pattern&
&&&/filter-mapping&
&&&listener&&&
&&&&&&&&&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&&&
&&&/listener&&
&/web-app&
HTTP&Status&500&-
type&Exception&report
description&The&server&encountered&an&internal&error&()&that&prevented&it&from&fulfilling&this&request.
java.lang.NullPointerException
com.action.LoginAction.execute(LoginAction.java:37)
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)
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.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
note&The&full&stack&trace&of&the&root&cause&is&available&in&the&Apache&Tomcat/6.0.29&logs.
public&class&CommonServiceImp&implements&CommonService{
&&&&&@Autowired
&&&&private&CommonDao&commonD
加上试试啊&。。。这个你貌似没加啊&
public&class&CommonServiceImp&implements&CommonService{
&&&&&@Autowired
&&&&private&CommonDao&commonD
加上试试啊&。。。这个你貌似没加啊&
&加上这个&&&&&@Autowired&&是不是就要把set方法去掉?
public&class&CommonServiceImp&implements&CommonService{
&&&&&@Autowired
&&&&private&CommonDao&commonD
加上试试啊&。。。这个你貌似没加啊&
&加上这个&&&&&@Autowired&&是不是就要把set方法去掉?
去不去掉,无所谓的。。。理论上是不需要的。。。。
检查一下跟commonService有关的所有配置,很显然,你的commonService没有注入成功,所以导致NullPointerException
&bean&id=&loginAction&&class=&com.action.LoginAction&&scope=&prototype&&&/bean&改成
&bean&id=&loginAction&&class=&com.action.LoginAction&&autowire=&byName&&scope=&prototype&&&/bean&意思就是根据名字自动装配,再装配不上就只能手写装配&&property&name=&commonService&&&&&ref&bean=&commonService&&/&&&&/property&&
dao没有进行注入,就使用dao中的方法,可以通过注解来注入@Resource加在要注入的dao上。
你没注入,找不到Service方法
service注入失败了吧
在CommonDao上面加@Resource注入
好像也可以CommonDao&commondao后面接=new&CommonDao()之类的
吧。。。这方面忘得有点多
你可以就当方法的调用
@Service(加上这个试试)
public&class&CommonServiceImp&implements&CommonService
报空指针就是没有实例化,看看是否注入成功,有没有getset
struts.xml&&中action节点&class属性改成spring框架中的bean节点的id值&&而不是action路径

我要回帖

更多关于 安东内拉 的文章

 

随机推荐