项目用struts+ibatis框架,感觉类似于jpetstore。大家帮帮忙啊
问题如下:当我以一个用户登录进去后,点击菜单,比如说“修改密码”,这时候就报异常,页面因此也无法显示。奇怪的是有时候点击该菜单不会有异常,出现异常时我刷新一下,又可以正常点击不报异常。其他菜单也有类似情况,大部分时候可以正常点击,可是又常常出现类似情况。异常如下:
2010-01-06 21:08:52 ERROR : org.apache.struts.util.RequestUtils Error creating form bean of class cn.jsqh.jje.presentation.Tblcti_merchBean
java.lang.NullPointerException
at cn.ardu.framework.presentation.AbstractBean.getAuth(AbstractBean.java:53)
at cn.jsqh.jje.presentation.Tblcti_merchBean.<init>(Tblcti_merchBean.java:64)
at cn.jsqh.jje.presentation.Tblcti_merchBean.<init>(Tblcti_merchBean.java:51)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at java.lang.Class.newInstance0(Class.java:350)
at java.lang.Class.newInstance(Class.java:303)
at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:231)
at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:837)
at org.apache.struts.action.RequestProcessor.processActionForm(RequestProcessor.java:364)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:253)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at cn.ardu.framework.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at cn.ardu.framework.filter.AccessFilter.doFilter(AccessFilter.java:60)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
出错的代码:
protected Operator_info getAuth() {
return (Operator_info)ActionContext.getActionContext().getRequest().getSession().getAttribute("user");
} protected String getHost() {
return ActionContext.getActionContext().getRequest().getRemoteHost();
} protected String getParam(String name) {
return ActionContext.getActionContext().getRequest().getParameter(name);
} protected void setSession(String name, Object value) {
ActionContext.getActionContext().getRequest().getSession().setAttribute(name, value);
}出错时getAuth() 方法中getSession()得到的是个空值。--struts-config.xml部分代码,太多了不能全贴出来<form-bean name="operator_infoBean" type="cn.jsqh.jje.presentation.Operator_infoBean" />
<action path="/modifyPass"
type="org.apache.struts.beanaction.BeanAction"
name="operator_infoBean" scope="session"
input="/operator_info/modify.jsp" validate="false">
<forward name="success" path="/message.jsp" />
</action>
问题如下:当我以一个用户登录进去后,点击菜单,比如说“修改密码”,这时候就报异常,页面因此也无法显示。奇怪的是有时候点击该菜单不会有异常,出现异常时我刷新一下,又可以正常点击不报异常。其他菜单也有类似情况,大部分时候可以正常点击,可是又常常出现类似情况。异常如下:
2010-01-06 21:08:52 ERROR : org.apache.struts.util.RequestUtils Error creating form bean of class cn.jsqh.jje.presentation.Tblcti_merchBean
java.lang.NullPointerException
at cn.ardu.framework.presentation.AbstractBean.getAuth(AbstractBean.java:53)
at cn.jsqh.jje.presentation.Tblcti_merchBean.<init>(Tblcti_merchBean.java:64)
at cn.jsqh.jje.presentation.Tblcti_merchBean.<init>(Tblcti_merchBean.java:51)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at java.lang.Class.newInstance0(Class.java:350)
at java.lang.Class.newInstance(Class.java:303)
at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:231)
at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:837)
at org.apache.struts.action.RequestProcessor.processActionForm(RequestProcessor.java:364)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:253)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at cn.ardu.framework.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at cn.ardu.framework.filter.AccessFilter.doFilter(AccessFilter.java:60)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
出错的代码:
protected Operator_info getAuth() {
return (Operator_info)ActionContext.getActionContext().getRequest().getSession().getAttribute("user");
} protected String getHost() {
return ActionContext.getActionContext().getRequest().getRemoteHost();
} protected String getParam(String name) {
return ActionContext.getActionContext().getRequest().getParameter(name);
} protected void setSession(String name, Object value) {
ActionContext.getActionContext().getRequest().getSession().setAttribute(name, value);
}出错时getAuth() 方法中getSession()得到的是个空值。--struts-config.xml部分代码,太多了不能全贴出来<form-bean name="operator_infoBean" type="cn.jsqh.jje.presentation.Operator_infoBean" />
<action path="/modifyPass"
type="org.apache.struts.beanaction.BeanAction"
name="operator_infoBean" scope="session"
input="/operator_info/modify.jsp" validate="false">
<forward name="success" path="/message.jsp" />
</action>
解决方案 »
- JAVA调用SQL server2005带参数的存储过程,参数中有空格和:报异常
- jsp选择文件夹的路径 是文件夹 真的没有一个会的吗 老天呀
- 请教Spring + Hibernate进行开发时,session关闭问题
- JavaBean配置
- 谁知道这本书有中文版~~~急
- could not insert: [com.feifei.domain.Person]为什么?
- 系统和系统之间的时间转换问题?(急)
- 急急急急急急急急!!帮帮我
- #[Struts]标签html的样式styleClass和readonly 可以在程序运行中改变指定吗?
- 为什么我部署一个EJB时,总是提示没有部署文件的,应该如何配置!谢谢
- 关于struts2下载的那点奇怪事
- action 没有执行
空指针错误呗public class NullPointerException
extends RuntimeException
当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括: 调用 null 对象的实例方法。
访问或修改 null 对象的字段。
将 null 作为一个数组,获得其长度。
将 null 作为一个数组,访问或修改其时间片。
将 null 作为 Throwable 值抛出。
应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。
“出错时getAuth() 方法中getSession()得到的是个空值。”
只是我想知道getSession为什么有时候是null ,为什么刷新或者多点几次菜单就可以了 我猜的是session在点击有些页面时页面没获取到session的信息,可是经过一些刷新或者点击别的菜单再回头点击该菜单就没问题了。
请大家给与更多的帮助。
这里一长串,你怎么知道就一定是getSession()是个空?
我看倒很大可能是getAttribute("user")是个空,你还还要强制转换。
1个错误好像是程序里username写成name了,还有个是ibatis往数据库里插入空值不行(oracle).
你有没有销毁session的地方,session时间设置多长,默认是30分钟.
struts是版本1 只是用了一个Apache jpetstore应用中一个包的beanaction.jar
所以可以ActionContext.getActionContext().getRequest().getSession()我跟踪发现就是到getSession这里得到了null值,实际上应该是ActionContext.getActionContext().getRequest()得到request出问题了,我不知道是不是什么地方导致了request出问题了,也就是说request可能不是我需要的request了。很郁闷,关键找不出问题发生的规律,今晚上点了一通也没出问题,而且在websphere上部署似乎问题出现的比tomcat上部署更多。其实问题基本就集中在一点 request.getSession得到了null而session并没丢失,我点别的菜单或者多点几下该菜单就又正常了。再等一天,看看大家有没有啥思路,不行只好尝试把session的代码换了。