spring struts问题

Spring与Struts集成问题
本文探讨了Spring与Struts集成时出现NullPointerException的问题,并详细记录了排查过程及解决方法,包括不同配置方式的尝试。

先看问题,首先是spring和struts集成问题
exception

javax.servlet.ServletException: java.lang.NullPointerException
 org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
 org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

java.lang.NullPointerException
 cn.dangkun.web.action.UserAction.execute(UserAction.java:23)
 org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
 org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
 org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
 org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
 org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
 org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
 org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
 org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
异常出现
开始debug,
于是 发现
利用
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(this.getServlet().getServletContext());
获取ApplicationContext时失败 返回值为NULL
于是查spring看源代码
[code=Java] 
public static WebApplicationContext getWebApplicationContext(ServletContext sc, String attrName) {
  Assert.notNull(sc, "ServletContext must not be null");
  Object attr = sc.getAttribute(attrName);
  if (attr == null) {
   return null;
  }
[/code]
sc.getAttribute(attrName);这句无法获取对象??
再次查看配置文件
web.xml
试试以下几种配置方式
1 [code=XML]
  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>e:/workspace/Huagezi2/WebContent/WEB-INF/classes/applicationContext.xml</param-value>
  </context-param>
  <listener>
   <lister-class>org.springframework.web.context.ContextLoaderListener</lister-class>
   <load-on-startup>1</load-on-startup>
  </listener>
[/code]
2  [code=XML]
  <!--加载spring框架 --> 
  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <listener>
   <lister-class>org.springframework.web.context.ContextLoaderListener</lister-class>
   <load-on-startup>1</load-on-startup>
  </listener>
[/code]
3 [code=XML]
  <!--加载spring框架 --> 
  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>
  <listener>
   <lister-class>org.springframework.web.context.ContextLoaderListener</lister-class>
   <load-on-startup>1</load-on-startup>
  </listener>
[/code]
同时在src目录下和WEB-INF下均有applicationContext.xml配置文件 搜索了网上不少 同时无法解答 百思不得其解
用的spring版本为2.5 struts为1.38

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值