首先debug确认loginServer是空,是它造成的空指针!
然后确认以下:1,bean id=""配置名和action里声明的一致;
2,保证bean已经注入,比如new,或set;
3,看是不是缺少包,比如struts ,spring,plugin包!
然后确认以下:1,bean id=""配置名和action里声明的一致;
2,保证bean已经注入,比如new,或set;
3,看是不是缺少包,比如struts ,spring,plugin包!
解决方案 »
- struts2 怎么获取session中(保存的是一个list)某个对象的名字!
- 急!!!poi操作word,用过的请进!!!!
- AdventNet Java SNMP API 是否收费
- 怎样在JDK中添加javax.servlet.jar以便在程序中可以使用import javax.servlet.*?
- 提高J2EE测试速度
- 字符分割分问题
- 急求:osworkflow流程开发,Java代码判断执行Step及Action部分示例
- java如何检验xsd规范的xml文档,高分相送
- 在jsp中调用已经发布的web servics
- 一个List中排除另一个List
- Ajax实现文件上传...怎么设置multipart/form-data
- 使用criteria按复合主键某个字段条件查询的问题?
是什么哪
<property name="loginservice">
<ref bean="loginservice"/>
</property>
</bean>这个action为什么不直接引入logindaologinservice是干什么的?
1:loginServer确定为空:
loginserver的值:null2:已经保证bean中的每一个id在对应的类中都有get、set方法
<bean id="logindao" class="com.operator.hib.dao.impl.LoginImpl">
<bean id="loginservice" class="com.operator.struts.service.LoginService">
<bean name="/login" class="com.operator.struts.action.LoginAction">
保证每一个id在类中的名称都无误。eclipse已经没有红叉,自己也检查过。
至于M_song说的new?请教一下您说的new是指?3:包没有少,我的目录结构为:因为第一次错误以后我不知道是否少包了,所以在myeclipse增加框架时,我选择了copy所有包,另外诸如pool、dhcp这些包我都加了...at com.operator.struts.action.LoginAction.execute(LoginAction.java:55)
是执行到55行时:
int backint = loginservice.check_name_pwd(checkpwd);
由于loginservice为空,抛错。
LoginAction: private LoginService loginservice;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
....
int backint = loginservice.check_name_pwd(checkpwd);
....
}
public LoginService getLoginservice() {
return loginservice;
} public void setLoginservice(LoginService loginservice) {
this.loginservice = loginservice;
}LoginServer:
private LoginImpl logindao;
public int check_name_pwd(CheckPwd checkpwd){
....
List list = null;
list = logindao.findList(sql);
....
} public LoginImpl getLogindao() {
return logindao;
} public void setLogindao(LoginImpl logindao) {
this.logindao = logindao;
}
LoginImpl: public class LoginImpl extends HibernateDaoSupport implements ILoginDao {
public List findList(String sql) {
List list = null;
try{
System.out.println("到达");
list = this.getHibernateTemplate().find(sql);
}catch(Exception es){
es.printStackTrace();
System.out.println("错误");
}
return list;
}
struts-config.xml:<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml;/WEB-INF/classes/spring_action.xml" />
</plug-in>
错误以后我以为是web.xml没有配置spring,于是加上: <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
但遗憾的是还是错误....
2008-5-27 18:33:44 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.operator.struts.action.LoginAction.execute(LoginAction.java:56)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:595)
谢谢大家关注此贴啊,这个问题整了我1天了,欲哭无泪...回首读书方恨少啊...
你这个Action的56行出现了空指针异常,检查一下是否使用了没有初始化的变量什么的.
是的,我估计是LoginAction中56行
int backint = loginservice.check_name_pwd(checkpwd);
中由于loginservice中spring正确注入loginservice引起的,但为什么没有注入呢?我真是百思不得其解了
tomcat6.0
MyEclipse 6.1 Blue Edition
windowServer2003 sp2
2,关于spring和struts的结合,既然你在web.xml里声明了spring ,context,那就不要在struts-config.xml里声明!
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml,WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
S根据这句话我感觉你的容器有问题目你把SPRING容器得引入一下吧,同时把他生成的文件客户化一下,看看...
然后拿正常的工程和错误的逐步对比,原来,错误是我在struts-config.xml里,没注意把每个action的type属性改为:org.springframework.web.struts.DelegatingActionProxy还是讲type设为action类路径,这样一来spring形同虚设,创建action的工作还是由struts完成,并没有交给spring创建并注入相关属性,从而导致action的loginserver业务类为空而抛错总结:细心、谨慎永远是明智的...